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

int tape_medium_part2_4(mpage_info *mpi,char *prefix)

{
  uint64_t *puVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  uint8_t *puVar5;
  int iVar6;
  mpage_name_func *pmVar7;
  char *pcVar8;
  char *pcVar9;
  uint8_t *in_ECX;
  uint8_t *resp;
  char *extraout_ECX;
  char *extraout_ECX_00;
  char *extraout_ECX_01;
  uint uVar10;
  ushort *puVar11;
  int iVar12;
  int in_GS_OFFSET;
  uint8_t *puVar13;
  uint8_t **in_stack_ffffff34;
  uint8_t *pagestart;
  char reason [128];
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  iVar4 = get_mode_page(mpi,0x58780,in_ECX);
  if (iVar4 != 0) goto LAB_0001b7a5;
  iVar6 = mpi->resp_len;
  if (mode6byte == '\0') {
    puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]);
    uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7]);
    resp = (uint8_t *)(uVar10 + 8);
  }
  else {
    uVar10 = (uint)cbuffer[3];
    puVar5 = (uint8_t *)(cbuffer[0] + 1);
    resp = (uint8_t *)(uVar10 + 4);
  }
  if ((int)(resp + 1) < iVar6) {
    if (resp + 1 < puVar5) {
      iVar4 = get_mode_page(mpi,0x58780,resp);
      if (iVar4 == 0) {
        iVar6 = iVar6 - (int)resp;
        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);
        if (iVar4 != 0) goto LAB_0001b7a5;
        pcVar9 = extraout_ECX;
        if (*prefix != '\0') {
          __printf_chk(1,&DAT_0001f095,prefix);
          pcVar9 = extraout_ECX_00;
        }
        if (x_interface == '\0' && replace == '\0') {
          iVar12 = mpi->page;
          if (iVar12 == 0x3f) {
            pcVar9 = "List supported pages and subpages";
            if (mpi->subpage != 0xff) {
              pcVar9 = "List supported pages";
            }
          }
          else {
            pmVar7 = get_mpage_name_func(mpi);
            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)
               ) {
              if (mpi->subpage == 0) {
                pcVar8 = "page number=0x%x";
              }
              else {
                pcVar8 = "page number=0x%x, subpage number=0x%x";
              }
              pcVar9 = unkn_page_str;
              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);
            }
          }
          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);
          puts("----------------------------------------------------");
          pcVar9 = extraout_ECX_01;
        }
        intfield(pagestart + 2,0x1fcc0,pcVar9);
        cVar3 = x_interface;
        if (4 < iVar6) {
          iVar12 = 4;
          do {
            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {
              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);
              cVar3 = x_interface;
LAB_0001b8e4:
              iVar12 = iVar12 + 2;
              if (iVar6 <= iVar12) goto LAB_0001b93b;
            }
            if (replace != '\0') {
              puVar1 = replacement_values + next_parameter;
              if (is_hex[next_parameter] != '\0') {
                __snprintf_chk(reason,0x80,1,0x80,
                               "@ hexdatafield (pos %i) instead of a simple number: %llu",
                               next_parameter,(int)replacement_values[next_parameter],
                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));
                    /* WARNING: Subroutine does not return */
                usage(reason);
              }
              next_parameter = next_parameter + 1;
              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;
              goto LAB_0001b8e4;
            }
            iVar12 = iVar12 + 2;
            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);
            cVar3 = x_interface;
          } while (iVar12 < iVar6);
        }
LAB_0001b93b:
        if ((cVar3 != '\0') && (replace != '\0')) {
          iVar4 = put_mode_page(mpi,cbuffer);
          goto LAB_0001b7a5;
        }
      }
      putchar(10);
      goto LAB_0001b7a5;
    }
    pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";
    puVar13 = puVar5;
    puVar5 = resp;
  }
  else {
    pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";
    puVar13 = resp;
  }
  iVar4 = -1;
  __printf_chk(1,pcVar9,puVar13,puVar5,uVar10);
LAB_0001b7a5:
  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar4;
}



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

int FUN_0001b760(int *param_1,char *param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  ushort *puVar10;
  int iVar11;
  int in_GS_OFFSET;
  uint uVar12;
  int local_a4;
  undefined1 local_a0 [128];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1b769;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = FUN_000177a0();
  if (iVar2 != 0) goto LAB_0001b7a5;
  iVar4 = param_1[5];
  if (DAT_00050769 == '\0') {
    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;
    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);
    uVar8 = uVar9 + 8;
  }
  else {
    uVar9 = (uint)DAT_00058783;
    uVar3 = DAT_00058780 + 1;
    uVar8 = uVar9 + 4;
  }
  if ((int)(uVar8 + 1) < iVar4) {
    if (uVar8 + 1 < uVar3) {
      iVar2 = FUN_000177a0();
      if (iVar2 == 0) {
        iVar4 = iVar4 - uVar8;
        iVar2 = FUN_00014f40();
        if (iVar2 != 0) goto LAB_0001b7a5;
        if (*param_2 != '\0') {
          __printf_chk(1,&DAT_0001f095,param_2);
        }
        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {
          iVar11 = *param_1;
          if (iVar11 == 0x3f) {
            pcVar7 = "List supported pages and subpages";
            if (param_1[1] != 0xff) {
              pcVar7 = "List supported pages";
            }
          }
          else {
            iVar5 = FUN_000167e0(param_1);
            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {
              if (param_1[1] == 0) {
                pcVar6 = "page number=0x%x";
              }
              else {
                pcVar6 = "page number=0x%x, subpage number=0x%x";
              }
              pcVar7 = &DAT_000504e0;
              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);
            }
          }
          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);
          puts("----------------------------------------------------");
        }
        FUN_00013640();
        cVar1 = DAT_0005076b;
        if (4 < iVar4) {
          iVar11 = 4;
          do {
            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {
              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);
              cVar1 = DAT_0005076b;
LAB_0001b8e4:
              iVar11 = iVar11 + 2;
              if (iVar4 <= iVar11) goto LAB_0001b93b;
            }
            if (DAT_0005076d != '\0') {
              iVar5 = DAT_00050764 * 8;
              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {
                __snprintf_chk(local_a0,0x80,1,0x80,
                               "@ hexdatafield (pos %i) instead of a simple number: %llu",
                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),
                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));
                    /* WARNING: Subroutine does not return */
                FUN_00012bd0();
              }
              DAT_00050764 = DAT_00050764 + 1;
              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |
                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;
              goto LAB_0001b8e4;
            }
            iVar11 = iVar11 + 2;
            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);
            cVar1 = DAT_0005076b;
          } while (iVar11 < iVar4);
        }
LAB_0001b93b:
        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {
          iVar2 = FUN_000173d0();
          goto LAB_0001b7a5;
        }
      }
      putchar(10);
      goto LAB_0001b7a5;
    }
    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";
    uVar12 = uVar3;
    uVar3 = uVar8;
  }
  else {
    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";
    uVar12 = uVar8;
  }
  iVar2 = -1;
  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);
LAB_0001b7a5:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0001ee20();
  }
  return iVar2;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000129c0
ADD EBX,0xc7cf
SUB ESP,0xbc
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xac],EAX
XOR EAX,EAX
MOV EBP,dword ptr [ESP + 0xd0]
MOV ESI,dword ptr [ESP + 0xd4]
MOV EAX,EBP
LEA EDX,[EBX + 0x30848]
CALL 0x000177a0
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0001b7d0
MOV ECX,dword ptr [ESP + 0xac]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x0001baed
ADD ESP,0xbc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x14]
CMP byte ptr [EBX + 0x28831],0x0
MOV dword ptr [ESP + 0x8],EAX
MOVZX EAX,byte ptr [EBX + 0x30848]
JZ 0x0001b960
MOVZX EDX,byte ptr [EBX + 0x3084b]
ADD EAX,0x1
LEA ECX,[EDX + 0x4]
LEA EDI,[ECX + 0x1]
CMP dword ptr [ESP + 0x8],EDI
JLE 0x0001baae
CMP EDI,EAX
JGE 0x0001bacf
LEA EDX,[EBX + 0x30848]
MOV EAX,EBP
MOV dword ptr [ESP + 0xc],ECX
CALL 0x000177a0
MOV ECX,dword ptr [ESP + 0xc]
TEST EAX,EAX
MOV EDI,EAX
JNZ 0x0001b94c
MOV EAX,dword ptr [ESP + 0x8]
SUB EAX,ECX
LEA ECX,[ESP + 0x28]
MOV dword ptr [ESP + 0x8],EAX
SUB EAX,0x4
MOV EDX,EAX
SHR EDX,0x1f
ADD EDX,EAX
MOV EAX,EBP
SAR EDX,0x1
ADD EDX,0x1
CALL 0x00014f40
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x0001b7a5
CMP byte ptr [ESI],0x0
JNZ 0x0001b9e0
MOVZX EAX,byte ptr [EBX + 0x28833]
OR AL,byte ptr [EBX + 0x28835]
JZ 0x0001ba18
MOV EAX,dword ptr [ESP + 0x28]
LEA EDX,[EBX + 0xffff7d88]
ADD EAX,0x2
CALL 0x00013640
MOV ECX,dword ptr [ESP + 0x8]
MOVZX EAX,byte ptr [EBX + 0x28833]
CMP ECX,0x4
JLE 0x0001b93b
LEA EDX,[EBX + 0xffff7d88]
MOV ESI,0x4
MOV dword ptr [ESP + 0x18],EDI
MOV dword ptr [ESP + 0xc],EDX
LEA EDX,[EBX + 0xffff713a]
MOV dword ptr [ESP + 0x10],EDX
MOV dword ptr [ESP + 0x1c],EBP
JMP 0x0001b8ed
MOVZX EAX,word ptr [EDX]
ROL AX,0x8
MOVZX EAX,AX
PUSH EAX
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x18]
PUSH 0x1
CALL 0x000111c0
MOVZX EAX,byte ptr [EBX + 0x28833]
ADD ESP,0x10
ADD ESI,0x2
CMP dword ptr [ESP + 0x8],ESI
JLE 0x0001b933
MOV EDX,dword ptr [ESP + 0x28]
ADD EDX,ESI
TEST AL,AL
JZ 0x0001b8c0
CMP byte ptr [EBX + 0x28835],0x0
JNZ 0x0001b990
MOVZX EAX,word ptr [EDX]
SUB ESP,0x4
ADD ESI,0x2
ROL AX,0x8
MOVZX EAX,AX
PUSH EAX
LEA EAX,[EBX + 0xffff7143]
PUSH EAX
PUSH 0x1
CALL 0x000111c0
ADD ESP,0x10
MOVZX EAX,byte ptr [EBX + 0x28833]
CMP dword ptr [ESP + 0x8],ESI
JG 0x0001b8ed
MOV EDI,dword ptr [ESP + 0x18]
MOV EBP,dword ptr [ESP + 0x1c]
TEST AL,AL
JZ 0x0001b94c
CMP byte ptr [EBX + 0x28835],0x0
JNZ 0x0001ba00
SUB ESP,0xc
PUSH 0xa
CALL 0x00011190
ADD ESP,0x10
JMP 0x0001b7a5
MOVZX EDX,byte ptr [EBX + 0x30849]
SHL EAX,0x8
MOVZX EDI,byte ptr [EBX + 0x3084f]
LEA EAX,[EAX + EDX*0x1 + 0x2]
MOVZX EDX,byte ptr [EBX + 0x3084e]
SHL EDX,0x8
ADD EDX,EDI
LEA ECX,[EDX + 0x8]
JMP 0x0001b7f8
MOV ECX,dword ptr [EBX + 0x2882c]
MOVZX EDI,word ptr [EBX + ECX*0x8 + 0x28628]
MOV EBP,dword ptr [EBX + ECX*0x8 + 0x2862c]
ROL DI,0x8
CMP byte ptr [EBX + ECX*0x1 + 0x285e8],0x0
MOV word ptr [ESP + 0x16],DI
MOV EDI,dword ptr [EBX + ECX*0x8 + 0x28628]
JNZ 0x0001baf2
MOVZX EDI,word ptr [ESP + 0x16]
ADD ECX,0x1
MOV dword ptr [EBX + 0x2882c],ECX
MOV word ptr [EDX],DI
JMP 0x0001b8e4
SUB ESP,0x4
LEA EAX,[EBX + 0xffff715d]
PUSH ESI
PUSH EAX
PUSH 0x1
CALL 0x000111c0
ADD ESP,0x10
JMP 0x0001b863
LEA EDX,[EBX + 0x30848]
MOV EAX,EBP
CALL 0x000173d0
MOV EDI,EAX
JMP 0x0001b7a5
MOV EDX,dword ptr [EBP]
CMP EDX,0x3f
JZ 0x0001ba65
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH EBP
CALL 0x000167e0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x0001ba7c
MOV ESI,dword ptr [EAX + 0xc]
TEST ESI,ESI
JZ 0x0001ba7c
LEA EAX,[EBX + 0xffff731b]
PUSH EDX
PUSH ESI
PUSH EAX
PUSH 0x1
CALL 0x000111c0
LEA EAX,[EBX + 0xffff9b80]
MOV dword ptr [ESP],EAX
CALL 0x00011100
ADD ESP,0x10
JMP 0x0001b876
CMP dword ptr [EBP + 0x4],0xff
LEA ESI,[EBX + 0xffff9820]
JZ 0x0001ba3f
LEA ESI,[EBX + 0xffff72ea]
JMP 0x0001ba3f
MOV EAX,dword ptr [EBP + 0x4]
TEST EAX,EAX
JZ 0x0001badd
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xffff9844]
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
LEA ESI,[EBX + 0x285a8]
PUSH EAX
PUSH 0x40
PUSH 0x1
PUSH 0x40
PUSH ESI
CALL 0x00011050
ADD ESP,0x20
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x0001ba3f
SUB ESP,0xc
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffff94fc]
PUSH ECX
PUSH EAX
MOV EDI,0xffffffff
PUSH 0x1
CALL 0x000111c0
ADD ESP,0x20
JMP 0x0001b7a5
SUB ESP,0xc
PUSH EDX
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xffff9544]
JMP 0x0001baba
SUB ESP,0x8
LEA EAX,[EBX + 0xffff72ff]
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
JMP 0x0001ba92
CALL 0x0001ee20
LEA EAX,[EBX + 0xffff9478]
PUSH EBP
PUSH EDI
PUSH ECX
PUSH EAX
PUSH 0x80
PUSH 0x1
PUSH 0x80
LEA ESI,[ESP + 0x48]
PUSH ESI
CALL 0x00011050
ADD ESP,0x20
MOV EAX,ESI
CALL 0x00012bd0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_0001b760(int *param_1,char *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001ee20();\n  }\n  return iVar2;\n}\n\n" comment (function_definition "int FUN_0001b760(int *param_1,char *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001ee20();\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0001b760(int *param_1,char *param_2)" identifier (parameter_list "(int *param_1,char *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001ee20();\n  }\n  return iVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ushort *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "undefined1 local_a0 [128];" type_identifier (array_declarator "local_a0 [128]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1b769;" (assignment_expression "uStack_14 = 0x1b769" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = FUN_000177a0();" (assignment_expression "iVar2 = FUN_000177a0()" identifier = (call_expression "FUN_000177a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0001b7a5;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;)) (expression_statement "iVar4 = param_1[5];" (assignment_expression "iVar4 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (if_statement "if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" if (parenthesized_expression "(DAT_00050769 == '\0')" ( (binary_expression "DAT_00050769 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }" { (expression_statement "uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;" (assignment_expression "uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781" identifier = (binary_expression "(uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781" (binary_expression "(uint)DAT_00058780 * 0x100 + 2" (binary_expression "(uint)DAT_00058780 * 0x100" (cast_expression "(uint)DAT_00058780" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) + (cast_expression "(uint)DAT_00058781" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);" (assignment_expression "uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787)" identifier = (cast_expression "(uint)CONCAT11(DAT_00058786,DAT_00058787)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(DAT_00058786,DAT_00058787)" identifier (argument_list "(DAT_00058786,DAT_00058787)" ( identifier , identifier ))))) ;) (expression_statement "uVar8 = uVar9 + 8;" (assignment_expression "uVar8 = uVar9 + 8" identifier = (binary_expression "uVar9 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" else (compound_statement "{\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" { (expression_statement "uVar9 = (uint)DAT_00058783;" (assignment_expression "uVar9 = (uint)DAT_00058783" identifier = (cast_expression "(uint)DAT_00058783" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar3 = DAT_00058780 + 1;" (assignment_expression "uVar3 = DAT_00058780 + 1" identifier = (binary_expression "DAT_00058780 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar9 + 4;" (assignment_expression "uVar8 = uVar9 + 4" identifier = (binary_expression "uVar9 + 4" identifier + number_literal)) ;) }))) (if_statement "if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" if (parenthesized_expression "((int)(uVar8 + 1) < iVar4)" ( (binary_expression "(int)(uVar8 + 1) < iVar4" (cast_expression "(int)(uVar8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar8 + 1)" ( (binary_expression "uVar8 + 1" identifier + number_literal) ))) < identifier) )) (compound_statement "{\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }" { (if_statement "if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" if (parenthesized_expression "(uVar8 + 1 < uVar3)" ( (binary_expression "uVar8 + 1 < uVar3" (binary_expression "uVar8 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" { (expression_statement "iVar2 = FUN_000177a0();" (assignment_expression "iVar2 = FUN_000177a0()" identifier = (call_expression "FUN_000177a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }" { (expression_statement "iVar4 = iVar4 - uVar8;" (assignment_expression "iVar4 = iVar4 - uVar8" identifier = (binary_expression "iVar4 - uVar8" identifier - identifier)) ;) (expression_statement "iVar2 = FUN_00014f40();" (assignment_expression "iVar2 = FUN_00014f40()" identifier = (call_expression "FUN_00014f40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0001b7a5;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;)) (if_statement "if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }" if (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }" { (expression_statement "__printf_chk(1,&DAT_0001f095,param_2);" (call_expression "__printf_chk(1,&DAT_0001f095,param_2)" identifier (argument_list "(1,&DAT_0001f095,param_2)" ( number_literal , (pointer_expression "&DAT_0001f095" & identifier) , identifier ))) ;) })) (if_statement "if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }" if (parenthesized_expression "(DAT_0005076b == '\0' && DAT_0005076d == '\0')" ( (binary_expression "DAT_0005076b == '\0' && DAT_0005076d == '\0'" (binary_expression "DAT_0005076b == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) && (binary_expression "DAT_0005076d == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }" { (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" if (parenthesized_expression "(iVar11 == 0x3f)" ( (binary_expression "iVar11 == 0x3f" identifier == number_literal) )) (compound_statement "{\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }" { (expression_statement "pcVar7 = "List supported pages and subpages";" (assignment_expression "pcVar7 = "List supported pages and subpages"" identifier = (string_literal ""List supported pages and subpages"" " string_content ")) ;) (if_statement "if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }" if (parenthesized_expression "(param_1[1] != 0xff)" ( (binary_expression "param_1[1] != 0xff" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n              pcVar7 = "List supported pages";\n            }" { (expression_statement "pcVar7 = "List supported pages";" (assignment_expression "pcVar7 = "List supported pages"" identifier = (string_literal ""List supported pages"" " string_content ")) ;) })) }) (else_clause "else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" else (compound_statement "{\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" { (expression_statement "iVar5 = FUN_000167e0(param_1);" (assignment_expression "iVar5 = FUN_000167e0(param_1)" identifier = (call_expression "FUN_000167e0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }" if (parenthesized_expression "((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0))" ( (binary_expression "(iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "(pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)" ( (comma_expression "pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0" (assignment_expression "pcVar7 = *(char **)(iVar5 + 0xc)" identifier = (pointer_expression "*(char **)(iVar5 + 0xc)" * (cast_expression "(char **)(iVar5 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) , (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }" { (if_statement "if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                pcVar6 = "page number=0x%x";\n              }" { (expression_statement "pcVar6 = "page number=0x%x";" (assignment_expression "pcVar6 = "page number=0x%x"" identifier = (string_literal ""page number=0x%x"" " string_content ")) ;) }) (else_clause "else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" else (compound_statement "{\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" { (expression_statement "pcVar6 = "page number=0x%x, subpage number=0x%x";" (assignment_expression "pcVar6 = "page number=0x%x, subpage number=0x%x"" identifier = (string_literal ""page number=0x%x, subpage number=0x%x"" " string_content ")) ;) }))) (expression_statement "pcVar7 = &DAT_000504e0;" (assignment_expression "pcVar7 = &DAT_000504e0" identifier = (pointer_expression "&DAT_000504e0" & identifier)) ;) (expression_statement "__snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);" (call_expression "__snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11)" identifier (argument_list "(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11)" ( (pointer_expression "&DAT_000504e0" & identifier) , number_literal , number_literal , number_literal , identifier , identifier ))) ;) })) }))) (expression_statement "__printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);" (call_expression "__printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11)" identifier (argument_list "(1,"%s mode page (0x%x)\n",pcVar7,iVar11)" ( number_literal , (string_literal ""%s mode page (0x%x)\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "puts("----------------------------------------------------");" (call_expression "puts("----------------------------------------------------")" identifier (argument_list "("----------------------------------------------------")" ( (string_literal ""----------------------------------------------------"" " string_content ") ))) ;) })) (expression_statement "FUN_00013640();" (call_expression "FUN_00013640()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" identifier = identifier) ;) (if_statement "if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }" if (parenthesized_expression "(4 < iVar4)" ( (binary_expression "4 < iVar4" number_literal < identifier) )) (compound_statement "{\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }" { (expression_statement "iVar11 = 4;" (assignment_expression "iVar11 = 4" identifier = number_literal) ;) (do_statement "do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);" do (compound_statement "{\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          }" { (while_statement "while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }" while (parenthesized_expression "(puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0')" ( (comma_expression "puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0'" (assignment_expression "puVar10 = (ushort *)(local_a4 + iVar11)" identifier = (cast_expression "(ushort *)(local_a4 + iVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a4 + iVar11)" ( (binary_expression "local_a4 + iVar11" identifier + identifier) )))) , (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }" { (expression_statement "__printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);" (call_expression "__printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8)" identifier (argument_list "(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8)" ( number_literal , (string_literal ""%-35s%d\n"" " string_content escape_sequence ") , (string_literal ""Partition size"" " string_content ") , (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" * identifier) << number_literal) | (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" * identifier) >> number_literal)) ))) ;) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" identifier = identifier) ;) (labeled_statement "LAB_0001b8e4:\n              iVar11 = iVar11 + 2;" statement_identifier : (expression_statement "iVar11 = iVar11 + 2;" (assignment_expression "iVar11 = iVar11 + 2" identifier = (binary_expression "iVar11 + 2" identifier + number_literal)) ;)) (if_statement "if (iVar4 <= iVar11) goto LAB_0001b93b;" if (parenthesized_expression "(iVar4 <= iVar11)" ( (binary_expression "iVar4 <= iVar11" identifier <= identifier) )) (goto_statement "goto LAB_0001b93b;" goto statement_identifier ;)) })) (if_statement "if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }" if (parenthesized_expression "(DAT_0005076d != '\0')" ( (binary_expression "DAT_0005076d != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }" { (expression_statement "iVar5 = DAT_00050764 * 8;" (assignment_expression "iVar5 = DAT_00050764 * 8" identifier = (binary_expression "DAT_00050764 * 8" identifier * number_literal)) ;) (if_statement "if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }" if (parenthesized_expression "(*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0')" ( (binary_expression "*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0'" (pointer_expression "*(char *)((int)&DAT_00050520 + DAT_00050764)" * (cast_expression "(char *)((int)&DAT_00050520 + DAT_00050764)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&DAT_00050520 + DAT_00050764)" ( (binary_expression "(int)&DAT_00050520 + DAT_00050764" (cast_expression "(int)&DAT_00050520" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_00050520" & identifier)) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    /* WARNING: Subroutine does not return */\n                FUN_00012bd0();\n              }" { (expression_statement "__snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));" (call_expression "__snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8))" identifier (argument_list "(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8))" ( identifier , number_literal , number_literal , number_literal , (string_literal ""@ hexdatafield (pos %i) instead of a simple number: %llu"" " string_content ") , identifier , (pointer_expression "*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8)" * (cast_expression "(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050560 + DAT_00050764 * 8)" ( (binary_expression "&DAT_00050560 + DAT_00050764 * 8" (pointer_expression "&DAT_00050560" & identifier) + (binary_expression "DAT_00050764 * 8" identifier * number_literal)) )))) , (pointer_expression "*(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8)" * (cast_expression "(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050564 + DAT_00050764 * 8)" ( (binary_expression "&DAT_00050564 + DAT_00050764 * 8" (pointer_expression "&DAT_00050564" & identifier) + (binary_expression "DAT_00050764 * 8" identifier * number_literal)) )))) ))) ;) comment (expression_statement "FUN_00012bd0();" (call_expression "FUN_00012bd0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_00050764 = DAT_00050764 + 1;" (assignment_expression "DAT_00050764 = DAT_00050764 + 1" identifier = (binary_expression "DAT_00050764 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;" (assignment_expression "*puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8" (pointer_expression "*puVar10" * identifier) = (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8" (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) << 8" (pointer_expression "*(ushort *)(&DAT_00050560 + iVar5)" * (cast_expression "(ushort *)(&DAT_00050560 + iVar5)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050560 + iVar5)" ( (binary_expression "&DAT_00050560 + iVar5" (pointer_expression "&DAT_00050560" & identifier) + identifier) )))) << number_literal) | (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) >> 8" (pointer_expression "*(ushort *)(&DAT_00050560 + iVar5)" * (cast_expression "(ushort *)(&DAT_00050560 + iVar5)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050560 + iVar5)" ( (binary_expression "&DAT_00050560 + iVar5" (pointer_expression "&DAT_00050560" & identifier) + identifier) )))) >> number_literal))) ;) (goto_statement "goto LAB_0001b8e4;" goto statement_identifier ;) })) (expression_statement "iVar11 = iVar11 + 2;" (assignment_expression "iVar11 = iVar11 + 2" identifier = (binary_expression "iVar11 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);" (call_expression "__printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8)" identifier (argument_list "(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8)" ( number_literal , (pointer_expression "&DAT_0001f07b" & identifier) , (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" * identifier) << number_literal) | (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" * identifier) >> number_literal)) ))) ;) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" identifier = identifier) ;) }) while (parenthesized_expression "(iVar11 < iVar4)" ( (binary_expression "iVar11 < iVar4" identifier < identifier) )) ;) })) (labeled_statement "LAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" statement_identifier : (if_statement "if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" if (parenthesized_expression "((cVar1 != '\0') && (DAT_0005076d != '\0'))" ( (binary_expression "(cVar1 != '\0') && (DAT_0005076d != '\0')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(DAT_0005076d != '\0')" ( (binary_expression "DAT_0005076d != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" { (expression_statement "iVar2 = FUN_000173d0();" (assignment_expression "iVar2 = FUN_000173d0()" identifier = (call_expression "FUN_000173d0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;) }))) })) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;) })) (expression_statement "pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";" (assignment_expression "pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" identifier = (string_literal ""modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" identifier = identifier) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) }) (else_clause "else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" else (compound_statement "{\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" { (expression_statement "pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";" (assignment_expression "pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" identifier = (string_literal ""modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" identifier = identifier) ;) }))) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" identifier = number_literal) ;) (expression_statement "__printf_chk(1,pcVar7,uVar12,uVar3,uVar9);" (call_expression "__printf_chk(1,pcVar7,uVar12,uVar3,uVar9)" identifier (argument_list "(1,pcVar7,uVar12,uVar3,uVar9)" ( number_literal , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001ee20();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001ee20();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0001ee20();\n  }" { comment (expression_statement "FUN_0001ee20();" (call_expression "FUN_0001ee20()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nint tape_medium_part2_4(mpage_info *mpi,char *prefix)\n\n{\n  uint64_t *puVar1;\n  int iVar2;\n  char cVar3;\n  int iVar4;\n  uint8_t *puVar5;\n  int iVar6;\n  mpage_name_func *pmVar7;\n  char *pcVar8;\n  char *pcVar9;\n  uint8_t *in_ECX;\n  uint8_t *resp;\n  char *extraout_ECX;\n  char *extraout_ECX_00;\n  char *extraout_ECX_01;\n  uint uVar10;\n  ushort *puVar11;\n  int iVar12;\n  int in_GS_OFFSET;\n  uint8_t *puVar13;\n  uint8_t **in_stack_ffffff34;\n  uint8_t *pagestart;\n  char reason [128];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = get_mode_page(mpi,0x58780,in_ECX);\n  if (iVar4 != 0) goto LAB_0001b7a5;\n  iVar6 = mpi->resp_len;\n  if (mode6byte == '\0') {\n    puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]);\n    uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7]);\n    resp = (uint8_t *)(uVar10 + 8);\n  }\n  else {\n    uVar10 = (uint)cbuffer[3];\n    puVar5 = (uint8_t *)(cbuffer[0] + 1);\n    resp = (uint8_t *)(uVar10 + 4);\n  }\n  if ((int)(resp + 1) < iVar6) {\n    if (resp + 1 < puVar5) {\n      iVar4 = get_mode_page(mpi,0x58780,resp);\n      if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    puVar13 = puVar5;\n    puVar5 = resp;\n  }\n  else {\n    pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    puVar13 = resp;\n  }\n  iVar4 = -1;\n  __printf_chk(1,pcVar9,puVar13,puVar5,uVar10);\nLAB_0001b7a5:\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}\n\n" comment comment (function_definition "int tape_medium_part2_4(mpage_info *mpi,char *prefix)\n\n{\n  uint64_t *puVar1;\n  int iVar2;\n  char cVar3;\n  int iVar4;\n  uint8_t *puVar5;\n  int iVar6;\n  mpage_name_func *pmVar7;\n  char *pcVar8;\n  char *pcVar9;\n  uint8_t *in_ECX;\n  uint8_t *resp;\n  char *extraout_ECX;\n  char *extraout_ECX_00;\n  char *extraout_ECX_01;\n  uint uVar10;\n  ushort *puVar11;\n  int iVar12;\n  int in_GS_OFFSET;\n  uint8_t *puVar13;\n  uint8_t **in_stack_ffffff34;\n  uint8_t *pagestart;\n  char reason [128];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = get_mode_page(mpi,0x58780,in_ECX);\n  if (iVar4 != 0) goto LAB_0001b7a5;\n  iVar6 = mpi->resp_len;\n  if (mode6byte == '\0') {\n    puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]);\n    uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7]);\n    resp = (uint8_t *)(uVar10 + 8);\n  }\n  else {\n    uVar10 = (uint)cbuffer[3];\n    puVar5 = (uint8_t *)(cbuffer[0] + 1);\n    resp = (uint8_t *)(uVar10 + 4);\n  }\n  if ((int)(resp + 1) < iVar6) {\n    if (resp + 1 < puVar5) {\n      iVar4 = get_mode_page(mpi,0x58780,resp);\n      if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    puVar13 = puVar5;\n    puVar5 = resp;\n  }\n  else {\n    pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    puVar13 = resp;\n  }\n  iVar4 = -1;\n  __printf_chk(1,pcVar9,puVar13,puVar5,uVar10);\nLAB_0001b7a5:\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}" primitive_type (function_declarator "tape_medium_part2_4(mpage_info *mpi,char *prefix)" identifier (parameter_list "(mpage_info *mpi,char *prefix)" ( (parameter_declaration "mpage_info *mpi" type_identifier (pointer_declarator "*mpi" * identifier)) , (parameter_declaration "char *prefix" primitive_type (pointer_declarator "*prefix" * identifier)) ))) (compound_statement "{\n  uint64_t *puVar1;\n  int iVar2;\n  char cVar3;\n  int iVar4;\n  uint8_t *puVar5;\n  int iVar6;\n  mpage_name_func *pmVar7;\n  char *pcVar8;\n  char *pcVar9;\n  uint8_t *in_ECX;\n  uint8_t *resp;\n  char *extraout_ECX;\n  char *extraout_ECX_00;\n  char *extraout_ECX_01;\n  uint uVar10;\n  ushort *puVar11;\n  int iVar12;\n  int in_GS_OFFSET;\n  uint8_t *puVar13;\n  uint8_t **in_stack_ffffff34;\n  uint8_t *pagestart;\n  char reason [128];\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = get_mode_page(mpi,0x58780,in_ECX);\n  if (iVar4 != 0) goto LAB_0001b7a5;\n  iVar6 = mpi->resp_len;\n  if (mode6byte == '\0') {\n    puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]);\n    uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7]);\n    resp = (uint8_t *)(uVar10 + 8);\n  }\n  else {\n    uVar10 = (uint)cbuffer[3];\n    puVar5 = (uint8_t *)(cbuffer[0] + 1);\n    resp = (uint8_t *)(uVar10 + 4);\n  }\n  if ((int)(resp + 1) < iVar6) {\n    if (resp + 1 < puVar5) {\n      iVar4 = get_mode_page(mpi,0x58780,resp);\n      if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    puVar13 = puVar5;\n    puVar5 = resp;\n  }\n  else {\n    pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    puVar13 = resp;\n  }\n  iVar4 = -1;\n  __printf_chk(1,pcVar9,puVar13,puVar5,uVar10);\nLAB_0001b7a5:\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}" { (declaration "uint64_t *puVar1;" primitive_type (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint8_t *puVar5;" primitive_type (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "mpage_name_func *pmVar7;" type_identifier (pointer_declarator "*pmVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "uint8_t *in_ECX;" primitive_type (pointer_declarator "*in_ECX" * identifier) ;) (declaration "uint8_t *resp;" primitive_type (pointer_declarator "*resp" * identifier) ;) (declaration "char *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "char *extraout_ECX_00;" primitive_type (pointer_declarator "*extraout_ECX_00" * identifier) ;) (declaration "char *extraout_ECX_01;" primitive_type (pointer_declarator "*extraout_ECX_01" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint8_t *puVar13;" primitive_type (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint8_t **in_stack_ffffff34;" primitive_type (pointer_declarator "**in_stack_ffffff34" * (pointer_declarator "*in_stack_ffffff34" * identifier)) ;) (declaration "uint8_t *pagestart;" primitive_type (pointer_declarator "*pagestart" * identifier) ;) (declaration "char reason [128];" primitive_type (array_declarator "reason [128]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(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) ))))) ;) (expression_statement "iVar4 = get_mode_page(mpi,0x58780,in_ECX);" (assignment_expression "iVar4 = get_mode_page(mpi,0x58780,in_ECX)" identifier = (call_expression "get_mode_page(mpi,0x58780,in_ECX)" identifier (argument_list "(mpi,0x58780,in_ECX)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar4 != 0) goto LAB_0001b7a5;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;)) (expression_statement "iVar6 = mpi->resp_len;" (assignment_expression "iVar6 = mpi->resp_len" identifier = (field_expression "mpi->resp_len" identifier -> field_identifier)) ;) (if_statement "if (mode6byte == '\0') {\n    puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]);\n    uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7]);\n    resp = (uint8_t *)(uVar10 + 8);\n  }\n  else {\n    uVar10 = (uint)cbuffer[3];\n    puVar5 = (uint8_t *)(cbuffer[0] + 1);\n    resp = (uint8_t *)(uVar10 + 4);\n  }" if (parenthesized_expression "(mode6byte == '\0')" ( (binary_expression "mode6byte == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]);\n    uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7]);\n    resp = (uint8_t *)(uVar10 + 8);\n  }" { (expression_statement "puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]);" (assignment_expression "puVar5 = (uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1])" identifier = (cast_expression "(uint8_t *)((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1])" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1])" ( (binary_expression "(uint)cbuffer[0] * 0x100 + 2 + (uint)cbuffer[1]" (binary_expression "(uint)cbuffer[0] * 0x100 + 2" (binary_expression "(uint)cbuffer[0] * 0x100" (cast_expression "(uint)cbuffer[0]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "cbuffer[0]" identifier [ number_literal ])) * number_literal) + number_literal) + (cast_expression "(uint)cbuffer[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "cbuffer[1]" identifier [ number_literal ]))) )))) ;) (expression_statement "uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7]);" (assignment_expression "uVar10 = (uint)CONCAT11(cbuffer[6],cbuffer[7])" identifier = (cast_expression "(uint)CONCAT11(cbuffer[6],cbuffer[7])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(cbuffer[6],cbuffer[7])" identifier (argument_list "(cbuffer[6],cbuffer[7])" ( (subscript_expression "cbuffer[6]" identifier [ number_literal ]) , (subscript_expression "cbuffer[7]" identifier [ number_literal ]) ))))) ;) (expression_statement "resp = (uint8_t *)(uVar10 + 8);" (assignment_expression "resp = (uint8_t *)(uVar10 + 8)" identifier = (cast_expression "(uint8_t *)(uVar10 + 8)" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + 8)" ( (binary_expression "uVar10 + 8" identifier + number_literal) )))) ;) }) (else_clause "else {\n    uVar10 = (uint)cbuffer[3];\n    puVar5 = (uint8_t *)(cbuffer[0] + 1);\n    resp = (uint8_t *)(uVar10 + 4);\n  }" else (compound_statement "{\n    uVar10 = (uint)cbuffer[3];\n    puVar5 = (uint8_t *)(cbuffer[0] + 1);\n    resp = (uint8_t *)(uVar10 + 4);\n  }" { (expression_statement "uVar10 = (uint)cbuffer[3];" (assignment_expression "uVar10 = (uint)cbuffer[3]" identifier = (cast_expression "(uint)cbuffer[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "cbuffer[3]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = (uint8_t *)(cbuffer[0] + 1);" (assignment_expression "puVar5 = (uint8_t *)(cbuffer[0] + 1)" identifier = (cast_expression "(uint8_t *)(cbuffer[0] + 1)" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(cbuffer[0] + 1)" ( (binary_expression "cbuffer[0] + 1" (subscript_expression "cbuffer[0]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "resp = (uint8_t *)(uVar10 + 4);" (assignment_expression "resp = (uint8_t *)(uVar10 + 4)" identifier = (cast_expression "(uint8_t *)(uVar10 + 4)" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + 4)" ( (binary_expression "uVar10 + 4" identifier + number_literal) )))) ;) }))) (if_statement "if ((int)(resp + 1) < iVar6) {\n    if (resp + 1 < puVar5) {\n      iVar4 = get_mode_page(mpi,0x58780,resp);\n      if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    puVar13 = puVar5;\n    puVar5 = resp;\n  }\n  else {\n    pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    puVar13 = resp;\n  }" if (parenthesized_expression "((int)(resp + 1) < iVar6)" ( (binary_expression "(int)(resp + 1) < iVar6" (cast_expression "(int)(resp + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(resp + 1)" ( (binary_expression "resp + 1" identifier + number_literal) ))) < identifier) )) (compound_statement "{\n    if (resp + 1 < puVar5) {\n      iVar4 = get_mode_page(mpi,0x58780,resp);\n      if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    puVar13 = puVar5;\n    puVar5 = resp;\n  }" { (if_statement "if (resp + 1 < puVar5) {\n      iVar4 = get_mode_page(mpi,0x58780,resp);\n      if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" if (parenthesized_expression "(resp + 1 < puVar5)" ( (binary_expression "resp + 1 < puVar5" (binary_expression "resp + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n      iVar4 = get_mode_page(mpi,0x58780,resp);\n      if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" { (expression_statement "iVar4 = get_mode_page(mpi,0x58780,resp);" (assignment_expression "iVar4 = get_mode_page(mpi,0x58780,resp)" identifier = (call_expression "get_mode_page(mpi,0x58780,resp)" identifier (argument_list "(mpi,0x58780,resp)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar6 = iVar6 - (int)resp;\n        iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);\n        if (iVar4 != 0) goto LAB_0001b7a5;\n        pcVar9 = extraout_ECX;\n        if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }\n        if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }\n        intfield(pagestart + 2,0x1fcc0,pcVar9);\n        cVar3 = x_interface;\n        if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }\nLAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }\n      }" { (expression_statement "iVar6 = iVar6 - (int)resp;" (assignment_expression "iVar6 = iVar6 - (int)resp" identifier = (binary_expression "iVar6 - (int)resp" identifier - (cast_expression "(int)resp" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34);" (assignment_expression "iVar4 = setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34)" identifier = (call_expression "setup_mode_page(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34)" identifier (argument_list "(mpi,(iVar6 + -4) / 2 + 1,(uint8_t *)&pagestart,in_stack_ffffff34)" ( identifier , (binary_expression "(iVar6 + -4) / 2 + 1" (binary_expression "(iVar6 + -4) / 2" (parenthesized_expression "(iVar6 + -4)" ( (binary_expression "iVar6 + -4" identifier + number_literal) )) / number_literal) + number_literal) , (cast_expression "(uint8_t *)&pagestart" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pagestart" & identifier)) , identifier )))) ;) (if_statement "if (iVar4 != 0) goto LAB_0001b7a5;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;)) (expression_statement "pcVar9 = extraout_ECX;" (assignment_expression "pcVar9 = extraout_ECX" identifier = identifier) ;) (if_statement "if (*prefix != '\0') {\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }" if (parenthesized_expression "(*prefix != '\0')" ( (binary_expression "*prefix != '\0'" (pointer_expression "*prefix" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          __printf_chk(1,&DAT_0001f095,prefix);\n          pcVar9 = extraout_ECX_00;\n        }" { (expression_statement "__printf_chk(1,&DAT_0001f095,prefix);" (call_expression "__printf_chk(1,&DAT_0001f095,prefix)" identifier (argument_list "(1,&DAT_0001f095,prefix)" ( number_literal , (pointer_expression "&DAT_0001f095" & identifier) , identifier ))) ;) (expression_statement "pcVar9 = extraout_ECX_00;" (assignment_expression "pcVar9 = extraout_ECX_00" identifier = identifier) ;) })) (if_statement "if (x_interface == '\0' && replace == '\0') {\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }" if (parenthesized_expression "(x_interface == '\0' && replace == '\0')" ( (binary_expression "x_interface == '\0' && replace == '\0'" (binary_expression "x_interface == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) && (binary_expression "replace == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n          iVar12 = mpi->page;\n          if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);\n          puts("----------------------------------------------------");\n          pcVar9 = extraout_ECX_01;\n        }" { (expression_statement "iVar12 = mpi->page;" (assignment_expression "iVar12 = mpi->page" identifier = (field_expression "mpi->page" identifier -> field_identifier)) ;) (if_statement "if (iVar12 == 0x3f) {\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }\n          else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }" if (parenthesized_expression "(iVar12 == 0x3f)" ( (binary_expression "iVar12 == 0x3f" identifier == number_literal) )) (compound_statement "{\n            pcVar9 = "List supported pages and subpages";\n            if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }\n          }" { (expression_statement "pcVar9 = "List supported pages and subpages";" (assignment_expression "pcVar9 = "List supported pages and subpages"" identifier = (string_literal ""List supported pages and subpages"" " string_content ")) ;) (if_statement "if (mpi->subpage != 0xff) {\n              pcVar9 = "List supported pages";\n            }" if (parenthesized_expression "(mpi->subpage != 0xff)" ( (binary_expression "mpi->subpage != 0xff" (field_expression "mpi->subpage" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n              pcVar9 = "List supported pages";\n            }" { (expression_statement "pcVar9 = "List supported pages";" (assignment_expression "pcVar9 = "List supported pages"" identifier = (string_literal ""List supported pages"" " string_content ")) ;) })) }) (else_clause "else {\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }" else (compound_statement "{\n            pmVar7 = get_mpage_name_func(mpi);\n            if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }\n          }" { (expression_statement "pmVar7 = get_mpage_name_func(mpi);" (assignment_expression "pmVar7 = get_mpage_name_func(mpi)" identifier = (call_expression "get_mpage_name_func(mpi)" identifier (argument_list "(mpi)" ( identifier )))) ;) (if_statement "if ((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               ) {\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }" if (parenthesized_expression "((pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)\n               )" ( (binary_expression "(pmVar7 == (mpage_name_func *)0x0) || (pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)" (parenthesized_expression "(pmVar7 == (mpage_name_func *)0x0)" ( (binary_expression "pmVar7 == (mpage_name_func *)0x0" identifier == (cast_expression "(mpage_name_func *)0x0" ( (type_descriptor "mpage_name_func *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar9 = pmVar7->name, pcVar9 == (char *)0x0)" ( (comma_expression "pcVar9 = pmVar7->name, pcVar9 == (char *)0x0" (assignment_expression "pcVar9 = pmVar7->name" identifier = (field_expression "pmVar7->name" identifier -> field_identifier)) , (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar9 = unkn_page_str;\n              __snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);\n            }" { (if_statement "if (mpi->subpage == 0) {\n                pcVar8 = "page number=0x%x";\n              }\n              else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }" if (parenthesized_expression "(mpi->subpage == 0)" ( (binary_expression "mpi->subpage == 0" (field_expression "mpi->subpage" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                pcVar8 = "page number=0x%x";\n              }" { (expression_statement "pcVar8 = "page number=0x%x";" (assignment_expression "pcVar8 = "page number=0x%x"" identifier = (string_literal ""page number=0x%x"" " string_content ")) ;) }) (else_clause "else {\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }" else (compound_statement "{\n                pcVar8 = "page number=0x%x, subpage number=0x%x";\n              }" { (expression_statement "pcVar8 = "page number=0x%x, subpage number=0x%x";" (assignment_expression "pcVar8 = "page number=0x%x, subpage number=0x%x"" identifier = (string_literal ""page number=0x%x, subpage number=0x%x"" " string_content ")) ;) }))) (expression_statement "pcVar9 = unkn_page_str;" (assignment_expression "pcVar9 = unkn_page_str" identifier = identifier) ;) (expression_statement "__snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12);" (call_expression "__snprintf_chk(unkn_page_str,0x40,1,0x40,pcVar8,iVar12)" identifier (argument_list "(unkn_page_str,0x40,1,0x40,pcVar8,iVar12)" ( identifier , number_literal , number_literal , number_literal , identifier , identifier ))) ;) })) }))) (expression_statement "__printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12);" (call_expression "__printf_chk(1,"%s mode page (0x%x)\n",pcVar9,iVar12)" identifier (argument_list "(1,"%s mode page (0x%x)\n",pcVar9,iVar12)" ( number_literal , (string_literal ""%s mode page (0x%x)\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "puts("----------------------------------------------------");" (call_expression "puts("----------------------------------------------------")" identifier (argument_list "("----------------------------------------------------")" ( (string_literal ""----------------------------------------------------"" " string_content ") ))) ;) (expression_statement "pcVar9 = extraout_ECX_01;" (assignment_expression "pcVar9 = extraout_ECX_01" identifier = identifier) ;) })) (expression_statement "intfield(pagestart + 2,0x1fcc0,pcVar9);" (call_expression "intfield(pagestart + 2,0x1fcc0,pcVar9)" identifier (argument_list "(pagestart + 2,0x1fcc0,pcVar9)" ( (binary_expression "pagestart + 2" identifier + number_literal) , number_literal , identifier ))) ;) (expression_statement "cVar3 = x_interface;" (assignment_expression "cVar3 = x_interface" identifier = identifier) ;) (if_statement "if (4 < iVar6) {\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }" if (parenthesized_expression "(4 < iVar6)" ( (binary_expression "4 < iVar6" number_literal < identifier) )) (compound_statement "{\n          iVar12 = 4;\n          do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);\n        }" { (expression_statement "iVar12 = 4;" (assignment_expression "iVar12 = 4" identifier = number_literal) ;) (do_statement "do {\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          } while (iVar12 < iVar6);" do (compound_statement "{\n            while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }\n            if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar12 = iVar12 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);\n            cVar3 = x_interface;\n          }" { (while_statement "while (puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }" while (parenthesized_expression "(puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0')" ( (comma_expression "puVar11 = (ushort *)(pagestart + iVar12), cVar3 == '\0'" (assignment_expression "puVar11 = (ushort *)(pagestart + iVar12)" identifier = (cast_expression "(ushort *)(pagestart + iVar12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pagestart + iVar12)" ( (binary_expression "pagestart + iVar12" identifier + identifier) )))) , (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);\n              cVar3 = x_interface;\nLAB_0001b8e4:\n              iVar12 = iVar12 + 2;\n              if (iVar6 <= iVar12) goto LAB_0001b93b;\n            }" { (expression_statement "__printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);" (call_expression "__printf_chk(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8)" identifier (argument_list "(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8)" ( number_literal , (string_literal ""%-35s%d\n"" " string_content escape_sequence ") , (string_literal ""Partition size"" " string_content ") , (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)) ))) ;) (expression_statement "cVar3 = x_interface;" (assignment_expression "cVar3 = x_interface" identifier = identifier) ;) (labeled_statement "LAB_0001b8e4:\n              iVar12 = iVar12 + 2;" statement_identifier : (expression_statement "iVar12 = iVar12 + 2;" (assignment_expression "iVar12 = iVar12 + 2" identifier = (binary_expression "iVar12 + 2" identifier + number_literal)) ;)) (if_statement "if (iVar6 <= iVar12) goto LAB_0001b93b;" if (parenthesized_expression "(iVar6 <= iVar12)" ( (binary_expression "iVar6 <= iVar12" identifier <= identifier) )) (goto_statement "goto LAB_0001b93b;" goto statement_identifier ;)) })) (if_statement "if (replace != '\0') {\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }" if (parenthesized_expression "(replace != '\0')" ( (binary_expression "replace != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar1 = replacement_values + next_parameter;\n              if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }\n              next_parameter = next_parameter + 1;\n              *puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;\n              goto LAB_0001b8e4;\n            }" { (expression_statement "puVar1 = replacement_values + next_parameter;" (assignment_expression "puVar1 = replacement_values + next_parameter" identifier = (binary_expression "replacement_values + next_parameter" identifier + identifier)) ;) (if_statement "if (is_hex[next_parameter] != '\0') {\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }" if (parenthesized_expression "(is_hex[next_parameter] != '\0')" ( (binary_expression "is_hex[next_parameter] != '\0'" (subscript_expression "is_hex[next_parameter]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                __snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));\n                    /* WARNING: Subroutine does not return */\n                usage(reason);\n              }" { (expression_statement "__snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4));" (call_expression "__snprintf_chk(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4))" identifier (argument_list "(reason,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               next_parameter,(int)replacement_values[next_parameter],\n                               *(undefined4 *)((int)replacement_values + next_parameter * 8 + 4))" ( identifier , number_literal , number_literal , number_literal , (string_literal ""@ hexdatafield (pos %i) instead of a simple number: %llu"" " string_content ") , identifier , (cast_expression "(int)replacement_values[next_parameter]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "replacement_values[next_parameter]" identifier [ identifier ])) , (pointer_expression "*(undefined4 *)((int)replacement_values + next_parameter * 8 + 4)" * (cast_expression "(undefined4 *)((int)replacement_values + next_parameter * 8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)replacement_values + next_parameter * 8 + 4)" ( (binary_expression "(int)replacement_values + next_parameter * 8 + 4" (binary_expression "(int)replacement_values + next_parameter * 8" (cast_expression "(int)replacement_values" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "next_parameter * 8" identifier * number_literal)) + number_literal) )))) ))) ;) comment (expression_statement "usage(reason);" (call_expression "usage(reason)" identifier (argument_list "(reason)" ( identifier ))) ;) })) (expression_statement "next_parameter = next_parameter + 1;" (assignment_expression "next_parameter = next_parameter + 1" identifier = (binary_expression "next_parameter + 1" identifier + number_literal)) ;) (expression_statement "*puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8;" (assignment_expression "*puVar11 = (ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8" (pointer_expression "*puVar11" * identifier) = (binary_expression "(ushort)*puVar1 << 8 | (ushort)*puVar1 >> 8" (binary_expression "(ushort)*puVar1 << 8" (binary_expression "(ushort)*puVar1" (parenthesized_expression "(ushort)" ( identifier )) * identifier) << number_literal) | (binary_expression "(ushort)*puVar1 >> 8" (binary_expression "(ushort)*puVar1" (parenthesized_expression "(ushort)" ( identifier )) * identifier) >> number_literal))) ;) (goto_statement "goto LAB_0001b8e4;" goto statement_identifier ;) })) (expression_statement "iVar12 = iVar12 + 2;" (assignment_expression "iVar12 = iVar12 + 2" identifier = (binary_expression "iVar12 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);" (call_expression "__printf_chk(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8)" identifier (argument_list "(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8)" ( number_literal , (pointer_expression "&DAT_0001f07b" & identifier) , (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)) ))) ;) (expression_statement "cVar3 = x_interface;" (assignment_expression "cVar3 = x_interface" identifier = identifier) ;) }) while (parenthesized_expression "(iVar12 < iVar6)" ( (binary_expression "iVar12 < iVar6" identifier < identifier) )) ;) })) (labeled_statement "LAB_0001b93b:\n        if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }" statement_identifier : (if_statement "if ((cVar3 != '\0') && (replace != '\0')) {\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }" if (parenthesized_expression "((cVar3 != '\0') && (replace != '\0'))" ( (binary_expression "(cVar3 != '\0') && (replace != '\0')" (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(replace != '\0')" ( (binary_expression "replace != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          iVar4 = put_mode_page(mpi,cbuffer);\n          goto LAB_0001b7a5;\n        }" { (expression_statement "iVar4 = put_mode_page(mpi,cbuffer);" (assignment_expression "iVar4 = put_mode_page(mpi,cbuffer)" identifier = (call_expression "put_mode_page(mpi,cbuffer)" identifier (argument_list "(mpi,cbuffer)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;) }))) })) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;) })) (expression_statement "pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";" (assignment_expression "pcVar9 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" identifier = (string_literal ""modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" " string_content escape_sequence ")) ;) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" identifier = identifier) ;) (expression_statement "puVar5 = resp;" (assignment_expression "puVar5 = resp" identifier = identifier) ;) }) (else_clause "else {\n    pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    puVar13 = resp;\n  }" else (compound_statement "{\n    pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    puVar13 = resp;\n  }" { (expression_statement "pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";" (assignment_expression "pcVar9 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" identifier = (string_literal ""modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" " string_content escape_sequence ")) ;) (expression_statement "puVar13 = resp;" (assignment_expression "puVar13 = resp" identifier = identifier) ;) }))) (expression_statement "iVar4 = -1;" (assignment_expression "iVar4 = -1" identifier = number_literal) ;) (expression_statement "__printf_chk(1,pcVar9,puVar13,puVar5,uVar10);" (call_expression "__printf_chk(1,pcVar9,puVar13,puVar5,uVar10)" identifier (argument_list "(1,pcVar9,puVar13,puVar5,uVar10)" ( number_literal , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0001b7a5:\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar2 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 != *(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 iVar4;" return identifier ;) })))
(translation_unit "int FUN_0001b760(int *param_1,char *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }\n  return iVar2;\n}\n\n" (function_definition "int FUN_0001b760(int *param_1,char *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0001b760(int *param_1,char *param_2)" identifier (parameter_list "(int *param_1,char *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }\n  return iVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ushort *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "undefined1 local_a0 [128];" type_identifier (array_declarator "local_a0 [128]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1b769;" (assignment_expression "uStack_14 = 0x1b769" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = FUN_000177a0();" (assignment_expression "iVar2 = FUN_000177a0()" identifier = (call_expression "FUN_000177a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0001b7a5;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;)) (expression_statement "iVar4 = param_1[5];" (assignment_expression "iVar4 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (if_statement "if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" if (parenthesized_expression "(DAT_00050769 == '\0')" ( (binary_expression "DAT_00050769 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }" { (expression_statement "uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;" (assignment_expression "uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781" identifier = (binary_expression "(uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781" (binary_expression "(uint)DAT_00058780 * 0x100 + 2" (binary_expression "(uint)DAT_00058780 * 0x100" (cast_expression "(uint)DAT_00058780" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) + (cast_expression "(uint)DAT_00058781" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);" (assignment_expression "uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787)" identifier = (cast_expression "(uint)CONCAT11(DAT_00058786,DAT_00058787)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(DAT_00058786,DAT_00058787)" identifier (argument_list "(DAT_00058786,DAT_00058787)" ( identifier , identifier ))))) ;) (expression_statement "uVar8 = uVar9 + 8;" (assignment_expression "uVar8 = uVar9 + 8" identifier = (binary_expression "uVar9 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" else (compound_statement "{\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" { (expression_statement "uVar9 = (uint)DAT_00058783;" (assignment_expression "uVar9 = (uint)DAT_00058783" identifier = (cast_expression "(uint)DAT_00058783" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar3 = DAT_00058780 + 1;" (assignment_expression "uVar3 = DAT_00058780 + 1" identifier = (binary_expression "DAT_00058780 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar9 + 4;" (assignment_expression "uVar8 = uVar9 + 4" identifier = (binary_expression "uVar9 + 4" identifier + number_literal)) ;) }))) (if_statement "if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" if (parenthesized_expression "((int)(uVar8 + 1) < iVar4)" ( (binary_expression "(int)(uVar8 + 1) < iVar4" (cast_expression "(int)(uVar8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar8 + 1)" ( (binary_expression "uVar8 + 1" identifier + number_literal) ))) < identifier) )) (compound_statement "{\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }" { (if_statement "if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" if (parenthesized_expression "(uVar8 + 1 < uVar3)" ( (binary_expression "uVar8 + 1 < uVar3" (binary_expression "uVar8 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" { (expression_statement "iVar2 = FUN_000177a0();" (assignment_expression "iVar2 = FUN_000177a0()" identifier = (call_expression "FUN_000177a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }" { (expression_statement "iVar4 = iVar4 - uVar8;" (assignment_expression "iVar4 = iVar4 - uVar8" identifier = (binary_expression "iVar4 - uVar8" identifier - identifier)) ;) (expression_statement "iVar2 = FUN_00014f40();" (assignment_expression "iVar2 = FUN_00014f40()" identifier = (call_expression "FUN_00014f40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0001b7a5;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;)) (if_statement "if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }" if (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }" { (expression_statement "__printf_chk(1,&DAT_0001f095,param_2);" (call_expression "__printf_chk(1,&DAT_0001f095,param_2)" identifier (argument_list "(1,&DAT_0001f095,param_2)" ( number_literal , (pointer_expression "&DAT_0001f095" & identifier) , identifier ))) ;) })) (if_statement "if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }" if (parenthesized_expression "(DAT_0005076b == '\0' && DAT_0005076d == '\0')" ( (binary_expression "DAT_0005076b == '\0' && DAT_0005076d == '\0'" (binary_expression "DAT_0005076b == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) && (binary_expression "DAT_0005076d == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }" { (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" if (parenthesized_expression "(iVar11 == 0x3f)" ( (binary_expression "iVar11 == 0x3f" identifier == number_literal) )) (compound_statement "{\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }" { (expression_statement "pcVar7 = "List supported pages and subpages";" (assignment_expression "pcVar7 = "List supported pages and subpages"" identifier = (string_literal ""List supported pages and subpages"" " string_content ")) ;) (if_statement "if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }" if (parenthesized_expression "(param_1[1] != 0xff)" ( (binary_expression "param_1[1] != 0xff" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n              pcVar7 = "List supported pages";\n            }" { (expression_statement "pcVar7 = "List supported pages";" (assignment_expression "pcVar7 = "List supported pages"" identifier = (string_literal ""List supported pages"" " string_content ")) ;) })) }) (else_clause "else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" else (compound_statement "{\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" { (expression_statement "iVar5 = FUN_000167e0(param_1);" (assignment_expression "iVar5 = FUN_000167e0(param_1)" identifier = (call_expression "FUN_000167e0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }" if (parenthesized_expression "((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0))" ( (binary_expression "(iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "(pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)" ( (comma_expression "pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0" (assignment_expression "pcVar7 = *(char **)(iVar5 + 0xc)" identifier = (pointer_expression "*(char **)(iVar5 + 0xc)" * (cast_expression "(char **)(iVar5 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) , (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }" { (if_statement "if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                pcVar6 = "page number=0x%x";\n              }" { (expression_statement "pcVar6 = "page number=0x%x";" (assignment_expression "pcVar6 = "page number=0x%x"" identifier = (string_literal ""page number=0x%x"" " string_content ")) ;) }) (else_clause "else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" else (compound_statement "{\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" { (expression_statement "pcVar6 = "page number=0x%x, subpage number=0x%x";" (assignment_expression "pcVar6 = "page number=0x%x, subpage number=0x%x"" identifier = (string_literal ""page number=0x%x, subpage number=0x%x"" " string_content ")) ;) }))) (expression_statement "pcVar7 = &DAT_000504e0;" (assignment_expression "pcVar7 = &DAT_000504e0" identifier = (pointer_expression "&DAT_000504e0" & identifier)) ;) (expression_statement "__snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);" (call_expression "__snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11)" identifier (argument_list "(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11)" ( (pointer_expression "&DAT_000504e0" & identifier) , number_literal , number_literal , number_literal , identifier , identifier ))) ;) })) }))) (expression_statement "__printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);" (call_expression "__printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11)" identifier (argument_list "(1,"%s mode page (0x%x)\n",pcVar7,iVar11)" ( number_literal , (string_literal ""%s mode page (0x%x)\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "puts("----------------------------------------------------");" (call_expression "puts("----------------------------------------------------")" identifier (argument_list "("----------------------------------------------------")" ( (string_literal ""----------------------------------------------------"" " string_content ") ))) ;) })) (expression_statement "FUN_00013640();" (call_expression "FUN_00013640()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" identifier = identifier) ;) (if_statement "if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }" if (parenthesized_expression "(4 < iVar4)" ( (binary_expression "4 < iVar4" number_literal < identifier) )) (compound_statement "{\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }" { (expression_statement "iVar11 = 4;" (assignment_expression "iVar11 = 4" identifier = number_literal) ;) (do_statement "do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);" do (compound_statement "{\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          }" { (while_statement "while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }" while (parenthesized_expression "(puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0')" ( (comma_expression "puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0'" (assignment_expression "puVar10 = (ushort *)(local_a4 + iVar11)" identifier = (cast_expression "(ushort *)(local_a4 + iVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a4 + iVar11)" ( (binary_expression "local_a4 + iVar11" identifier + identifier) )))) , (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }" { (expression_statement "__printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);" (call_expression "__printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8)" identifier (argument_list "(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8)" ( number_literal , (string_literal ""%-35s%d\n"" " string_content escape_sequence ") , (string_literal ""Partition size"" " string_content ") , (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" * identifier) << number_literal) | (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" * identifier) >> number_literal)) ))) ;) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" identifier = identifier) ;) (labeled_statement "LAB_0001b8e4:\n              iVar11 = iVar11 + 2;" statement_identifier : (expression_statement "iVar11 = iVar11 + 2;" (assignment_expression "iVar11 = iVar11 + 2" identifier = (binary_expression "iVar11 + 2" identifier + number_literal)) ;)) (if_statement "if (iVar4 <= iVar11) goto LAB_0001b93b;" if (parenthesized_expression "(iVar4 <= iVar11)" ( (binary_expression "iVar4 <= iVar11" identifier <= identifier) )) (goto_statement "goto LAB_0001b93b;" goto statement_identifier ;)) })) (if_statement "if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }" if (parenthesized_expression "(DAT_0005076d != '\0')" ( (binary_expression "DAT_0005076d != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }" { (expression_statement "iVar5 = DAT_00050764 * 8;" (assignment_expression "iVar5 = DAT_00050764 * 8" identifier = (binary_expression "DAT_00050764 * 8" identifier * number_literal)) ;) (if_statement "if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }" if (parenthesized_expression "(*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0')" ( (binary_expression "*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0'" (pointer_expression "*(char *)((int)&DAT_00050520 + DAT_00050764)" * (cast_expression "(char *)((int)&DAT_00050520 + DAT_00050764)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&DAT_00050520 + DAT_00050764)" ( (binary_expression "(int)&DAT_00050520 + DAT_00050764" (cast_expression "(int)&DAT_00050520" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_00050520" & identifier)) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }" { (expression_statement "__snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));" (call_expression "__snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8))" identifier (argument_list "(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8))" ( identifier , number_literal , number_literal , number_literal , (string_literal ""@ hexdatafield (pos %i) instead of a simple number: %llu"" " string_content ") , identifier , (pointer_expression "*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8)" * (cast_expression "(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050560 + DAT_00050764 * 8)" ( (binary_expression "&DAT_00050560 + DAT_00050764 * 8" (pointer_expression "&DAT_00050560" & identifier) + (binary_expression "DAT_00050764 * 8" identifier * number_literal)) )))) , (pointer_expression "*(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8)" * (cast_expression "(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050564 + DAT_00050764 * 8)" ( (binary_expression "&DAT_00050564 + DAT_00050764 * 8" (pointer_expression "&DAT_00050564" & identifier) + (binary_expression "DAT_00050764 * 8" identifier * number_literal)) )))) ))) ;) (expression_statement "FUN_00012bd0();" (call_expression "FUN_00012bd0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_00050764 = DAT_00050764 + 1;" (assignment_expression "DAT_00050764 = DAT_00050764 + 1" identifier = (binary_expression "DAT_00050764 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;" (assignment_expression "*puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8" (pointer_expression "*puVar10" * identifier) = (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8" (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) << 8" (pointer_expression "*(ushort *)(&DAT_00050560 + iVar5)" * (cast_expression "(ushort *)(&DAT_00050560 + iVar5)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050560 + iVar5)" ( (binary_expression "&DAT_00050560 + iVar5" (pointer_expression "&DAT_00050560" & identifier) + identifier) )))) << number_literal) | (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) >> 8" (pointer_expression "*(ushort *)(&DAT_00050560 + iVar5)" * (cast_expression "(ushort *)(&DAT_00050560 + iVar5)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00050560 + iVar5)" ( (binary_expression "&DAT_00050560 + iVar5" (pointer_expression "&DAT_00050560" & identifier) + identifier) )))) >> number_literal))) ;) (goto_statement "goto LAB_0001b8e4;" goto statement_identifier ;) })) (expression_statement "iVar11 = iVar11 + 2;" (assignment_expression "iVar11 = iVar11 + 2" identifier = (binary_expression "iVar11 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);" (call_expression "__printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8)" identifier (argument_list "(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8)" ( number_literal , (pointer_expression "&DAT_0001f07b" & identifier) , (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" * identifier) << number_literal) | (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" * identifier) >> number_literal)) ))) ;) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" identifier = identifier) ;) }) while (parenthesized_expression "(iVar11 < iVar4)" ( (binary_expression "iVar11 < iVar4" identifier < identifier) )) ;) })) (labeled_statement "LAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" statement_identifier : (if_statement "if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" if (parenthesized_expression "((cVar1 != '\0') && (DAT_0005076d != '\0'))" ( (binary_expression "(cVar1 != '\0') && (DAT_0005076d != '\0')" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(DAT_0005076d != '\0')" ( (binary_expression "DAT_0005076d != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" { (expression_statement "iVar2 = FUN_000173d0();" (assignment_expression "iVar2 = FUN_000173d0()" identifier = (call_expression "FUN_000173d0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;) }))) })) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (goto_statement "goto LAB_0001b7a5;" goto statement_identifier ;) })) (expression_statement "pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";" (assignment_expression "pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" identifier = (string_literal ""modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" identifier = identifier) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) }) (else_clause "else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" else (compound_statement "{\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" { (expression_statement "pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";" (assignment_expression "pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" identifier = (string_literal ""modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" identifier = identifier) ;) }))) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" identifier = number_literal) ;) (expression_statement "__printf_chk(1,pcVar7,uVar12,uVar3,uVar9);" (call_expression "__printf_chk(1,pcVar7,uVar12,uVar3,uVar9)" identifier (argument_list "(1,pcVar7,uVar12,uVar3,uVar9)" ( number_literal , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0001ee20();\n  }" { (expression_statement "FUN_0001ee20();" (call_expression "FUN_0001ee20()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' escape_sequence ')) && (binary_expression IDENT == (char_literal ' escape_sequence '))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , LIT , IDENT , IDENT ))) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) , (binary_expression IDENT == (char_literal ' escape_sequence '))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") , (binary_expression (binary_expression (pointer_expression * IDENT) << LIT) | (binary_expression (pointer_expression * IDENT) >> LIT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + IDENT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT , (string_literal " string_content ") , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) << LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) >> LIT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (binary_expression (binary_expression (pointer_expression * IDENT) << LIT) | (binary_expression (pointer_expression * IDENT) >> LIT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) }))) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (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 IDENT ;) })))
(function_definition "int FUN_0001b760(int *param_1,char *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }\n  return iVar2;\n}" (primitive_type "int") (function_declarator "FUN_0001b760(int *param_1,char *param_2)" (identifier "FUN_0001b760") (parameter_list "(int *param_1,char *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  ushort *puVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  uint uVar12;\n  int local_a4;\n  undefined1 local_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1b769;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000177a0();\n  if (iVar2 != 0) goto LAB_0001b7a5;\n  iVar4 = param_1[5];\n  if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }\n  if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }\n  iVar2 = -1;\n  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);\nLAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }\n  return iVar2;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "ushort *puVar10;" (type_identifier "ushort") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int local_a4;" (primitive_type "int") (identifier "local_a4") (; ";")) (declaration "undefined1 local_a0 [128];" (type_identifier "undefined1") (array_declarator "local_a0 [128]" (identifier "local_a0") ([ "[") (number_literal "128") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1b769;" (assignment_expression "uStack_14 = 0x1b769" (identifier "uStack_14") (= "=") (number_literal "0x1b769")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar2 = FUN_000177a0();" (assignment_expression "iVar2 = FUN_000177a0()" (identifier "iVar2") (= "=") (call_expression "FUN_000177a0()" (identifier "FUN_000177a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_0001b7a5;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001b7a5;" (goto "goto") (statement_identifier "LAB_0001b7a5") (; ";"))) (expression_statement "iVar4 = param_1[5];" (assignment_expression "iVar4 = param_1[5]" (identifier "iVar4") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (DAT_00050769 == '\0') {\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }\n  else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" (if "if") (parenthesized_expression "(DAT_00050769 == '\0')" (( "(") (binary_expression "DAT_00050769 == '\0'" (identifier "DAT_00050769") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;\n    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);\n    uVar8 = uVar9 + 8;\n  }" ({ "{") (expression_statement "uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;" (assignment_expression "uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781" (identifier "uVar3") (= "=") (binary_expression "(uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781" (binary_expression "(uint)DAT_00058780 * 0x100 + 2" (binary_expression "(uint)DAT_00058780 * 0x100" (cast_expression "(uint)DAT_00058780" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "DAT_00058780")) (* "*") (number_literal "0x100")) (+ "+") (number_literal "2")) (+ "+") (cast_expression "(uint)DAT_00058781" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "DAT_00058781")))) (; ";")) (expression_statement "uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);" (assignment_expression "uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787)" (identifier "uVar9") (= "=") (cast_expression "(uint)CONCAT11(DAT_00058786,DAT_00058787)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(DAT_00058786,DAT_00058787)" (identifier "CONCAT11") (argument_list "(DAT_00058786,DAT_00058787)" (( "(") (identifier "DAT_00058786") (, ",") (identifier "DAT_00058787") () ")"))))) (; ";")) (expression_statement "uVar8 = uVar9 + 8;" (assignment_expression "uVar8 = uVar9 + 8" (identifier "uVar8") (= "=") (binary_expression "uVar9 + 8" (identifier "uVar9") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" (else "else") (compound_statement "{\n    uVar9 = (uint)DAT_00058783;\n    uVar3 = DAT_00058780 + 1;\n    uVar8 = uVar9 + 4;\n  }" ({ "{") (expression_statement "uVar9 = (uint)DAT_00058783;" (assignment_expression "uVar9 = (uint)DAT_00058783" (identifier "uVar9") (= "=") (cast_expression "(uint)DAT_00058783" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "DAT_00058783"))) (; ";")) (expression_statement "uVar3 = DAT_00058780 + 1;" (assignment_expression "uVar3 = DAT_00058780 + 1" (identifier "uVar3") (= "=") (binary_expression "DAT_00058780 + 1" (identifier "DAT_00058780") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = uVar9 + 4;" (assignment_expression "uVar8 = uVar9 + 4" (identifier "uVar8") (= "=") (binary_expression "uVar9 + 4" (identifier "uVar9") (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (if_statement "if ((int)(uVar8 + 1) < iVar4) {\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }\n  else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" (if "if") (parenthesized_expression "((int)(uVar8 + 1) < iVar4)" (( "(") (binary_expression "(int)(uVar8 + 1) < iVar4" (cast_expression "(int)(uVar8 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar8 + 1)" (( "(") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1")) () ")"))) (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n    if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }\n    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";\n    uVar12 = uVar3;\n    uVar3 = uVar8;\n  }" ({ "{") (if_statement "if (uVar8 + 1 < uVar3) {\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" (if "if") (parenthesized_expression "(uVar8 + 1 < uVar3)" (( "(") (binary_expression "uVar8 + 1 < uVar3" (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1")) (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      iVar2 = FUN_000177a0();\n      if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }\n      putchar(10);\n      goto LAB_0001b7a5;\n    }" ({ "{") (expression_statement "iVar2 = FUN_000177a0();" (assignment_expression "iVar2 = FUN_000177a0()" (identifier "iVar2") (= "=") (call_expression "FUN_000177a0()" (identifier "FUN_000177a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar4 = iVar4 - uVar8;\n        iVar2 = FUN_00014f40();\n        if (iVar2 != 0) goto LAB_0001b7a5;\n        if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }\n        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }\n        FUN_00013640();\n        cVar1 = DAT_0005076b;\n        if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }\nLAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }\n      }" ({ "{") (expression_statement "iVar4 = iVar4 - uVar8;" (assignment_expression "iVar4 = iVar4 - uVar8" (identifier "iVar4") (= "=") (binary_expression "iVar4 - uVar8" (identifier "iVar4") (- "-") (identifier "uVar8"))) (; ";")) (expression_statement "iVar2 = FUN_00014f40();" (assignment_expression "iVar2 = FUN_00014f40()" (identifier "iVar2") (= "=") (call_expression "FUN_00014f40()" (identifier "FUN_00014f40") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_0001b7a5;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001b7a5;" (goto "goto") (statement_identifier "LAB_0001b7a5") (; ";"))) (if_statement "if (*param_2 != '\0') {\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }" (if "if") (parenthesized_expression "(*param_2 != '\0')" (( "(") (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          __printf_chk(1,&DAT_0001f095,param_2);\n        }" ({ "{") (expression_statement "__printf_chk(1,&DAT_0001f095,param_2);" (call_expression "__printf_chk(1,&DAT_0001f095,param_2)" (identifier "__printf_chk") (argument_list "(1,&DAT_0001f095,param_2)" (( "(") (number_literal "1") (, ",") (pointer_expression "&DAT_0001f095" (& "&") (identifier "DAT_0001f095")) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }" (if "if") (parenthesized_expression "(DAT_0005076b == '\0' && DAT_0005076d == '\0')" (( "(") (binary_expression "DAT_0005076b == '\0' && DAT_0005076d == '\0'" (binary_expression "DAT_0005076b == '\0'" (identifier "DAT_0005076b") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (binary_expression "DAT_0005076d == '\0'" (identifier "DAT_0005076d") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")) (compound_statement "{\n          iVar11 = *param_1;\n          if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }\n          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);\n          puts("----------------------------------------------------");\n        }" ({ "{") (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" (identifier "iVar11") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (iVar11 == 0x3f) {\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }\n          else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" (if "if") (parenthesized_expression "(iVar11 == 0x3f)" (( "(") (binary_expression "iVar11 == 0x3f" (identifier "iVar11") (== "==") (number_literal "0x3f")) () ")")) (compound_statement "{\n            pcVar7 = "List supported pages and subpages";\n            if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }\n          }" ({ "{") (expression_statement "pcVar7 = "List supported pages and subpages";" (assignment_expression "pcVar7 = "List supported pages and subpages"" (identifier "pcVar7") (= "=") (string_literal ""List supported pages and subpages"" (" """) (string_content "List supported pages and subpages") (" """))) (; ";")) (if_statement "if (param_1[1] != 0xff) {\n              pcVar7 = "List supported pages";\n            }" (if "if") (parenthesized_expression "(param_1[1] != 0xff)" (( "(") (binary_expression "param_1[1] != 0xff" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0xff")) () ")")) (compound_statement "{\n              pcVar7 = "List supported pages";\n            }" ({ "{") (expression_statement "pcVar7 = "List supported pages";" (assignment_expression "pcVar7 = "List supported pages"" (identifier "pcVar7") (= "=") (string_literal ""List supported pages"" (" """) (string_content "List supported pages") (" """))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" (else "else") (compound_statement "{\n            iVar5 = FUN_000167e0(param_1);\n            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }\n          }" ({ "{") (expression_statement "iVar5 = FUN_000167e0(param_1);" (assignment_expression "iVar5 = FUN_000167e0(param_1)" (identifier "iVar5") (= "=") (call_expression "FUN_000167e0(param_1)" (identifier "FUN_000167e0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }" (if "if") (parenthesized_expression "((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0))" (( "(") (binary_expression "(iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)" (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)" (( "(") (comma_expression "pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0" (assignment_expression "pcVar7 = *(char **)(iVar5 + 0xc)" (identifier "pcVar7") (= "=") (pointer_expression "*(char **)(iVar5 + 0xc)" (* "*") (cast_expression "(char **)(iVar5 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")"))))) (, ",") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n              if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }\n              pcVar7 = &DAT_000504e0;\n              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);\n            }" ({ "{") (if_statement "if (param_1[1] == 0) {\n                pcVar6 = "page number=0x%x";\n              }\n              else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" (if "if") (parenthesized_expression "(param_1[1] == 0)" (( "(") (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                pcVar6 = "page number=0x%x";\n              }" ({ "{") (expression_statement "pcVar6 = "page number=0x%x";" (assignment_expression "pcVar6 = "page number=0x%x"" (identifier "pcVar6") (= "=") (string_literal ""page number=0x%x"" (" """) (string_content "page number=0x%x") (" """))) (; ";")) (} "}")) (else_clause "else {\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" (else "else") (compound_statement "{\n                pcVar6 = "page number=0x%x, subpage number=0x%x";\n              }" ({ "{") (expression_statement "pcVar6 = "page number=0x%x, subpage number=0x%x";" (assignment_expression "pcVar6 = "page number=0x%x, subpage number=0x%x"" (identifier "pcVar6") (= "=") (string_literal ""page number=0x%x, subpage number=0x%x"" (" """) (string_content "page number=0x%x, subpage number=0x%x") (" """))) (; ";")) (} "}")))) (expression_statement "pcVar7 = &DAT_000504e0;" (assignment_expression "pcVar7 = &DAT_000504e0" (identifier "pcVar7") (= "=") (pointer_expression "&DAT_000504e0" (& "&") (identifier "DAT_000504e0"))) (; ";")) (expression_statement "__snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);" (call_expression "__snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11)" (identifier "__snprintf_chk") (argument_list "(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11)" (( "(") (pointer_expression "&DAT_000504e0" (& "&") (identifier "DAT_000504e0")) (, ",") (number_literal "0x40") (, ",") (number_literal "1") (, ",") (number_literal "0x40") (, ",") (identifier "pcVar6") (, ",") (identifier "iVar11") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "__printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);" (call_expression "__printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11)" (identifier "__printf_chk") (argument_list "(1,"%s mode page (0x%x)\n",pcVar7,iVar11)" (( "(") (number_literal "1") (, ",") (string_literal ""%s mode page (0x%x)\n"" (" """) (string_content "%s mode page (0x%x)") (escape_sequence "\n") (" """)) (, ",") (identifier "pcVar7") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "puts("----------------------------------------------------");" (call_expression "puts("----------------------------------------------------")" (identifier "puts") (argument_list "("----------------------------------------------------")" (( "(") (string_literal ""----------------------------------------------------"" (" """) (string_content "----------------------------------------------------") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00013640();" (call_expression "FUN_00013640()" (identifier "FUN_00013640") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" (identifier "cVar1") (= "=") (identifier "DAT_0005076b")) (; ";")) (if_statement "if (4 < iVar4) {\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }" (if "if") (parenthesized_expression "(4 < iVar4)" (( "(") (binary_expression "4 < iVar4" (number_literal "4") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n          iVar11 = 4;\n          do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);\n        }" ({ "{") (expression_statement "iVar11 = 4;" (assignment_expression "iVar11 = 4" (identifier "iVar11") (= "=") (number_literal "4")) (; ";")) (do_statement "do {\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          } while (iVar11 < iVar4);" (do "do") (compound_statement "{\n            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }\n            if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }\n            iVar11 = iVar11 + 2;\n            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);\n            cVar1 = DAT_0005076b;\n          }" ({ "{") (while_statement "while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }" (while "while") (parenthesized_expression "(puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0')" (( "(") (comma_expression "puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0'" (assignment_expression "puVar10 = (ushort *)(local_a4 + iVar11)" (identifier "puVar10") (= "=") (cast_expression "(ushort *)(local_a4 + iVar11)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a4 + iVar11)" (( "(") (binary_expression "local_a4 + iVar11" (identifier "local_a4") (+ "+") (identifier "iVar11")) () ")")))) (, ",") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")) (compound_statement "{\n              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);\n              cVar1 = DAT_0005076b;\nLAB_0001b8e4:\n              iVar11 = iVar11 + 2;\n              if (iVar4 <= iVar11) goto LAB_0001b93b;\n            }" ({ "{") (expression_statement "__printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);" (call_expression "__printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8)" (identifier "__printf_chk") (argument_list "(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8)" (( "(") (number_literal "1") (, ",") (string_literal ""%-35s%d\n"" (" """) (string_content "%-35s%d") (escape_sequence "\n") (" """)) (, ",") (string_literal ""Partition size"" (" """) (string_content "Partition size") (" """)) (, ",") (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (>> ">>") (number_literal "8"))) () ")"))) (; ";")) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" (identifier "cVar1") (= "=") (identifier "DAT_0005076b")) (; ";")) (labeled_statement "LAB_0001b8e4:\n              iVar11 = iVar11 + 2;" (statement_identifier "LAB_0001b8e4") (: ":") (expression_statement "iVar11 = iVar11 + 2;" (assignment_expression "iVar11 = iVar11 + 2" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 2" (identifier "iVar11") (+ "+") (number_literal "2"))) (; ";"))) (if_statement "if (iVar4 <= iVar11) goto LAB_0001b93b;" (if "if") (parenthesized_expression "(iVar4 <= iVar11)" (( "(") (binary_expression "iVar4 <= iVar11" (identifier "iVar4") (<= "<=") (identifier "iVar11")) () ")")) (goto_statement "goto LAB_0001b93b;" (goto "goto") (statement_identifier "LAB_0001b93b") (; ";"))) (} "}"))) (if_statement "if (DAT_0005076d != '\0') {\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }" (if "if") (parenthesized_expression "(DAT_0005076d != '\0')" (( "(") (binary_expression "DAT_0005076d != '\0'" (identifier "DAT_0005076d") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar5 = DAT_00050764 * 8;\n              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }\n              DAT_00050764 = DAT_00050764 + 1;\n              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;\n              goto LAB_0001b8e4;\n            }" ({ "{") (expression_statement "iVar5 = DAT_00050764 * 8;" (assignment_expression "iVar5 = DAT_00050764 * 8" (identifier "iVar5") (= "=") (binary_expression "DAT_00050764 * 8" (identifier "DAT_00050764") (* "*") (number_literal "8"))) (; ";")) (if_statement "if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }" (if "if") (parenthesized_expression "(*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0')" (( "(") (binary_expression "*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0'" (pointer_expression "*(char *)((int)&DAT_00050520 + DAT_00050764)" (* "*") (cast_expression "(char *)((int)&DAT_00050520 + DAT_00050764)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&DAT_00050520 + DAT_00050764)" (( "(") (binary_expression "(int)&DAT_00050520 + DAT_00050764" (cast_expression "(int)&DAT_00050520" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&DAT_00050520" (& "&") (identifier "DAT_00050520"))) (+ "+") (identifier "DAT_00050764")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                __snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));\n                    \n                FUN_00012bd0();\n              }" ({ "{") (expression_statement "__snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));" (call_expression "__snprintf_chk(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8))" (identifier "__snprintf_chk") (argument_list "(local_a0,0x80,1,0x80,\n                               "@ hexdatafield (pos %i) instead of a simple number: %llu",\n                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),\n                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8))" (( "(") (identifier "local_a0") (, ",") (number_literal "0x80") (, ",") (number_literal "1") (, ",") (number_literal "0x80") (, ",") (string_literal ""@ hexdatafield (pos %i) instead of a simple number: %llu"" (" """) (string_content "@ hexdatafield (pos %i) instead of a simple number: %llu") (" """)) (, ",") (identifier "DAT_00050764") (, ",") (pointer_expression "*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8)" (* "*") (cast_expression "(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00050560 + DAT_00050764 * 8)" (( "(") (binary_expression "&DAT_00050560 + DAT_00050764 * 8" (pointer_expression "&DAT_00050560" (& "&") (identifier "DAT_00050560")) (+ "+") (binary_expression "DAT_00050764 * 8" (identifier "DAT_00050764") (* "*") (number_literal "8"))) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8)" (* "*") (cast_expression "(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00050564 + DAT_00050764 * 8)" (( "(") (binary_expression "&DAT_00050564 + DAT_00050764 * 8" (pointer_expression "&DAT_00050564" (& "&") (identifier "DAT_00050564")) (+ "+") (binary_expression "DAT_00050764 * 8" (identifier "DAT_00050764") (* "*") (number_literal "8"))) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00012bd0();" (call_expression "FUN_00012bd0()" (identifier "FUN_00012bd0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00050764 = DAT_00050764 + 1;" (assignment_expression "DAT_00050764 = DAT_00050764 + 1" (identifier "DAT_00050764") (= "=") (binary_expression "DAT_00050764 + 1" (identifier "DAT_00050764") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;" (assignment_expression "*puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) << 8 |\n                         *(ushort *)(&DAT_00050560 + iVar5) >> 8" (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) << 8" (pointer_expression "*(ushort *)(&DAT_00050560 + iVar5)" (* "*") (cast_expression "(ushort *)(&DAT_00050560 + iVar5)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00050560 + iVar5)" (( "(") (binary_expression "&DAT_00050560 + iVar5" (pointer_expression "&DAT_00050560" (& "&") (identifier "DAT_00050560")) (+ "+") (identifier "iVar5")) () ")")))) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*(ushort *)(&DAT_00050560 + iVar5) >> 8" (pointer_expression "*(ushort *)(&DAT_00050560 + iVar5)" (* "*") (cast_expression "(ushort *)(&DAT_00050560 + iVar5)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00050560 + iVar5)" (( "(") (binary_expression "&DAT_00050560 + iVar5" (pointer_expression "&DAT_00050560" (& "&") (identifier "DAT_00050560")) (+ "+") (identifier "iVar5")) () ")")))) (>> ">>") (number_literal "8")))) (; ";")) (goto_statement "goto LAB_0001b8e4;" (goto "goto") (statement_identifier "LAB_0001b8e4") (; ";")) (} "}"))) (expression_statement "iVar11 = iVar11 + 2;" (assignment_expression "iVar11 = iVar11 + 2" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 2" (identifier "iVar11") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "__printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);" (call_expression "__printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8)" (identifier "__printf_chk") (argument_list "(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8)" (( "(") (number_literal "1") (, ",") (pointer_expression "&DAT_0001f07b" (& "&") (identifier "DAT_0001f07b")) (, ",") (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (>> ">>") (number_literal "8"))) () ")"))) (; ";")) (expression_statement "cVar1 = DAT_0005076b;" (assignment_expression "cVar1 = DAT_0005076b" (identifier "cVar1") (= "=") (identifier "DAT_0005076b")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 < iVar4)" (( "(") (binary_expression "iVar11 < iVar4" (identifier "iVar11") (< "<") (identifier "iVar4")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0001b93b:\n        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" (statement_identifier "LAB_0001b93b") (: ":") (if_statement "if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" (if "if") (parenthesized_expression "((cVar1 != '\0') && (DAT_0005076d != '\0'))" (( "(") (binary_expression "(cVar1 != '\0') && (DAT_0005076d != '\0')" (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_0005076d != '\0')" (( "(") (binary_expression "DAT_0005076d != '\0'" (identifier "DAT_0005076d") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n          iVar2 = FUN_000173d0();\n          goto LAB_0001b7a5;\n        }" ({ "{") (expression_statement "iVar2 = FUN_000173d0();" (assignment_expression "iVar2 = FUN_000173d0()" (identifier "iVar2") (= "=") (call_expression "FUN_000173d0()" (identifier "FUN_000173d0") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_0001b7a5;" (goto "goto") (statement_identifier "LAB_0001b7a5") (; ";")) (} "}")))) (} "}"))) (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (goto_statement "goto LAB_0001b7a5;" (goto "goto") (statement_identifier "LAB_0001b7a5") (; ";")) (} "}"))) (expression_statement "pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";" (assignment_expression "pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" (identifier "pcVar7") (= "=") (string_literal ""modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n"" (" """) (string_content "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d") (escape_sequence "\n") (" """))) (; ";")) (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" (identifier "uVar12") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" (identifier "uVar3") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (else_clause "else {\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" (else "else") (compound_statement "{\n    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";\n    uVar12 = uVar8;\n  }" ({ "{") (expression_statement "pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";" (assignment_expression "pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" (identifier "pcVar7") (= "=") (string_literal ""modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n"" (" """) (string_content "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d") (escape_sequence "\n") (" """))) (; ";")) (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" (identifier "uVar12") (= "=") (identifier "uVar8")) (; ";")) (} "}")))) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" (identifier "iVar2") (= "=") (number_literal "-1")) (; ";")) (expression_statement "__printf_chk(1,pcVar7,uVar12,uVar3,uVar9);" (call_expression "__printf_chk(1,pcVar7,uVar12,uVar3,uVar9)" (identifier "__printf_chk") (argument_list "(1,pcVar7,uVar12,uVar3,uVar9)" (( "(") (number_literal "1") (, ",") (identifier "pcVar7") (, ",") (identifier "uVar12") (, ",") (identifier "uVar3") (, ",") (identifier "uVar9") () ")"))) (; ";")) (labeled_statement "LAB_0001b7a5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }" (statement_identifier "LAB_0001b7a5") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001ee20();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0001ee20();\n  }" ({ "{") (expression_statement "FUN_0001ee20();" (call_expression "FUN_0001ee20()" (identifier "FUN_0001ee20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

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

int function_1(type_1 *mpi,char *prefix)

{
  uint64_t *var_26;
  int var_29;
  char var_22;
  int var_3;
  uint8_t *var_9;
  int var_8;
  type_2 *var_16;
  char *pcVar8;
  char *var_17;
  uint8_t *in_ECX;
  uint8_t *var_7;
  char *extraout_ECX;
  char *extraout_ECX_00;
  char *extraout_ECX_01;
  type_3 var_6;
  type_4 *puVar11;
  int var_14;
  int var_1;
  uint8_t *puVar13;
  uint8_t **in_stack_ffffff34;
  uint8_t *var_21;
  char reason [128];
  
  var_29 = *(int *)(var_1 + 0x14);
  var_3 = var_2(mpi,0x58780,in_ECX);
  if (var_3 != 0) goto LAB_0001b7a5;
  var_8 = mpi->resp_len;
  if (var_4 == '\0') {
    var_9 = (uint8_t *)((type_3)cbuffer[0] * 0x100 + 2 + (type_3)cbuffer[1]);
    var_6 = (type_3)var_5(cbuffer[6],cbuffer[7]);
    var_7 = (uint8_t *)(var_6 + 8);
  }
  else {
    var_6 = (type_3)cbuffer[3];
    var_9 = (uint8_t *)(cbuffer[0] + 1);
    var_7 = (uint8_t *)(var_6 + 4);
  }
  if ((int)(var_7 + 1) < var_8) {
    if (var_7 + 1 < var_9) {
      var_3 = var_2(mpi,0x58780,var_7);
      if (var_3 == 0) {
        var_8 = var_8 - (int)var_7;
        var_3 = var_10(mpi,(var_8 + -4) / 2 + 1,(uint8_t *)&var_21,in_stack_ffffff34);
        if (var_3 != 0) goto LAB_0001b7a5;
        var_17 = extraout_ECX;
        if (*prefix != '\0') {
          var_11(1,&DAT_0001f095,prefix);
          var_17 = extraout_ECX_00;
        }
        if (var_12 == '\0' && var_13 == '\0') {
          var_14 = mpi->page;
          if (var_14 == 0x3f) {
            var_17 = "List supported pages and subpages";
            if (mpi->subpage != 0xff) {
              var_17 = "List supported pages";
            }
          }
          else {
            var_16 = var_15(mpi);
            if ((var_16 == (type_2 *)0x0) || (var_17 = var_16->name, var_17 == (char *)0x0)
               ) {
              if (mpi->subpage == 0) {
                pcVar8 = "page number=0x%x";
              }
              else {
                pcVar8 = "page number=0x%x, subpage number=0x%x";
              }
              var_17 = unkn_page_str;
              var_18(unkn_page_str,0x40,1,0x40,pcVar8,var_14);
            }
          }
          var_11(1,"%s mode page (0x%x)\n",var_17,var_14);
          var_19("----------------------------------------------------");
          var_17 = extraout_ECX_01;
        }
        var_20(var_21 + 2,0x1fcc0,var_17);
        var_22 = var_12;
        if (4 < var_8) {
          var_14 = 4;
          do {
            while (puVar11 = (type_4 *)(var_21 + var_14), var_22 == '\0') {
              var_11(1,"%-35s%d\n","Partition size",*puVar11 << 8 | *puVar11 >> 8);
              var_22 = var_12;
LAB_0001b8e4:
              var_14 = var_14 + 2;
              if (var_8 <= var_14) goto LAB_0001b93b;
            }
            if (var_13 != '\0') {
              var_26 = var_23 + var_24;
              if (is_hex[var_24] != '\0') {
                var_18(reason,0x80,1,0x80,
                               "@ hexdatafield (pos %i) instead of a simple number: %llu",
                               var_24,(int)var_23[var_24],
                               *(type_5 *)((int)var_23 + var_24 * 8 + 4));
                    /* WARNING: Subroutine does not return */
                var_25(reason);
              }
              var_24 = var_24 + 1;
              *puVar11 = (type_4)*var_26 << 8 | (type_4)*var_26 >> 8;
              goto LAB_0001b8e4;
            }
            var_14 = var_14 + 2;
            var_11(1,&DAT_0001f07b,*puVar11 << 8 | *puVar11 >> 8);
            var_22 = var_12;
          } while (var_14 < var_8);
        }
LAB_0001b93b:
        if ((var_22 != '\0') && (var_13 != '\0')) {
          var_3 = var_27(mpi,cbuffer);
          goto LAB_0001b7a5;
        }
      }
      var_28(10);
      goto LAB_0001b7a5;
    }
    var_17 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";
    puVar13 = var_9;
    var_9 = var_7;
  }
  else {
    var_17 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";
    puVar13 = var_7;
  }
  var_3 = -1;
  var_11(1,var_17,puVar13,var_9,var_6);
LAB_0001b7a5:
  if (var_29 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_30();
  }
  return var_3;
}


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

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

int MASKED(int *param_1,char *param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  ushort *puVar10;
  int iVar11;
  int in_GS_OFFSET;
  uint uVar12;
  int local_a4;
  undefined1 local_a0 [128];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1b769;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = FUN_000177a0();
  if (iVar2 != 0) goto LAB_0001b7a5;
  iVar4 = param_1[5];
  if (DAT_00050769 == '\0') {
    uVar3 = (uint)DAT_00058780 * 0x100 + 2 + (uint)DAT_00058781;
    uVar9 = (uint)CONCAT11(DAT_00058786,DAT_00058787);
    uVar8 = uVar9 + 8;
  }
  else {
    uVar9 = (uint)DAT_00058783;
    uVar3 = DAT_00058780 + 1;
    uVar8 = uVar9 + 4;
  }
  if ((int)(uVar8 + 1) < iVar4) {
    if (uVar8 + 1 < uVar3) {
      iVar2 = FUN_000177a0();
      if (iVar2 == 0) {
        iVar4 = iVar4 - uVar8;
        iVar2 = FUN_00014f40();
        if (iVar2 != 0) goto LAB_0001b7a5;
        if (*param_2 != '\0') {
          __printf_chk(1,&DAT_0001f095,param_2);
        }
        if (DAT_0005076b == '\0' && DAT_0005076d == '\0') {
          iVar11 = *param_1;
          if (iVar11 == 0x3f) {
            pcVar7 = "List supported pages and subpages";
            if (param_1[1] != 0xff) {
              pcVar7 = "List supported pages";
            }
          }
          else {
            iVar5 = FUN_000167e0(param_1);
            if ((iVar5 == 0) || (pcVar7 = *(char **)(iVar5 + 0xc), pcVar7 == (char *)0x0)) {
              if (param_1[1] == 0) {
                pcVar6 = "page number=0x%x";
              }
              else {
                pcVar6 = "page number=0x%x, subpage number=0x%x";
              }
              pcVar7 = &DAT_000504e0;
              __snprintf_chk(&DAT_000504e0,0x40,1,0x40,pcVar6,iVar11);
            }
          }
          __printf_chk(1,"%s mode page (0x%x)\n",pcVar7,iVar11);
          puts("----------------------------------------------------");
        }
        FUN_00013640();
        cVar1 = DAT_0005076b;
        if (4 < iVar4) {
          iVar11 = 4;
          do {
            while (puVar10 = (ushort *)(local_a4 + iVar11), cVar1 == '\0') {
              __printf_chk(1,"%-35s%d\n","Partition size",*puVar10 << 8 | *puVar10 >> 8);
              cVar1 = DAT_0005076b;
LAB_0001b8e4:
              iVar11 = iVar11 + 2;
              if (iVar4 <= iVar11) goto LAB_0001b93b;
            }
            if (DAT_0005076d != '\0') {
              iVar5 = DAT_00050764 * 8;
              if (*(char *)((int)&DAT_00050520 + DAT_00050764) != '\0') {
                __snprintf_chk(local_a0,0x80,1,0x80,
                               "@ hexdatafield (pos %i) instead of a simple number: %llu",
                               DAT_00050764,*(undefined4 *)(&DAT_00050560 + DAT_00050764 * 8),
                               *(undefined4 *)(&DAT_00050564 + DAT_00050764 * 8));
                    /* WARNING: Subroutine does not return */
                FUN_00012bd0();
              }
              DAT_00050764 = DAT_00050764 + 1;
              *puVar10 = *(ushort *)(&DAT_00050560 + iVar5) << 8 |
                         *(ushort *)(&DAT_00050560 + iVar5) >> 8;
              goto LAB_0001b8e4;
            }
            iVar11 = iVar11 + 2;
            __printf_chk(1,&DAT_0001f07b,*puVar10 << 8 | *puVar10 >> 8);
            cVar1 = DAT_0005076b;
          } while (iVar11 < iVar4);
        }
LAB_0001b93b:
        if ((cVar1 != '\0') && (DAT_0005076d != '\0')) {
          iVar2 = FUN_000173d0();
          goto LAB_0001b7a5;
        }
      }
      putchar(10);
      goto LAB_0001b7a5;
    }
    pcVar7 = "modePageOffset: response length too short, resp_len=%d offset=%d bd_len=%d\n";
    uVar12 = uVar3;
    uVar3 = uVar8;
  }
  else {
    pcVar7 = "modePageOffset: raw_curr too small, offset=%d resp_len=%d bd_len=%d\n";
    uVar12 = uVar8;
  }
  iVar2 = -1;
  __printf_chk(1,pcVar7,uVar12,uVar3,uVar9);
LAB_0001b7a5:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0001ee20();
  }
  return iVar2;
}

