
void volume_stats_partition(uint8_t *xp,int len,_Bool in_hex)

{
  byte bVar1;
  undefined *puVar2;
  undefined1 *puVar3;
  int iVar4;
  int *piVar5;
  char cVar8;
  undefined4 *puVar6;
  undefined4 uVar7;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  undefined3 in_register_00000018;
  undefined4 *puVar12;
  undefined4 *puVar13;
  byte *unaff_s0;
  undefined1 *puVar14;
  int unaff_s1;
  undefined1 *puVar15;
  uint16_t *unaff_s2;
  undefined1 *puVar16;
  undefined1 *unaff_s3;
  undefined *unaff_s4;
  undefined4 *unaff_s5;
  int iVar17;
  undefined1 *unaff_s6;
  int iVar18;
  uint unaff_s7;
  uint *puVar19;
  undefined *puVar20;
  code *pcVar21;
  uint unaff_s8;
  ushort *puVar22;
  ushort *puVar23;
  ushort *puVar24;
  code *pcVar25;
  undefined1 auStack_104 [128];
  int iStack_84;
  byte *pbStack_80;
  int iStack_7c;
  uint16_t *puStack_78;
  undefined1 *puStack_74;
  undefined *puStack_70;
  undefined4 *puStack_6c;
  undefined1 *puStack_68;
  uint uStack_64;
  uint uStack_60;
  code *pcStack_5c;
  uint local_48;
  uint local_44;
  uint16_t u;
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_00044ca0;
  puVar20 = PTR_s_e_capacity_partition_s___MB___00044bac;
  puVar6 = (undefined4 *)CONCAT31(in_register_00000018,in_hex);
  local_2c = *(int *)PTR___stack_chk_guard_00044ca0;
  puVar12 = puVar6;
  if (3 < len) {
    unaff_s8 = (uint)*xp;
    unaff_s7 = unaff_s8 + 1;
    unaff_s0 = xp;
    if (2 < unaff_s7) {
      unaff_s2 = &u;
      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;
      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;
      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;
      unaff_s1 = len;
      do {
        u = *(uint16_t *)(unaff_s0 + 2);
        unaff_s5 = (undefined4 *)(uint)u;
        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);
        puVar12 = unaff_s5;
        if (iVar4 == 0) {
LAB_00024a4c:
          local_48 = 0;
          if (unaff_s8 - 4 < 8) {
            local_44 = (uint)unaff_s0[4];
            pbVar10 = unaff_s0 + 5;
            if (4 < unaff_s8) {
              do {
                bVar1 = *pbVar10;
                pbVar10 = pbVar10 + 1;
                local_48 = local_44 >> 0x18 | local_48 << 8;
                local_44 = (uint)bVar1 | local_44 << 8;
              } while (unaff_s0 + unaff_s7 != pbVar10);
            }
          }
          else {
            local_44 = 0;
          }
          if (puVar6 == (undefined4 *)0x0) {
            xp = (uint8_t *)0x1;
            len = (int)unaff_s6;
            (*(code *)PTR___printf_chk_00044c28)();
          }
          else {
            xp = (uint8_t *)0x1;
            len = (int)puVar3;
            (*(code *)PTR___printf_chk_00044c28)();
          }
        }
        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {
          len = (int)(puVar20 + -0xcd0);
          xp = (uint8_t *)0x1;
          (*(code *)PTR___printf_chk_00044c28)();
        }
        else {
          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;
          xp = (uint8_t *)0x1;
          len = (int)unaff_s3;
          (*(code *)PTR___printf_chk_00044c28)();
        }
        unaff_s1 = unaff_s1 - unaff_s7;
        unaff_s0 = unaff_s0 + unaff_s7;
        unaff_s4 = puVar20;
        if (unaff_s1 < 4) break;
        unaff_s8 = (uint)*unaff_s0;
        unaff_s7 = unaff_s8 + 1;
      } while (2 < unaff_s7);
    }
  }
  if (local_2c == *(int *)puVar2) {
    return;
  }
  pcVar25 = show_device_stats_page;
  puVar20 = PTR___stack_chk_fail_00044c90;
  (*(code *)PTR___stack_chk_fail_00044c90)();
  piVar5 = *(int **)(puVar20 + 0x20100);
  iStack_84 = *piVar5;
  puVar3 = (undefined1 *)len;
  puVar6 = puVar12;
  pbStack_80 = unaff_s0;
  iStack_7c = unaff_s1;
  puStack_78 = unaff_s2;
  puStack_74 = unaff_s3;
  puStack_70 = unaff_s4;
  puStack_6c = unaff_s5;
  puStack_68 = unaff_s6;
  uStack_64 = unaff_s7;
  uStack_60 = unaff_s8;
  pcStack_5c = pcVar25;
  if ((puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))) {
    (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68);
  }
  puVar16 = (undefined1 *)(len + -4);
  puVar22 = (ushort *)(xp + 4);
  if (3 < (int)puVar16) {
    iVar11 = *(int *)(puVar20 + 0x20004);
    iVar18 = *(int *)(puVar20 + 0x2000c);
    iVar17 = *(int *)(puVar20 + 0x2000c);
    cVar8 = *(char *)((int)puVar12 + 9);
    iVar4 = *(int *)(puVar20 + 0x2000c);
    iVar9 = *(int *)(puVar20 + 0x2000c);
    do {
      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;
      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);
      puVar13 = (undefined4 *)(uint)*puVar22;
      puVar15 = puVar14 + 4;
      if (cVar8 == '\0') {
LAB_00024c9c:
        if (puVar13 < (undefined4 *)0x1000) {
          if (puVar13 < (undefined4 *)0x82) {
                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(code *)(puVar20 +
                      (int)(
                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"
                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +
                             0x670)))();
            return;
          }
          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);
          puVar13 = (undefined4 *)0x0;
          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);
          puVar3 = puVar14;
LAB_00024d18:
          cVar8 = *(char *)((int)puVar12 + 1);
        }
        else {
          if (puVar13 != (undefined4 *)0x1000) {
            if (puVar13 < (undefined4 *)0x8000) {
              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);
            }
            else {
              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);
            }
            puVar13 = (undefined4 *)0x0;
            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);
            puVar3 = puVar14;
            goto LAB_00024d18;
          }
          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);
          if (puVar14 < &DAT_00000008) goto LAB_00024d18;
          puVar19 = (uint *)(puVar22 + 4);
          do {
            (**(code **)(puVar20 + 0x20088))
                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));
            puVar13 = (undefined4 *)*puVar19;
            puVar19 = puVar19 + 2;
            puVar3 = (undefined1 *)(iVar17 + -0x688);
            (**(code **)(puVar20 + 0x20088))(1);
          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));
          cVar8 = *(char *)((int)puVar12 + 1);
        }
        if (cVar8 != '\0') {
          puVar13 = (undefined4 *)
                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);
          puVar3 = (undefined1 *)(iVar4 + -0x70e4);
          (**(code **)(puVar20 + 0x20088))(1);
        }
        cVar8 = *(char *)((int)puVar12 + 9);
        puVar6 = puVar13;
        if (cVar8 != '\0') break;
      }
      else {
        puVar6 = puVar13;
        if ((undefined4 *)puVar12[0xd] == puVar13) {
          if (*(char *)((int)puVar12 + 3) != '\0') {
            puVar23 = puVar22;
            do {
              puVar24 = (ushort *)((int)puVar23 + 1);
              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);
              puVar6 = puVar13;
              puVar23 = puVar24;
            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);
            break;
          }
          puVar6 = (undefined4 *)puVar12[8];
          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;
          if (puVar6 != (undefined4 *)0x1) {
            puVar6 = (undefined4 *)0xffffffff;
          }
          (**(code **)(puVar20 + 0x200e0))(puVar22);
          puVar3 = puVar15;
          break;
        }
      }
      puVar16 = puVar16 + -(int)puVar15;
      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);
    } while (3 < (int)puVar16);
  }
  if (iStack_84 == *piVar5) {
    return;
  }
  pcVar25 = *(code **)(puVar20 + 0x200f0);
  iVar4 = iStack_84;
  (*pcVar25)();
  iVar9 = (**(code **)(pcVar25 + 0x1f98c))();
  if (iVar9 == 0) {
    if ((puVar3 + -1 < &DAT_00000008) &&
       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {
      do {
        puVar16 = puVar16 + 1;
      } while (puVar3 + iVar4 != puVar16);
      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);
    }
    else {
      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);
    }
    (*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8);
    return;
  }
  uVar7 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430);
  *puVar6 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434);
  puVar6[1] = uVar7;
  return;
}



undefined4 * FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)

{
  byte bVar1;
  undefined *puVar2;
  undefined1 *puVar3;
  int iVar4;
  int *piVar5;
  char cVar8;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  undefined4 *puVar12;
  byte *unaff_s0;
  undefined1 *puVar13;
  undefined1 *unaff_s1;
  undefined1 *puVar14;
  ushort *unaff_s2;
  undefined1 *unaff_s3;
  undefined *unaff_s4;
  undefined4 *unaff_s5;
  int iVar15;
  undefined1 *unaff_s6;
  int iVar16;
  uint unaff_s7;
  uint *puVar17;
  undefined *puVar18;
  code *pcVar19;
  code *pcVar20;
  uint unaff_s8;
  ushort *puVar21;
  ushort *puVar22;
  ushort *puVar23;
  undefined4 uVar24;
  undefined1 auStack_104 [128];
  int local_84;
  byte *local_80;
  undefined1 *local_7c;
  ushort *local_78;
  undefined1 *local_74;
  undefined *local_70;
  undefined4 *local_6c;
  undefined1 *local_68;
  uint local_64;
  uint local_60;
  undefined4 local_5c;
  uint local_48;
  uint local_44;
  ushort local_2e;
  undefined4 *local_2c;
  
  puVar2 = PTR___stack_chk_guard_00044ca0;
  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;
  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;
  puVar7 = param_3;
  if (3 < (int)param_2) {
    unaff_s8 = (uint)*param_1;
    unaff_s7 = unaff_s8 + 1;
    unaff_s0 = param_1;
    if (2 < unaff_s7) {
      unaff_s2 = &local_2e;
      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;
      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;
      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;
      unaff_s1 = param_2;
      do {
        local_2e = *(ushort *)(unaff_s0 + 2);
        unaff_s5 = (undefined4 *)(uint)local_2e;
        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);
        puVar7 = unaff_s5;
        if (iVar4 == 0) {
LAB_00024a4c:
          local_48 = 0;
          if (unaff_s8 - 4 < 8) {
            local_44 = (uint)unaff_s0[4];
            pbVar10 = unaff_s0 + 5;
            if (4 < unaff_s8) {
              do {
                bVar1 = *pbVar10;
                pbVar10 = pbVar10 + 1;
                local_48 = local_44 >> 0x18 | local_48 << 8;
                local_44 = (uint)bVar1 | local_44 << 8;
              } while (unaff_s0 + unaff_s7 != pbVar10);
            }
          }
          else {
            local_44 = 0;
          }
          if (param_3 == (undefined4 *)0x0) {
            param_1 = (byte *)0x1;
            param_2 = unaff_s6;
            (*(code *)PTR___printf_chk_00044c28)();
          }
          else {
            param_1 = (byte *)0x1;
            param_2 = puVar3;
            (*(code *)PTR___printf_chk_00044c28)();
          }
        }
        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {
          param_2 = puVar18 + -0xcd0;
          param_1 = (byte *)0x1;
          (*(code *)PTR___printf_chk_00044c28)();
        }
        else {
          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;
          param_1 = (byte *)0x1;
          param_2 = unaff_s3;
          (*(code *)PTR___printf_chk_00044c28)();
        }
        unaff_s1 = unaff_s1 + -unaff_s7;
        unaff_s0 = unaff_s0 + unaff_s7;
        unaff_s4 = puVar18;
        if ((int)unaff_s1 < 4) break;
        unaff_s8 = (uint)*unaff_s0;
        unaff_s7 = unaff_s8 + 1;
      } while (2 < unaff_s7);
    }
  }
  if (local_2c == *(undefined4 **)puVar2) {
    return *(undefined4 **)puVar2;
  }
  uVar24 = 0x24ba0;
  puVar18 = PTR___stack_chk_fail_00044c90;
  (*(code *)PTR___stack_chk_fail_00044c90)();
  piVar5 = *(int **)(puVar18 + 0x20100);
  local_84 = *piVar5;
  puVar3 = param_2;
  puVar6 = puVar7;
  local_80 = unaff_s0;
  local_7c = unaff_s1;
  local_78 = unaff_s2;
  local_74 = unaff_s3;
  local_70 = unaff_s4;
  local_6c = unaff_s5;
  local_68 = unaff_s6;
  local_64 = unaff_s7;
  local_60 = unaff_s8;
  local_5c = uVar24;
  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {
    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);
  }
  param_2 = param_2 + -4;
  puVar21 = (ushort *)(param_1 + 4);
  if (3 < (int)param_2) {
    iVar11 = *(int *)(puVar18 + 0x20004);
    iVar16 = *(int *)(puVar18 + 0x2000c);
    iVar15 = *(int *)(puVar18 + 0x2000c);
    cVar8 = *(char *)((int)puVar7 + 9);
    iVar4 = *(int *)(puVar18 + 0x2000c);
    iVar9 = *(int *)(puVar18 + 0x2000c);
    do {
      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;
      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);
      puVar12 = (undefined4 *)(uint)*puVar21;
      puVar14 = puVar13 + 4;
      if (cVar8 == '\0') {
LAB_00024c9c:
        if (puVar12 < (undefined4 *)0x1000) {
          if (puVar12 < (undefined4 *)0x82) {
                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            puVar7 = (undefined4 *)
                     (*(code *)(puVar18 +
                               (int)(
                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"
                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +
                                              (int)puVar12 * 4) + 0x670)))();
            return puVar7;
          }
          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);
          puVar12 = (undefined4 *)0x0;
          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);
          puVar3 = puVar13;
LAB_00024d18:
          cVar8 = *(char *)((int)puVar7 + 1);
        }
        else {
          if (puVar12 != (undefined4 *)0x1000) {
            if (puVar12 < (undefined4 *)0x8000) {
              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);
            }
            else {
              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);
            }
            puVar12 = (undefined4 *)0x0;
            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);
            puVar3 = puVar13;
            goto LAB_00024d18;
          }
          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);
          if (puVar13 < &DAT_00000008) goto LAB_00024d18;
          puVar17 = (uint *)(puVar21 + 4);
          do {
            (**(code **)(puVar18 + 0x20088))
                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));
            puVar12 = (undefined4 *)*puVar17;
            puVar17 = puVar17 + 2;
            puVar3 = (undefined1 *)(iVar15 + -0x688);
            (**(code **)(puVar18 + 0x20088))(1);
          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));
          cVar8 = *(char *)((int)puVar7 + 1);
        }
        if (cVar8 != '\0') {
          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);
          puVar3 = (undefined1 *)(iVar4 + -0x70e4);
          (**(code **)(puVar18 + 0x20088))(1);
        }
        cVar8 = *(char *)((int)puVar7 + 9);
        puVar6 = puVar12;
        if (cVar8 != '\0') break;
      }
      else {
        puVar6 = puVar12;
        if ((undefined4 *)puVar7[0xd] == puVar12) {
          if (*(char *)((int)puVar7 + 3) != '\0') {
            puVar22 = puVar21;
            do {
              puVar23 = (ushort *)((int)puVar22 + 1);
              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);
              puVar6 = puVar12;
              puVar22 = puVar23;
            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);
            break;
          }
          puVar6 = (undefined4 *)puVar7[8];
          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;
          if (puVar6 != (undefined4 *)0x1) {
            puVar6 = (undefined4 *)0xffffffff;
          }
          (**(code **)(puVar18 + 0x200e0))(puVar21);
          puVar3 = puVar14;
          break;
        }
      }
      param_2 = param_2 + -(int)puVar14;
      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);
    } while (3 < (int)param_2);
  }
  if (local_84 == *piVar5) {
    return (undefined4 *)0x1;
  }
  pcVar19 = *(code **)(puVar18 + 0x200f0);
  iVar4 = local_84;
  (*pcVar19)();
  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();
  if (iVar9 == 0) {
    if ((puVar3 + -1 < &DAT_00000008) &&
       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {
      do {
        puVar13 = puVar13 + 1;
      } while (puVar3 + iVar4 != puVar13);
      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);
    }
    else {
      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);
    }
    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);
    return puVar6;
  }
  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);
  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);
  puVar6[1] = uVar24;
  return puVar6;
}


lui gp,0x3
addiu gp,gp,-0x7e10
addu gp,gp,t9
lw v0,-0x7ed0(gp)
addiu sp,sp,-0x58
or v1,v0,zero
sw gp,0x18(sp)
sw v0,0x20(sp)
slti v0,a1,0x4
sw ra,0x54(sp)
sw s8,0x50(sp)
sw s7,0x4c(sp)
sw s6,0x48(sp)
sw s5,0x44(sp)
sw s4,0x40(sp)
sw s3,0x3c(sp)
sw s2,0x38(sp)
sw s1,0x34(sp)
sw s0,0x30(sp)
sw a2,0x60(sp)
lw v1,0x0(v1)
sw v1,0x2c(sp)
bne v0,zero,0x00024adc
_lw v0,0x20(sp)
lbu s8,0x0(a0)
addiu s7,s8,0x1
slti v0,s7,0x3
bne v0,zero,0x00024ad8
_or s0,a0,zero
lw s5,-0x7fc4(gp)
addiu s2,sp,0x2a
lw s6,-0x7fc4(gp)
or s1,a1,zero
lw s3,-0x7fc4(gp)
addiu v0,s5,-0xd9c
lw s4,-0x7fc4(gp)
addiu s6,s6,-0xd58
addiu s3,s3,-0xd18
sw v0,0x24(sp)
lbu a2,0x2(s0)
addiu a1,s8,-0x2
lbu v0,0x3(s0)
addiu a0,s0,0x4
lw t9,-0x7f08(gp)
sb a2,0x0(s2)
sb v0,0x1(s2)
jalr t9
_lhu s5,0x2a(sp)
bne v0,zero,0x00024b18
_lw gp,0x18(sp)
addiu v0,s8,-0x4
sltiu v0,v0,0x8
beq v0,zero,0x00024b8c
_or v1,zero,zero
slti a1,s8,0x5
lbu v0,0x4(s0)
bne a1,zero,0x00024a8c
_addiu a0,s0,0x5
addu t1,s0,s7
lbu a1,0x0(a0)
srl t0,v0,0x18
sll v1,v1,0x8
sll v0,v0,0x8
addiu a0,a0,0x1
or v1,t0,v1
bne t1,a0,0x00024a6c
_or v0,a1,v0
lw a0,0x60(sp)
beq a0,zero,0x00024b6c
_lw t9,-0x7f48(gp)
lw a1,0x24(sp)
li a0,0x1
sw v1,0x10(sp)
or a2,s5,zero
jalr t9
_sw v0,0x14(sp)
lw gp,0x18(sp)
subu s1,s1,s7
slti v0,s1,0x4
bne v0,zero,0x00024ad8
_addu s0,s0,s7
lbu s8,0x0(s0)
addiu s7,s8,0x1
slti v0,s7,0x3
beq v0,zero,0x00024a1c
_nop
lw v0,0x20(sp)
lw v1,0x2c(sp)
lw v0,0x0(v0)
bne v1,v0,0x00024b94
_lw ra,0x54(sp)
lw s8,0x50(sp)
lw s7,0x4c(sp)
lw s6,0x48(sp)
lw s5,0x44(sp)
lw s4,0x40(sp)
lw s3,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x58
addu v0,s0,s8
li a0,0xfe
lbu v0,0x2(v0)
beq v0,a0,0x00024b50
_li a0,0xff
bne v0,a0,0x00024a4c
_addiu v0,s8,-0x4
lw t9,-0x7f48(gp)
li a0,0x1
or a2,s5,zero
jalr t9
_or a1,s3,zero
b 0x00024ab4
_lw gp,0x18(sp)
lw t9,-0x7f48(gp)
addiu a1,s4,-0xcd0
li a0,0x1
jalr t9
_or a2,s5,zero
b 0x00024ab4
_lw gp,0x18(sp)
li a0,0x1
sw v1,0x10(sp)
or a2,s5,zero
sw v0,0x14(sp)
jalr t9
_or a1,s6,zero
b 0x00024ab4
_lw gp,0x18(sp)
b 0x00024a8c
_or v0,zero,zero
lw t9,-0x7ee0(gp)
jalr t9
_nop
lui gp,0x2
addiu gp,gp,0x7fd0
addu gp,gp,t9
lw v0,-0x7ed0(gp)
addiu sp,sp,-0xd8
or v1,v0,zero
sw v0,0x24(sp)
sw gp,0x10(sp)
sw s8,0xd0(sp)
or s8,a0,zero
sw s3,0xbc(sp)
or s3,a2,zero
sw s2,0xb8(sp)
or s2,a1,zero
sw ra,0xd4(sp)
sw s7,0xcc(sp)
sw s6,0xc8(sp)
sw s5,0xc4(sp)
sw s4,0xc0(sp)
sw s1,0xb4(sp)
sw s0,0xb0(sp)
lw v1,0x0(v1)
lw v0,0x30(a2)
sw v1,0xac(sp)
bne v0,zero,0x00024e58
_nop
lbu v0,0x3(a2)
beq v0,zero,0x00024e4c
_nop
addiu s2,s2,-0x4
slti v0,s2,0x4
bne v0,zero,0x00024d40
_addiu s8,s8,0x4
lw a0,-0x7fcc(gp)
addiu s4,sp,0x28
lw s6,-0x7fc4(gp)
lw s5,-0x7fc4(gp)
addiu v1,a0,0x4b24
lbu v0,0x9(s3)
addiu s6,s6,-0x6b4
sw v1,0x18(sp)
addiu s5,s5,-0x688
lw v1,-0x7fc4(gp)
sw v1,0x1c(sp)
lw v1,-0x7fc4(gp)
sw v1,0x20(sp)
lbu a1,0x0(s8)
lbu a0,0x1(s8)
lbu s0,0x3(s8)
sb a1,0x0(s4)
sb a0,0x1(s4)
lhu a2,0x28(sp)
beq v0,zero,0x00024c9c
_addiu s1,s0,0x4
lw a0,0x34(s3)
bne a0,a2,0x00024d30
_nop
lbu v0,0x3(s3)
bne v0,zero,0x00025288
_nop
lw v0,0x20(s3)
bne v0,zero,0x000252ac
_li a0,0x1
slti v0,a2,0x1000
beq v0,zero,0x00024cd0
_li v0,0x1000
sltiu v0,a2,0x82
beq v0,zero,0x00025254
_sll v0,a2,0x2
lw a0,-0x7fc4(gp)
addiu a0,a0,0x2b80
addu v0,a0,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
beq a2,v0,0x00024dcc
_addiu s7,s8,0x4
ori v0,zero,0x8000
slt v0,a2,v0
bne v0,zero,0x00024db4
_lw v0,0x20(sp)
lw a1,-0x7fc4(gp)
li a0,0x1
lw t9,-0x7f48(gp)
jalr t9
_addiu a1,a1,-0x668
lw gp,0x10(sp)
lw t9,-0x7ef0(gp)
or a2,zero,zero
or a1,s0,zero
jalr t9
_or a0,s7,zero
lw gp,0x10(sp)
lbu v0,0x1(s3)
bne v0,zero,0x00024d84
_lw t9,0x18(sp)
lbu v0,0x9(s3)
bne v0,zero,0x00024d44
_lw v1,0x24(sp)
subu s2,s2,s1
slti a0,s2,0x4
beq a0,zero,0x00024c58
_addu s8,s8,s1
lw v1,0x24(sp)
li v0,0x1
lw a0,0xac(sp)
lw v1,0x0(v1)
bne a0,v1,0x000252d0
_lw ra,0xd4(sp)
lw s8,0xd0(sp)
lw s7,0xcc(sp)
lw s6,0xc8(sp)
lw s5,0xc4(sp)
lw s4,0xc0(sp)
lw s3,0xbc(sp)
lw s2,0xb8(sp)
lw s1,0xb4(sp)
lw s0,0xb0(sp)
jr ra
_addiu sp,sp,0xd8
lbu a0,0x2(s8)
jalr t9
_addiu a1,sp,0x2c
li a0,0x1
lw gp,0x10(sp)
or a2,v0,zero
lw v1,0x1c(sp)
lw t9,-0x7f48(gp)
jalr t9
_addiu a1,v1,-0x70e4
b 0x00024d24
_lw gp,0x10(sp)
li a0,0x1
lw t9,-0x7f48(gp)
jalr t9
_addiu a1,v0,-0x634
b 0x00024d00
_lw gp,0x10(sp)
lw a0,-0x7fc4(gp)
lw t9,-0x7f00(gp)
jalr t9
_addiu a0,a0,-0x6e8
slti v0,s0,0x8
bne v0,zero,0x00024d18
_lw gp,0x10(sp)
addiu s0,s0,-0x8
li a0,-0x8
addiu v0,s8,0x10
and s0,s0,a0
addiu s7,s8,0x8
addu s0,s0,v0
lw t9,-0x7f48(gp)
li a0,0x1
lbu a3,-0x1(s7)
or a1,s6,zero
jalr t9
_lbu a2,-0x2(s7)
li a0,0x1
lwl a2,0x0(s7)
or a1,s5,zero
lw gp,0x10(sp)
lwr a2,0x3(s7)
addiu s7,s7,0x8
lw t9,-0x7f48(gp)
jalr t9
_sw a2,0x0(s4)
bne s7,s0,0x00024e00
_lw gp,0x10(sp)
b 0x00024d1c
_lbu v0,0x1(s3)
lw v0,0x20(a2)
bne v0,zero,0x00024c14
_nop
lw a0,-0x7fc4(gp)
lw t9,-0x7f00(gp)
jalr t9
_addiu a0,a0,-0xc68
b 0x00024c14
_lw gp,0x10(sp)
lw a1,-0x7fc4(gp)
li a0,0x1
lw t9,-0x7f48(gp)
jalr t9
_addiu a1,a1,-0x718
or a2,zero,zero
lw gp,0x10(sp)
addiu a0,s8,0x4
lw t9,-0x7ef0(gp)
jalr t9
_or a1,s0,zero
b 0x00024d18
_lw gp,0x10(sp)
addu s1,s8,s1
lw t9,-0x7f3c(gp)
addiu s8,s8,0x1
jalr t9
_lbu a0,-0x1(s8)
bne s1,s8,0x0002528c
_lw gp,0x10(sp)
b 0x00024d44
_lw v1,0x24(sp)
beq v0,a0,0x000252b8
_lw t9,-0x7ef0(gp)
li v0,-0x1
or a2,v0,zero
or a1,s1,zero
jalr t9
_or a0,s8,zero
b 0x00024d40
_lw gp,0x10(sp)
lw t9,-0x7ee0(gp)
jalr t9
_nop
(translation_unit "undefined4 * FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}\n\n" (function_definition "undefined4 * FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}" type_identifier (pointer_declarator "* FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)" * (function_declarator "FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)" identifier (parameter_list "(byte *param_1,undefined1 *param_2,undefined4 *param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined1 *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "ushort *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined1 *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "undefined *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "undefined4 *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "uint unaff_s8;" type_identifier identifier ;) (declaration "ushort *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "ushort *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "ushort *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "undefined1 auStack_104 [128];" type_identifier (array_declarator "auStack_104 [128]" identifier [ number_literal ]) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 *local_7c;" type_identifier (pointer_declarator "*local_7c" * identifier) ;) (declaration "ushort *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined1 *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "undefined *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined4 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "undefined1 *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "ushort local_2e;" type_identifier identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00044ca0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00044ca0" identifier = identifier) ;) (expression_statement "puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;" (assignment_expression "puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac" identifier = identifier) ;) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_00044ca0" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_00044ca0" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar7 = param_3;" (assignment_expression "puVar7 = param_3" identifier = identifier) ;) (if_statement "if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" if (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" { (expression_statement "unaff_s8 = (uint)*param_1;" (assignment_expression "unaff_s8 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" identifier = (binary_expression "unaff_s8 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = param_1;" (assignment_expression "unaff_s0 = param_1" identifier = identifier) ;) (if_statement "if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" if (parenthesized_expression "(2 < unaff_s7)" ( (binary_expression "2 < unaff_s7" number_literal < identifier) )) (compound_statement "{\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" { (expression_statement "unaff_s2 = &local_2e;" (assignment_expression "unaff_s2 = &local_2e" identifier = (pointer_expression "&local_2e" & identifier)) ;) (expression_statement "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;" (assignment_expression "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" identifier + number_literal)) ;) (expression_statement "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;" (assignment_expression "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" identifier + number_literal)) ;) (expression_statement "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;" (assignment_expression "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" identifier + number_literal)) ;) (expression_statement "unaff_s1 = param_2;" (assignment_expression "unaff_s1 = param_2" identifier = identifier) ;) (do_statement "do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);" do (compound_statement "{\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      }" { (expression_statement "local_2e = *(ushort *)(unaff_s0 + 2);" (assignment_expression "local_2e = *(ushort *)(unaff_s0 + 2)" identifier = (pointer_expression "*(ushort *)(unaff_s0 + 2)" * (cast_expression "(ushort *)(unaff_s0 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s0 + 2)" ( (binary_expression "unaff_s0 + 2" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (undefined4 *)(uint)local_2e;" (assignment_expression "unaff_s5 = (undefined4 *)(uint)local_2e" identifier = (cast_expression "(undefined4 *)(uint)local_2e" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)local_2e" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);" (assignment_expression "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" identifier = (call_expression "(*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" (parenthesized_expression "(*(code *)PTR_sg_all_ffs_00044c68)" ( (pointer_expression "*(code *)PTR_sg_all_ffs_00044c68" * (cast_expression "(code *)PTR_sg_all_ffs_00044c68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0 + 4,unaff_s8 - 2)" ( (binary_expression "unaff_s0 + 4" identifier + number_literal) , (binary_expression "unaff_s8 - 2" identifier - number_literal) )))) ;) (expression_statement "puVar7 = unaff_s5;" (assignment_expression "puVar7 = unaff_s5" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }" { (labeled_statement "LAB_00024a4c:\n          local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }" if (parenthesized_expression "(unaff_s8 - 4 < 8)" ( (binary_expression "unaff_s8 - 4 < 8" (binary_expression "unaff_s8 - 4" identifier - number_literal) < number_literal) )) (compound_statement "{\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }" { (expression_statement "local_44 = (uint)unaff_s0[4];" (assignment_expression "local_44 = (uint)unaff_s0[4]" identifier = (cast_expression "(uint)unaff_s0[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "unaff_s0[4]" identifier [ number_literal ]))) ;) (expression_statement "pbVar10 = unaff_s0 + 5;" (assignment_expression "pbVar10 = unaff_s0 + 5" identifier = (binary_expression "unaff_s0 + 5" identifier + number_literal)) ;) (if_statement "if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" if (parenthesized_expression "(4 < unaff_s8)" ( (binary_expression "4 < unaff_s8" number_literal < identifier) )) (compound_statement "{\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" { (do_statement "do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);" do (compound_statement "{\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              }" { (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_48 = local_44 >> 0x18 | local_48 << 8;" (assignment_expression "local_48 = local_44 >> 0x18 | local_48 << 8" identifier = (binary_expression "local_44 >> 0x18 | local_48 << 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "local_48 << 8" identifier << number_literal))) ;) (expression_statement "local_44 = (uint)bVar1 | local_44 << 8;" (assignment_expression "local_44 = (uint)bVar1 | local_44 << 8" identifier = (binary_expression "(uint)bVar1 | local_44 << 8" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "local_44 << 8" identifier << number_literal))) ;) }) while (parenthesized_expression "(unaff_s0 + unaff_s7 != pbVar10)" ( (binary_expression "unaff_s0 + unaff_s7 != pbVar10" (binary_expression "unaff_s0 + unaff_s7" identifier + identifier) != identifier) )) ;) })) }) (else_clause "else {\n            local_44 = 0;\n          }" else (compound_statement "{\n            local_44 = 0;\n          }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) }))) (if_statement "if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" if (parenthesized_expression "(param_3 == (undefined4 *)0x0)" ( (binary_expression "param_3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" { (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" identifier = identifier) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" else (compound_statement "{\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" { (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = puVar3;" (assignment_expression "param_2 = puVar3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) }) (else_clause "else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" else (if_statement "if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" if (parenthesized_expression "(unaff_s0[unaff_s8 + 2] == 0xfe)" ( (binary_expression "unaff_s0[unaff_s8 + 2] == 0xfe" (subscript_expression "unaff_s0[unaff_s8 + 2]" identifier [ (binary_expression "unaff_s8 + 2" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" { (expression_statement "param_2 = puVar18 + -0xcd0;" (assignment_expression "param_2 = puVar18 + -0xcd0" identifier = (binary_expression "puVar18 + -0xcd0" identifier + number_literal)) ;) (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" else (compound_statement "{\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" { (if_statement "if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;" if (parenthesized_expression "(unaff_s0[unaff_s8 + 2] != 0xff)" ( (binary_expression "unaff_s0[unaff_s8 + 2] != 0xff" (subscript_expression "unaff_s0[unaff_s8 + 2]" identifier [ (binary_expression "unaff_s8 + 2" identifier + number_literal) ]) != number_literal) )) (goto_statement "goto LAB_00024a4c;" goto statement_identifier ;)) (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = unaff_s3;" (assignment_expression "param_2 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))))) (expression_statement "unaff_s1 = unaff_s1 + -unaff_s7;" (assignment_expression "unaff_s1 = unaff_s1 + -unaff_s7" identifier = (binary_expression "unaff_s1 + -unaff_s7" identifier + (unary_expression "-unaff_s7" - identifier))) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s7;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s7" identifier = (binary_expression "unaff_s0 + unaff_s7" identifier + identifier)) ;) (expression_statement "unaff_s4 = puVar18;" (assignment_expression "unaff_s4 = puVar18" identifier = identifier) ;) (if_statement "if ((int)unaff_s1 < 4) break;" if (parenthesized_expression "((int)unaff_s1 < 4)" ( (binary_expression "(int)unaff_s1 < 4" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "unaff_s8 = (uint)*unaff_s0;" (assignment_expression "unaff_s8 = (uint)*unaff_s0" identifier = (binary_expression "(uint)*unaff_s0" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" identifier = (binary_expression "unaff_s8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(2 < unaff_s7)" ( (binary_expression "2 < unaff_s7" number_literal < identifier) )) ;) })) })) (if_statement "if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }" if (parenthesized_expression "(local_2c == *(undefined4 **)puVar2)" ( (binary_expression "local_2c == *(undefined4 **)puVar2" identifier == (pointer_expression "*(undefined4 **)puVar2" * (cast_expression "(undefined4 **)puVar2" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return *(undefined4 **)puVar2;\n  }" { (return_statement "return *(undefined4 **)puVar2;" return (pointer_expression "*(undefined4 **)puVar2" * (cast_expression "(undefined4 **)puVar2" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) })) (expression_statement "uVar24 = 0x24ba0;" (assignment_expression "uVar24 = 0x24ba0" identifier = number_literal) ;) (expression_statement "puVar18 = PTR___stack_chk_fail_00044c90;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00044c90" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00044c90)();" (call_expression "(*(code *)PTR___stack_chk_fail_00044c90)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00044c90)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00044c90" * (cast_expression "(code *)PTR___stack_chk_fail_00044c90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = *(int **)(puVar18 + 0x20100);" (assignment_expression "piVar5 = *(int **)(puVar18 + 0x20100)" identifier = (pointer_expression "*(int **)(puVar18 + 0x20100)" * (cast_expression "(int **)(puVar18 + 0x20100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20100)" ( (binary_expression "puVar18 + 0x20100" identifier + number_literal) ))))) ;) (expression_statement "local_84 = *piVar5;" (assignment_expression "local_84 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "local_80 = unaff_s0;" (assignment_expression "local_80 = unaff_s0" identifier = identifier) ;) (expression_statement "local_7c = unaff_s1;" (assignment_expression "local_7c = unaff_s1" identifier = identifier) ;) (expression_statement "local_78 = unaff_s2;" (assignment_expression "local_78 = unaff_s2" identifier = identifier) ;) (expression_statement "local_74 = unaff_s3;" (assignment_expression "local_74 = unaff_s3" identifier = identifier) ;) (expression_statement "local_70 = unaff_s4;" (assignment_expression "local_70 = unaff_s4" identifier = identifier) ;) (expression_statement "local_6c = unaff_s5;" (assignment_expression "local_6c = unaff_s5" identifier = identifier) ;) (expression_statement "local_68 = unaff_s6;" (assignment_expression "local_68 = unaff_s6" identifier = identifier) ;) (expression_statement "local_64 = unaff_s7;" (assignment_expression "local_64 = unaff_s7" identifier = identifier) ;) (expression_statement "local_60 = unaff_s8;" (assignment_expression "local_60 = unaff_s8" identifier = identifier) ;) (expression_statement "local_5c = uVar24;" (assignment_expression "local_5c = uVar24" identifier = identifier) ;) (if_statement "if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }" if (parenthesized_expression "((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0))))" ( (binary_expression "(puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))" (parenthesized_expression "(puVar7[0xc] != 0)" ( (binary_expression "puVar7[0xc] != 0" (subscript_expression "puVar7[0xc]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))" ( (parenthesized_expression "(*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0))" ( (binary_expression "*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)" (binary_expression "*(char *)((int)puVar7 + 3) == '\0'" (pointer_expression "*(char *)((int)puVar7 + 3)" * (cast_expression "(char *)((int)puVar7 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 3)" ( (binary_expression "(int)puVar7 + 3" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(puVar7[8] == 0)" ( (binary_expression "puVar7[8] == 0" (subscript_expression "puVar7[8]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }" { (expression_statement "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);" (call_expression "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68)" (parenthesized_expression "(**(code **)(puVar18 + 0x200d0))" ( (pointer_expression "**(code **)(puVar18 + 0x200d0)" * (pointer_expression "*(code **)(puVar18 + 0x200d0)" * (cast_expression "(code **)(puVar18 + 0x200d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200d0)" ( (binary_expression "puVar18 + 0x200d0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar18 + 0x2000c) + -0xc68)" ( (binary_expression "*(int *)(puVar18 + 0x2000c) + -0xc68" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "param_2 = param_2 + -4;" (assignment_expression "param_2 = param_2 + -4" identifier = (binary_expression "param_2 + -4" identifier + number_literal)) ;) (expression_statement "puVar21 = (ushort *)(param_1 + 4);" (assignment_expression "puVar21 = (ushort *)(param_1 + 4)" identifier = (cast_expression "(ushort *)(param_1 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (if_statement "if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }" if (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }" { (expression_statement "iVar11 = *(int *)(puVar18 + 0x20004);" (assignment_expression "iVar11 = *(int *)(puVar18 + 0x20004)" identifier = (pointer_expression "*(int *)(puVar18 + 0x20004)" * (cast_expression "(int *)(puVar18 + 0x20004)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x20004)" ( (binary_expression "puVar18 + 0x20004" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar16 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar15 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "cVar8 = *(char *)((int)puVar7 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 9)" identifier = (pointer_expression "*(char *)((int)puVar7 + 9)" * (cast_expression "(char *)((int)puVar7 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 9)" ( (binary_expression "(int)puVar7 + 9" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar4 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar9 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (do_statement "do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);" do (compound_statement "{\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    }" { (expression_statement "puVar3 = (undefined1 *)(uint)*(byte *)puVar21;" (assignment_expression "puVar3 = (undefined1 *)(uint)*(byte *)puVar21" identifier = (binary_expression "(undefined1 *)(uint)*(byte *)puVar21" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)puVar21" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);" (assignment_expression "puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3)" identifier = (binary_expression "(undefined1 *)(uint)*(byte *)((int)puVar21 + 3)" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)((int)puVar21 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 3)" ( (binary_expression "(int)puVar21 + 3" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar12 = (undefined4 *)(uint)*puVar21;" (assignment_expression "puVar12 = (undefined4 *)(uint)*puVar21" identifier = (binary_expression "(undefined4 *)(uint)*puVar21" (cast_expression "(undefined4 *)(uint)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "puVar14 = puVar13 + 4;" (assignment_expression "puVar14 = puVar13 + 4" identifier = (binary_expression "puVar13 + 4" identifier + number_literal)) ;) (if_statement "if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }" { (labeled_statement "LAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" statement_identifier : (if_statement "if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" if (parenthesized_expression "(puVar12 < (undefined4 *)0x1000)" ( (binary_expression "puVar12 < (undefined4 *)0x1000" identifier < (cast_expression "(undefined4 *)0x1000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" { (if_statement "if (puVar12 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }" if (parenthesized_expression "(puVar12 < (undefined4 *)0x82)" ( (binary_expression "puVar12 < (undefined4 *)0x82" identifier < (cast_expression "(undefined4 *)0x82" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }" { comment comment (expression_statement "puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();" (assignment_expression "puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" identifier = (cast_expression "(undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" (parenthesized_expression "(*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))" ( (pointer_expression "*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" * (cast_expression "(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" ( (binary_expression "puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" identifier + (cast_expression "(int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" ( (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670" (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" (string_literal ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") + (pointer_expression "*(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" * (cast_expression "(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" ( (binary_expression "*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4" (binary_expression "*(int *)(puVar18 + 0x2000c) + 0x2b80" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) + (binary_expression "(int)puVar12 * 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) + number_literal) )))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar7;" return identifier ;) })) (expression_statement "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar18 + 0x2000c) + -0x718)" ( number_literal , (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x718" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" ( (pointer_expression "**(code **)(puVar18 + 0x200e0)" * (pointer_expression "*(code **)(puVar18 + 0x200e0)" * (cast_expression "(code **)(puVar18 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200e0)" ( (binary_expression "puVar18 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar21 + 2)" ( (binary_expression "puVar21 + 2" identifier + number_literal) ))) ;) (expression_statement "puVar3 = puVar13;" (assignment_expression "puVar3 = puVar13" identifier = identifier) ;) (labeled_statement "LAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);" statement_identifier : (expression_statement "cVar8 = *(char *)((int)puVar7 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 1)" identifier = (pointer_expression "*(char *)((int)puVar7 + 1)" * (cast_expression "(char *)((int)puVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 1)" ( (binary_expression "(int)puVar7 + 1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) }) (else_clause "else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" else (compound_statement "{\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" { (if_statement "if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }" if (parenthesized_expression "(puVar12 != (undefined4 *)0x1000)" ( (binary_expression "puVar12 != (undefined4 *)0x1000" identifier != (cast_expression "(undefined4 *)0x1000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }" { (if_statement "if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" if (parenthesized_expression "(puVar12 < (undefined4 *)0x8000)" ( (binary_expression "puVar12 < (undefined4 *)0x8000" identifier < (cast_expression "(undefined4 *)0x8000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }" { (expression_statement "(**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,iVar9 + -0x634)" ( number_literal , (binary_expression "iVar9 + -0x634" identifier + number_literal) ))) ;) }) (else_clause "else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" else (compound_statement "{\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" { (expression_statement "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar18 + 0x2000c) + -0x668)" ( number_literal , (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x668" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) }))) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" ( (pointer_expression "**(code **)(puVar18 + 0x200e0)" * (pointer_expression "*(code **)(puVar18 + 0x200e0)" * (cast_expression "(code **)(puVar18 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200e0)" ( (binary_expression "puVar18 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar21 + 2)" ( (binary_expression "puVar21 + 2" identifier + number_literal) ))) ;) (expression_statement "puVar3 = puVar13;" (assignment_expression "puVar3 = puVar13" identifier = identifier) ;) (goto_statement "goto LAB_00024d18;" goto statement_identifier ;) })) (expression_statement "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);" (call_expression "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8)" (parenthesized_expression "(**(code **)(puVar18 + 0x200d0))" ( (pointer_expression "**(code **)(puVar18 + 0x200d0)" * (pointer_expression "*(code **)(puVar18 + 0x200d0)" * (cast_expression "(code **)(puVar18 + 0x200d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200d0)" ( (binary_expression "puVar18 + 0x200d0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar18 + 0x2000c) + -0x6e8)" ( (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x6e8" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) (if_statement "if (puVar13 < &DAT_00000008) goto LAB_00024d18;" if (parenthesized_expression "(puVar13 < &DAT_00000008)" ( (binary_expression "puVar13 < &DAT_00000008" identifier < (pointer_expression "&DAT_00000008" & identifier)) )) (goto_statement "goto LAB_00024d18;" goto statement_identifier ;)) (expression_statement "puVar17 = (uint *)(puVar21 + 4);" (assignment_expression "puVar17 = (uint *)(puVar21 + 4)" identifier = (cast_expression "(uint *)(puVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 4)" ( (binary_expression "puVar21 + 4" identifier + number_literal) )))) ;) (do_statement "do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));" do (compound_statement "{\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          }" { (expression_statement "(**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));" (call_expression "(**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1))" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1))" ( number_literal , (binary_expression "iVar16 + -0x6b4" identifier + number_literal) , (pointer_expression "*(byte *)((int)puVar17 + -2)" * (cast_expression "(byte *)((int)puVar17 + -2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + -2)" ( (binary_expression "(int)puVar17 + -2" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar17 + -1)" * (cast_expression "(byte *)((int)puVar17 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + -1)" ( (binary_expression "(int)puVar17 + -1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "puVar12 = (undefined4 *)*puVar17;" (assignment_expression "puVar12 = (undefined4 *)*puVar17" identifier = (cast_expression "(undefined4 *)*puVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "puVar3 = (undefined1 *)(iVar15 + -0x688);" (assignment_expression "puVar3 = (undefined1 *)(iVar15 + -0x688)" identifier = (cast_expression "(undefined1 *)(iVar15 + -0x688)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x688)" ( (binary_expression "iVar15 + -0x688" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(puVar18 + 0x20088))(1);" (call_expression "(**(code **)(puVar18 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1)" ( number_literal ))) ;) }) while (parenthesized_expression "(puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10))" ( (binary_expression "puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" identifier != (cast_expression "(uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" ( (binary_expression "(int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10" (binary_expression "(int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8)" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)(puVar13 + -8) & 0xfffffff8)" ( (binary_expression "(uint)(puVar13 + -8) & 0xfffffff8" (call_expression "(uint)(puVar13 + -8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar13 + -8)" ( (binary_expression "puVar13 + -8" identifier + number_literal) ))) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "cVar8 = *(char *)((int)puVar7 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 1)" identifier = (pointer_expression "*(char *)((int)puVar7 + 1)" * (cast_expression "(char *)((int)puVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 1)" ( (binary_expression "(int)puVar7 + 1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })))) (if_statement "if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }" { (expression_statement "puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);" (assignment_expression "puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" identifier = (cast_expression "(undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" (parenthesized_expression "(*(code *)(iVar11 + 0x4b24))" ( (pointer_expression "*(code *)(iVar11 + 0x4b24)" * (cast_expression "(code *)(iVar11 + 0x4b24)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x4b24)" ( (binary_expression "iVar11 + 0x4b24" identifier + number_literal) )))) )) (argument_list "(*(byte *)(puVar21 + 1),auStack_104)" ( (pointer_expression "*(byte *)(puVar21 + 1)" * (cast_expression "(byte *)(puVar21 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 1)" ( (binary_expression "puVar21 + 1" identifier + number_literal) )))) , identifier ))))) ;) (expression_statement "puVar3 = (undefined1 *)(iVar4 + -0x70e4);" (assignment_expression "puVar3 = (undefined1 *)(iVar4 + -0x70e4)" identifier = (cast_expression "(undefined1 *)(iVar4 + -0x70e4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x70e4)" ( (binary_expression "iVar4 + -0x70e4" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(puVar18 + 0x20088))(1);" (call_expression "(**(code **)(puVar18 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1)" ( number_literal ))) ;) })) (expression_statement "cVar8 = *(char *)((int)puVar7 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 9)" identifier = (pointer_expression "*(char *)((int)puVar7 + 9)" * (cast_expression "(char *)((int)puVar7 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 9)" ( (binary_expression "(int)puVar7 + 9" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (if_statement "if (cVar8 != '\0') break;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" else (compound_statement "{\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" { (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (if_statement "if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }" if (parenthesized_expression "((undefined4 *)puVar7[0xd] == puVar12)" ( (binary_expression "(undefined4 *)puVar7[0xd] == puVar12" (cast_expression "(undefined4 *)puVar7[0xd]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[0xd]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }" { (if_statement "if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }" if (parenthesized_expression "(*(char *)((int)puVar7 + 3) != '\0')" ( (binary_expression "*(char *)((int)puVar7 + 3) != '\0'" (pointer_expression "*(char *)((int)puVar7 + 3)" * (cast_expression "(char *)((int)puVar7 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 3)" ( (binary_expression "(int)puVar7 + 3" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }" { (expression_statement "puVar22 = puVar21;" (assignment_expression "puVar22 = puVar21" identifier = identifier) ;) (do_statement "do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);" do (compound_statement "{\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            }" { (expression_statement "puVar23 = (ushort *)((int)puVar22 + 1);" (assignment_expression "puVar23 = (ushort *)((int)puVar22 + 1)" identifier = (cast_expression "(ushort *)((int)puVar22 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 1)" ( (binary_expression "(int)puVar22 + 1" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);" (call_expression "(**(code **)(puVar18 + 0x20094))(*(byte *)puVar22)" (parenthesized_expression "(**(code **)(puVar18 + 0x20094))" ( (pointer_expression "**(code **)(puVar18 + 0x20094)" * (pointer_expression "*(code **)(puVar18 + 0x20094)" * (cast_expression "(code **)(puVar18 + 0x20094)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20094)" ( (binary_expression "puVar18 + 0x20094" identifier + number_literal) ))))) )) (argument_list "(*(byte *)puVar22)" ( (pointer_expression "*(byte *)puVar22" * (cast_expression "(byte *)puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (expression_statement "puVar22 = puVar23;" (assignment_expression "puVar22 = puVar23" identifier = identifier) ;) }) while (parenthesized_expression "((ushort *)((int)puVar21 + (int)puVar14) != puVar23)" ( (binary_expression "(ushort *)((int)puVar21 + (int)puVar14) != puVar23" (cast_expression "(ushort *)((int)puVar21 + (int)puVar14)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (int)puVar14)" ( (binary_expression "(int)puVar21 + (int)puVar14" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ))) != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "puVar6 = (undefined4 *)puVar7[8];" (assignment_expression "puVar6 = (undefined4 *)puVar7[8]" identifier = (cast_expression "(undefined4 *)puVar7[8]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[8]" identifier [ number_literal ]))) ;) (if_statement "if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;" if (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00024c9c;" goto statement_identifier ;)) (if_statement "if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }" if (parenthesized_expression "(puVar6 != (undefined4 *)0x1)" ( (binary_expression "puVar6 != (undefined4 *)0x1" identifier != (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar6 = (undefined4 *)0xffffffff;\n          }" { (expression_statement "puVar6 = (undefined4 *)0xffffffff;" (assignment_expression "puVar6 = (undefined4 *)0xffffffff" identifier = (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" ( (pointer_expression "**(code **)(puVar18 + 0x200e0)" * (pointer_expression "*(code **)(puVar18 + 0x200e0)" * (cast_expression "(code **)(puVar18 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200e0)" ( (binary_expression "puVar18 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier ))) ;) (expression_statement "puVar3 = puVar14;" (assignment_expression "puVar3 = puVar14" identifier = identifier) ;) (break_statement "break;" break ;) })) }))) (expression_statement "param_2 = param_2 + -(int)puVar14;" (assignment_expression "param_2 = param_2 + -(int)puVar14" identifier = (binary_expression "param_2 + -(int)puVar14" identifier + (unary_expression "-(int)puVar14" - (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "puVar21 = (ushort *)((int)puVar21 + (int)puVar14);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + (int)puVar14)" identifier = (cast_expression "(ushort *)((int)puVar21 + (int)puVar14)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (int)puVar14)" ( (binary_expression "(int)puVar21 + (int)puVar14" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) while (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }" if (parenthesized_expression "(local_84 == *piVar5)" ( (binary_expression "local_84 == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return (undefined4 *)0x1;\n  }" { (return_statement "return (undefined4 *)0x1;" return (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar19 = *(code **)(puVar18 + 0x200f0);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x200f0)" identifier = (pointer_expression "*(code **)(puVar18 + 0x200f0)" * (cast_expression "(code **)(puVar18 + 0x200f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200f0)" ( (binary_expression "puVar18 + 0x200f0" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = local_84;" (assignment_expression "iVar4 = local_84" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar9 = (**(code **)(pcVar19 + 0x1f98c))();" (assignment_expression "iVar9 = (**(code **)(pcVar19 + 0x1f98c))()" identifier = (call_expression "(**(code **)(pcVar19 + 0x1f98c))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1f98c))" ( (pointer_expression "**(code **)(pcVar19 + 0x1f98c)" * (pointer_expression "*(code **)(pcVar19 + 0x1f98c)" * (cast_expression "(code **)(pcVar19 + 0x1f98c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1f98c)" ( (binary_expression "pcVar19 + 0x1f98c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }" { (if_statement "if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" if (parenthesized_expression "((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1))" ( (binary_expression "(puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" (parenthesized_expression "(puVar3 + -1 < &DAT_00000008)" ( (binary_expression "puVar3 + -1 < &DAT_00000008" (binary_expression "puVar3 + -1" identifier + number_literal) < (pointer_expression "&DAT_00000008" & identifier)) )) && (parenthesized_expression "(puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" ( (comma_expression "puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1" (assignment_expression "puVar13 = (undefined1 *)(iVar4 + 1)" identifier = (cast_expression "(undefined1 *)(iVar4 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )))) , (binary_expression "puVar3 != (undefined1 *)0x1" identifier != (cast_expression "(undefined1 *)0x1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" { (do_statement "do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);" do (compound_statement "{\n        puVar13 = puVar13 + 1;\n      }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + iVar4 != puVar13)" ( (binary_expression "puVar3 + iVar4 != puVar13" (binary_expression "puVar3 + iVar4" identifier + identifier) != identifier) )) ;) (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1f9e4);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1f9e4)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1f9e4)" * (cast_expression "(code **)(pcVar19 + 0x1f9e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1f9e4)" ( (binary_expression "pcVar19 + 0x1f9e4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" else (compound_statement "{\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" { (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1f9e4);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1f9e4)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1f9e4)" * (cast_expression "(code **)(pcVar19 + 0x1f9e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1f9e4)" ( (binary_expression "pcVar19 + 0x1f9e4" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);" (call_expression "(*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8)" ( identifier , number_literal , number_literal , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x43e8" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" * (cast_expression "(int *)(pcVar19 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1f8d0)" ( (binary_expression "pcVar19 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return puVar6;" return identifier ;) })) (expression_statement "uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);" (assignment_expression "uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" * (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" ( (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x3430" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" * (cast_expression "(int *)(pcVar19 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1f8d0)" ( (binary_expression "pcVar19 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);" (assignment_expression "*puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" * (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" ( (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x3434" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" * (cast_expression "(int *)(pcVar19 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1f8d0)" ( (binary_expression "pcVar19 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar6[1] = uVar24;" (assignment_expression "puVar6[1] = uVar24" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar6;" return identifier ;) })))
(translation_unit "void volume_stats_partition(uint8_t *xp,int len,_Bool in_hex)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 uVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined3 in_register_00000018;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  byte *unaff_s0;\n  undefined1 *puVar14;\n  int unaff_s1;\n  undefined1 *puVar15;\n  uint16_t *unaff_s2;\n  undefined1 *puVar16;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar17;\n  undefined1 *unaff_s6;\n  int iVar18;\n  uint unaff_s7;\n  uint *puVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  uint unaff_s8;\n  ushort *puVar22;\n  ushort *puVar23;\n  ushort *puVar24;\n  code *pcVar25;\n  undefined1 auStack_104 [128];\n  int iStack_84;\n  byte *pbStack_80;\n  int iStack_7c;\n  uint16_t *puStack_78;\n  undefined1 *puStack_74;\n  undefined *puStack_70;\n  undefined4 *puStack_6c;\n  undefined1 *puStack_68;\n  uint uStack_64;\n  uint uStack_60;\n  code *pcStack_5c;\n  uint local_48;\n  uint local_44;\n  uint16_t u;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar20 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  puVar6 = (undefined4 *)CONCAT31(in_register_00000018,in_hex);\n  local_2c = *(int *)PTR___stack_chk_guard_00044ca0;\n  puVar12 = puVar6;\n  if (3 < len) {\n    unaff_s8 = (uint)*xp;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = xp;\n    if (2 < unaff_s7) {\n      unaff_s2 = &u;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = len;\n      do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  pcVar25 = show_device_stats_page;\n  puVar20 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar20 + 0x20100);\n  iStack_84 = *piVar5;\n  puVar3 = (undefined1 *)len;\n  puVar6 = puVar12;\n  pbStack_80 = unaff_s0;\n  iStack_7c = unaff_s1;\n  puStack_78 = unaff_s2;\n  puStack_74 = unaff_s3;\n  puStack_70 = unaff_s4;\n  puStack_6c = unaff_s5;\n  puStack_68 = unaff_s6;\n  uStack_64 = unaff_s7;\n  uStack_60 = unaff_s8;\n  pcStack_5c = pcVar25;\n  if ((puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))) {\n    (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68);\n  }\n  puVar16 = (undefined1 *)(len + -4);\n  puVar22 = (ushort *)(xp + 4);\n  if (3 < (int)puVar16) {\n    iVar11 = *(int *)(puVar20 + 0x20004);\n    iVar18 = *(int *)(puVar20 + 0x2000c);\n    iVar17 = *(int *)(puVar20 + 0x2000c);\n    cVar8 = *(char *)((int)puVar12 + 9);\n    iVar4 = *(int *)(puVar20 + 0x2000c);\n    iVar9 = *(int *)(puVar20 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;\n      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);\n      puVar13 = (undefined4 *)(uint)*puVar22;\n      puVar15 = puVar14 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }\n      puVar16 = puVar16 + -(int)puVar15;\n      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);\n    } while (3 < (int)puVar16);\n  }\n  if (iStack_84 == *piVar5) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar20 + 0x200f0);\n  iVar4 = iStack_84;\n  (*pcVar25)();\n  iVar9 = (**(code **)(pcVar25 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    else {\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    (*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8);\n    return;\n  }\n  uVar7 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar7;\n  return;\n}\n\n" (function_definition "void volume_stats_partition(uint8_t *xp,int len,_Bool in_hex)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 uVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined3 in_register_00000018;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  byte *unaff_s0;\n  undefined1 *puVar14;\n  int unaff_s1;\n  undefined1 *puVar15;\n  uint16_t *unaff_s2;\n  undefined1 *puVar16;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar17;\n  undefined1 *unaff_s6;\n  int iVar18;\n  uint unaff_s7;\n  uint *puVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  uint unaff_s8;\n  ushort *puVar22;\n  ushort *puVar23;\n  ushort *puVar24;\n  code *pcVar25;\n  undefined1 auStack_104 [128];\n  int iStack_84;\n  byte *pbStack_80;\n  int iStack_7c;\n  uint16_t *puStack_78;\n  undefined1 *puStack_74;\n  undefined *puStack_70;\n  undefined4 *puStack_6c;\n  undefined1 *puStack_68;\n  uint uStack_64;\n  uint uStack_60;\n  code *pcStack_5c;\n  uint local_48;\n  uint local_44;\n  uint16_t u;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar20 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  puVar6 = (undefined4 *)CONCAT31(in_register_00000018,in_hex);\n  local_2c = *(int *)PTR___stack_chk_guard_00044ca0;\n  puVar12 = puVar6;\n  if (3 < len) {\n    unaff_s8 = (uint)*xp;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = xp;\n    if (2 < unaff_s7) {\n      unaff_s2 = &u;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = len;\n      do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  pcVar25 = show_device_stats_page;\n  puVar20 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar20 + 0x20100);\n  iStack_84 = *piVar5;\n  puVar3 = (undefined1 *)len;\n  puVar6 = puVar12;\n  pbStack_80 = unaff_s0;\n  iStack_7c = unaff_s1;\n  puStack_78 = unaff_s2;\n  puStack_74 = unaff_s3;\n  puStack_70 = unaff_s4;\n  puStack_6c = unaff_s5;\n  puStack_68 = unaff_s6;\n  uStack_64 = unaff_s7;\n  uStack_60 = unaff_s8;\n  pcStack_5c = pcVar25;\n  if ((puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))) {\n    (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68);\n  }\n  puVar16 = (undefined1 *)(len + -4);\n  puVar22 = (ushort *)(xp + 4);\n  if (3 < (int)puVar16) {\n    iVar11 = *(int *)(puVar20 + 0x20004);\n    iVar18 = *(int *)(puVar20 + 0x2000c);\n    iVar17 = *(int *)(puVar20 + 0x2000c);\n    cVar8 = *(char *)((int)puVar12 + 9);\n    iVar4 = *(int *)(puVar20 + 0x2000c);\n    iVar9 = *(int *)(puVar20 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;\n      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);\n      puVar13 = (undefined4 *)(uint)*puVar22;\n      puVar15 = puVar14 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }\n      puVar16 = puVar16 + -(int)puVar15;\n      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);\n    } while (3 < (int)puVar16);\n  }\n  if (iStack_84 == *piVar5) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar20 + 0x200f0);\n  iVar4 = iStack_84;\n  (*pcVar25)();\n  iVar9 = (**(code **)(pcVar25 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    else {\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    (*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8);\n    return;\n  }\n  uVar7 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar7;\n  return;\n}" primitive_type (function_declarator "volume_stats_partition(uint8_t *xp,int len,_Bool in_hex)" identifier (parameter_list "(uint8_t *xp,int len,_Bool in_hex)" ( (parameter_declaration "uint8_t *xp" primitive_type (pointer_declarator "*xp" * identifier)) , (parameter_declaration "int len" primitive_type identifier) , (parameter_declaration "_Bool in_hex" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 uVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined3 in_register_00000018;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  byte *unaff_s0;\n  undefined1 *puVar14;\n  int unaff_s1;\n  undefined1 *puVar15;\n  uint16_t *unaff_s2;\n  undefined1 *puVar16;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar17;\n  undefined1 *unaff_s6;\n  int iVar18;\n  uint unaff_s7;\n  uint *puVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  uint unaff_s8;\n  ushort *puVar22;\n  ushort *puVar23;\n  ushort *puVar24;\n  code *pcVar25;\n  undefined1 auStack_104 [128];\n  int iStack_84;\n  byte *pbStack_80;\n  int iStack_7c;\n  uint16_t *puStack_78;\n  undefined1 *puStack_74;\n  undefined *puStack_70;\n  undefined4 *puStack_6c;\n  undefined1 *puStack_68;\n  uint uStack_64;\n  uint uStack_60;\n  code *pcStack_5c;\n  uint local_48;\n  uint local_44;\n  uint16_t u;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar20 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  puVar6 = (undefined4 *)CONCAT31(in_register_00000018,in_hex);\n  local_2c = *(int *)PTR___stack_chk_guard_00044ca0;\n  puVar12 = puVar6;\n  if (3 < len) {\n    unaff_s8 = (uint)*xp;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = xp;\n    if (2 < unaff_s7) {\n      unaff_s2 = &u;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = len;\n      do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  pcVar25 = show_device_stats_page;\n  puVar20 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar20 + 0x20100);\n  iStack_84 = *piVar5;\n  puVar3 = (undefined1 *)len;\n  puVar6 = puVar12;\n  pbStack_80 = unaff_s0;\n  iStack_7c = unaff_s1;\n  puStack_78 = unaff_s2;\n  puStack_74 = unaff_s3;\n  puStack_70 = unaff_s4;\n  puStack_6c = unaff_s5;\n  puStack_68 = unaff_s6;\n  uStack_64 = unaff_s7;\n  uStack_60 = unaff_s8;\n  pcStack_5c = pcVar25;\n  if ((puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))) {\n    (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68);\n  }\n  puVar16 = (undefined1 *)(len + -4);\n  puVar22 = (ushort *)(xp + 4);\n  if (3 < (int)puVar16) {\n    iVar11 = *(int *)(puVar20 + 0x20004);\n    iVar18 = *(int *)(puVar20 + 0x2000c);\n    iVar17 = *(int *)(puVar20 + 0x2000c);\n    cVar8 = *(char *)((int)puVar12 + 9);\n    iVar4 = *(int *)(puVar20 + 0x2000c);\n    iVar9 = *(int *)(puVar20 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;\n      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);\n      puVar13 = (undefined4 *)(uint)*puVar22;\n      puVar15 = puVar14 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }\n      puVar16 = puVar16 + -(int)puVar15;\n      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);\n    } while (3 < (int)puVar16);\n  }\n  if (iStack_84 == *piVar5) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar20 + 0x200f0);\n  iVar4 = iStack_84;\n  (*pcVar25)();\n  iVar9 = (**(code **)(pcVar25 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    else {\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    (*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8);\n    return;\n  }\n  uVar7 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar7;\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int unaff_s1;" primitive_type identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint16_t *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined1 *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "undefined *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "undefined4 *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "uint unaff_s8;" type_identifier identifier ;) (declaration "ushort *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "ushort *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "ushort *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined1 auStack_104 [128];" type_identifier (array_declarator "auStack_104 [128]" identifier [ number_literal ]) ;) (declaration "int iStack_84;" primitive_type identifier ;) (declaration "byte *pbStack_80;" type_identifier (pointer_declarator "*pbStack_80" * identifier) ;) (declaration "int iStack_7c;" primitive_type identifier ;) (declaration "uint16_t *puStack_78;" primitive_type (pointer_declarator "*puStack_78" * identifier) ;) (declaration "undefined1 *puStack_74;" type_identifier (pointer_declarator "*puStack_74" * identifier) ;) (declaration "undefined *puStack_70;" type_identifier (pointer_declarator "*puStack_70" * identifier) ;) (declaration "undefined4 *puStack_6c;" type_identifier (pointer_declarator "*puStack_6c" * identifier) ;) (declaration "undefined1 *puStack_68;" type_identifier (pointer_declarator "*puStack_68" * identifier) ;) (declaration "uint uStack_64;" type_identifier identifier ;) (declaration "uint uStack_60;" type_identifier identifier ;) (declaration "code *pcStack_5c;" type_identifier (pointer_declarator "*pcStack_5c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint16_t u;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00044ca0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00044ca0" identifier = identifier) ;) (expression_statement "puVar20 = PTR_s_e_capacity_partition_s___MB___00044bac;" (assignment_expression "puVar20 = PTR_s_e_capacity_partition_s___MB___00044bac" identifier = identifier) ;) (expression_statement "puVar6 = (undefined4 *)CONCAT31(in_register_00000018,in_hex);" (assignment_expression "puVar6 = (undefined4 *)CONCAT31(in_register_00000018,in_hex)" identifier = (cast_expression "(undefined4 *)CONCAT31(in_register_00000018,in_hex)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(in_register_00000018,in_hex)" identifier (argument_list "(in_register_00000018,in_hex)" ( identifier , identifier ))))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00044ca0;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00044ca0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00044ca0" * (cast_expression "(int *)PTR___stack_chk_guard_00044ca0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar12 = puVar6;" (assignment_expression "puVar12 = puVar6" identifier = identifier) ;) (if_statement "if (3 < len) {\n    unaff_s8 = (uint)*xp;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = xp;\n    if (2 < unaff_s7) {\n      unaff_s2 = &u;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = len;\n      do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" if (parenthesized_expression "(3 < len)" ( (binary_expression "3 < len" number_literal < identifier) )) (compound_statement "{\n    unaff_s8 = (uint)*xp;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = xp;\n    if (2 < unaff_s7) {\n      unaff_s2 = &u;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = len;\n      do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" { (expression_statement "unaff_s8 = (uint)*xp;" (assignment_expression "unaff_s8 = (uint)*xp" identifier = (binary_expression "(uint)*xp" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" identifier = (binary_expression "unaff_s8 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = xp;" (assignment_expression "unaff_s0 = xp" identifier = identifier) ;) (if_statement "if (2 < unaff_s7) {\n      unaff_s2 = &u;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = len;\n      do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" if (parenthesized_expression "(2 < unaff_s7)" ( (binary_expression "2 < unaff_s7" number_literal < identifier) )) (compound_statement "{\n      unaff_s2 = &u;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = len;\n      do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" { (expression_statement "unaff_s2 = &u;" (assignment_expression "unaff_s2 = &u" identifier = (pointer_expression "&u" & identifier)) ;) (expression_statement "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;" (assignment_expression "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" identifier + number_literal)) ;) (expression_statement "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;" (assignment_expression "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" identifier + number_literal)) ;) (expression_statement "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;" (assignment_expression "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" identifier + number_literal)) ;) (expression_statement "unaff_s1 = len;" (assignment_expression "unaff_s1 = len" identifier = identifier) ;) (do_statement "do {\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);" do (compound_statement "{\n        u = *(uint16_t *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)u;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar12 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 - unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar20;\n        if (unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      }" { (expression_statement "u = *(uint16_t *)(unaff_s0 + 2);" (assignment_expression "u = *(uint16_t *)(unaff_s0 + 2)" identifier = (pointer_expression "*(uint16_t *)(unaff_s0 + 2)" * (cast_expression "(uint16_t *)(unaff_s0 + 2)" ( (type_descriptor "uint16_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s0 + 2)" ( (binary_expression "unaff_s0 + 2" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (undefined4 *)(uint)u;" (assignment_expression "unaff_s5 = (undefined4 *)(uint)u" identifier = (cast_expression "(undefined4 *)(uint)u" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)u" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);" (assignment_expression "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" identifier = (call_expression "(*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" (parenthesized_expression "(*(code *)PTR_sg_all_ffs_00044c68)" ( (pointer_expression "*(code *)PTR_sg_all_ffs_00044c68" * (cast_expression "(code *)PTR_sg_all_ffs_00044c68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0 + 4,unaff_s8 - 2)" ( (binary_expression "unaff_s0 + 4" identifier + number_literal) , (binary_expression "unaff_s8 - 2" identifier - number_literal) )))) ;) (expression_statement "puVar12 = unaff_s5;" (assignment_expression "puVar12 = unaff_s5" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }" { (labeled_statement "LAB_00024a4c:\n          local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }" if (parenthesized_expression "(unaff_s8 - 4 < 8)" ( (binary_expression "unaff_s8 - 4 < 8" (binary_expression "unaff_s8 - 4" identifier - number_literal) < number_literal) )) (compound_statement "{\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }" { (expression_statement "local_44 = (uint)unaff_s0[4];" (assignment_expression "local_44 = (uint)unaff_s0[4]" identifier = (cast_expression "(uint)unaff_s0[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "unaff_s0[4]" identifier [ number_literal ]))) ;) (expression_statement "pbVar10 = unaff_s0 + 5;" (assignment_expression "pbVar10 = unaff_s0 + 5" identifier = (binary_expression "unaff_s0 + 5" identifier + number_literal)) ;) (if_statement "if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" if (parenthesized_expression "(4 < unaff_s8)" ( (binary_expression "4 < unaff_s8" number_literal < identifier) )) (compound_statement "{\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" { (do_statement "do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);" do (compound_statement "{\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              }" { (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_48 = local_44 >> 0x18 | local_48 << 8;" (assignment_expression "local_48 = local_44 >> 0x18 | local_48 << 8" identifier = (binary_expression "local_44 >> 0x18 | local_48 << 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "local_48 << 8" identifier << number_literal))) ;) (expression_statement "local_44 = (uint)bVar1 | local_44 << 8;" (assignment_expression "local_44 = (uint)bVar1 | local_44 << 8" identifier = (binary_expression "(uint)bVar1 | local_44 << 8" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "local_44 << 8" identifier << number_literal))) ;) }) while (parenthesized_expression "(unaff_s0 + unaff_s7 != pbVar10)" ( (binary_expression "unaff_s0 + unaff_s7 != pbVar10" (binary_expression "unaff_s0 + unaff_s7" identifier + identifier) != identifier) )) ;) })) }) (else_clause "else {\n            local_44 = 0;\n          }" else (compound_statement "{\n            local_44 = 0;\n          }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) }))) (if_statement "if (puVar6 == (undefined4 *)0x0) {\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" if (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            xp = (uint8_t *)0x1;\n            len = (int)unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" { (expression_statement "xp = (uint8_t *)0x1;" (assignment_expression "xp = (uint8_t *)0x1" identifier = (cast_expression "(uint8_t *)0x1" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "len = (int)unaff_s6;" (assignment_expression "len = (int)unaff_s6" identifier = (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" else (compound_statement "{\n            xp = (uint8_t *)0x1;\n            len = (int)puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" { (expression_statement "xp = (uint8_t *)0x1;" (assignment_expression "xp = (uint8_t *)0x1" identifier = (cast_expression "(uint8_t *)0x1" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "len = (int)puVar3;" (assignment_expression "len = (int)puVar3" identifier = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) }) (else_clause "else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" else (if_statement "if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" if (parenthesized_expression "(unaff_s0[unaff_s8 + 2] == 0xfe)" ( (binary_expression "unaff_s0[unaff_s8 + 2] == 0xfe" (subscript_expression "unaff_s0[unaff_s8 + 2]" identifier [ (binary_expression "unaff_s8 + 2" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n          len = (int)(puVar20 + -0xcd0);\n          xp = (uint8_t *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" { (expression_statement "len = (int)(puVar20 + -0xcd0);" (assignment_expression "len = (int)(puVar20 + -0xcd0)" identifier = (cast_expression "(int)(puVar20 + -0xcd0)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar20 + -0xcd0)" ( (binary_expression "puVar20 + -0xcd0" identifier + number_literal) )))) ;) (expression_statement "xp = (uint8_t *)0x1;" (assignment_expression "xp = (uint8_t *)0x1" identifier = (cast_expression "(uint8_t *)0x1" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" else (compound_statement "{\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          xp = (uint8_t *)0x1;\n          len = (int)unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" { (if_statement "if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;" if (parenthesized_expression "(unaff_s0[unaff_s8 + 2] != 0xff)" ( (binary_expression "unaff_s0[unaff_s8 + 2] != 0xff" (subscript_expression "unaff_s0[unaff_s8 + 2]" identifier [ (binary_expression "unaff_s8 + 2" identifier + number_literal) ]) != number_literal) )) (goto_statement "goto LAB_00024a4c;" goto statement_identifier ;)) (expression_statement "xp = (uint8_t *)0x1;" (assignment_expression "xp = (uint8_t *)0x1" identifier = (cast_expression "(uint8_t *)0x1" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "len = (int)unaff_s3;" (assignment_expression "len = (int)unaff_s3" identifier = (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))))) (expression_statement "unaff_s1 = unaff_s1 - unaff_s7;" (assignment_expression "unaff_s1 = unaff_s1 - unaff_s7" identifier = (binary_expression "unaff_s1 - unaff_s7" identifier - identifier)) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s7;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s7" identifier = (binary_expression "unaff_s0 + unaff_s7" identifier + identifier)) ;) (expression_statement "unaff_s4 = puVar20;" (assignment_expression "unaff_s4 = puVar20" identifier = identifier) ;) (if_statement "if (unaff_s1 < 4) break;" if (parenthesized_expression "(unaff_s1 < 4)" ( (binary_expression "unaff_s1 < 4" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "unaff_s8 = (uint)*unaff_s0;" (assignment_expression "unaff_s8 = (uint)*unaff_s0" identifier = (binary_expression "(uint)*unaff_s0" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" identifier = (binary_expression "unaff_s8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(2 < unaff_s7)" ( (binary_expression "2 < unaff_s7" number_literal < identifier) )) ;) })) })) (if_statement "if (local_2c == *(int *)puVar2) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar25 = show_device_stats_page;" (assignment_expression "pcVar25 = show_device_stats_page" identifier = identifier) ;) (expression_statement "puVar20 = PTR___stack_chk_fail_00044c90;" (assignment_expression "puVar20 = PTR___stack_chk_fail_00044c90" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00044c90)();" (call_expression "(*(code *)PTR___stack_chk_fail_00044c90)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00044c90)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00044c90" * (cast_expression "(code *)PTR___stack_chk_fail_00044c90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = *(int **)(puVar20 + 0x20100);" (assignment_expression "piVar5 = *(int **)(puVar20 + 0x20100)" identifier = (pointer_expression "*(int **)(puVar20 + 0x20100)" * (cast_expression "(int **)(puVar20 + 0x20100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20100)" ( (binary_expression "puVar20 + 0x20100" identifier + number_literal) ))))) ;) (expression_statement "iStack_84 = *piVar5;" (assignment_expression "iStack_84 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "puVar3 = (undefined1 *)len;" (assignment_expression "puVar3 = (undefined1 *)len" identifier = (cast_expression "(undefined1 *)len" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (expression_statement "pbStack_80 = unaff_s0;" (assignment_expression "pbStack_80 = unaff_s0" identifier = identifier) ;) (expression_statement "iStack_7c = unaff_s1;" (assignment_expression "iStack_7c = unaff_s1" identifier = identifier) ;) (expression_statement "puStack_78 = unaff_s2;" (assignment_expression "puStack_78 = unaff_s2" identifier = identifier) ;) (expression_statement "puStack_74 = unaff_s3;" (assignment_expression "puStack_74 = unaff_s3" identifier = identifier) ;) (expression_statement "puStack_70 = unaff_s4;" (assignment_expression "puStack_70 = unaff_s4" identifier = identifier) ;) (expression_statement "puStack_6c = unaff_s5;" (assignment_expression "puStack_6c = unaff_s5" identifier = identifier) ;) (expression_statement "puStack_68 = unaff_s6;" (assignment_expression "puStack_68 = unaff_s6" identifier = identifier) ;) (expression_statement "uStack_64 = unaff_s7;" (assignment_expression "uStack_64 = unaff_s7" identifier = identifier) ;) (expression_statement "uStack_60 = unaff_s8;" (assignment_expression "uStack_60 = unaff_s8" identifier = identifier) ;) (expression_statement "pcStack_5c = pcVar25;" (assignment_expression "pcStack_5c = pcVar25" identifier = identifier) ;) (if_statement "if ((puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))) {\n    (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68);\n  }" if (parenthesized_expression "((puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0))))" ( (binary_expression "(puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))" (parenthesized_expression "(puVar12[0xc] != 0)" ( (binary_expression "puVar12[0xc] != 0" (subscript_expression "puVar12[0xc]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))" ( (parenthesized_expression "(*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0))" ( (binary_expression "*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)" (binary_expression "*(char *)((int)puVar12 + 3) == '\0'" (pointer_expression "*(char *)((int)puVar12 + 3)" * (cast_expression "(char *)((int)puVar12 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 3)" ( (binary_expression "(int)puVar12 + 3" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(puVar12[8] == 0)" ( (binary_expression "puVar12[8] == 0" (subscript_expression "puVar12[8]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\n    (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68);\n  }" { (expression_statement "(**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68);" (call_expression "(**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0xc68)" (parenthesized_expression "(**(code **)(puVar20 + 0x200d0))" ( (pointer_expression "**(code **)(puVar20 + 0x200d0)" * (pointer_expression "*(code **)(puVar20 + 0x200d0)" * (cast_expression "(code **)(puVar20 + 0x200d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x200d0)" ( (binary_expression "puVar20 + 0x200d0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar20 + 0x2000c) + -0xc68)" ( (binary_expression "*(int *)(puVar20 + 0x2000c) + -0xc68" (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "puVar16 = (undefined1 *)(len + -4);" (assignment_expression "puVar16 = (undefined1 *)(len + -4)" identifier = (cast_expression "(undefined1 *)(len + -4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(len + -4)" ( (binary_expression "len + -4" identifier + number_literal) )))) ;) (expression_statement "puVar22 = (ushort *)(xp + 4);" (assignment_expression "puVar22 = (ushort *)(xp + 4)" identifier = (cast_expression "(ushort *)(xp + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(xp + 4)" ( (binary_expression "xp + 4" identifier + number_literal) )))) ;) (if_statement "if (3 < (int)puVar16) {\n    iVar11 = *(int *)(puVar20 + 0x20004);\n    iVar18 = *(int *)(puVar20 + 0x2000c);\n    iVar17 = *(int *)(puVar20 + 0x2000c);\n    cVar8 = *(char *)((int)puVar12 + 9);\n    iVar4 = *(int *)(puVar20 + 0x2000c);\n    iVar9 = *(int *)(puVar20 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;\n      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);\n      puVar13 = (undefined4 *)(uint)*puVar22;\n      puVar15 = puVar14 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }\n      puVar16 = puVar16 + -(int)puVar15;\n      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);\n    } while (3 < (int)puVar16);\n  }" if (parenthesized_expression "(3 < (int)puVar16)" ( (binary_expression "3 < (int)puVar16" number_literal < (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar11 = *(int *)(puVar20 + 0x20004);\n    iVar18 = *(int *)(puVar20 + 0x2000c);\n    iVar17 = *(int *)(puVar20 + 0x2000c);\n    cVar8 = *(char *)((int)puVar12 + 9);\n    iVar4 = *(int *)(puVar20 + 0x2000c);\n    iVar9 = *(int *)(puVar20 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;\n      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);\n      puVar13 = (undefined4 *)(uint)*puVar22;\n      puVar15 = puVar14 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }\n      puVar16 = puVar16 + -(int)puVar15;\n      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);\n    } while (3 < (int)puVar16);\n  }" { (expression_statement "iVar11 = *(int *)(puVar20 + 0x20004);" (assignment_expression "iVar11 = *(int *)(puVar20 + 0x20004)" identifier = (pointer_expression "*(int *)(puVar20 + 0x20004)" * (cast_expression "(int *)(puVar20 + 0x20004)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x20004)" ( (binary_expression "puVar20 + 0x20004" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = *(int *)(puVar20 + 0x2000c);" (assignment_expression "iVar18 = *(int *)(puVar20 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *(int *)(puVar20 + 0x2000c);" (assignment_expression "iVar17 = *(int *)(puVar20 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "cVar8 = *(char *)((int)puVar12 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar12 + 9)" identifier = (pointer_expression "*(char *)((int)puVar12 + 9)" * (cast_expression "(char *)((int)puVar12 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 9)" ( (binary_expression "(int)puVar12 + 9" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar20 + 0x2000c);" (assignment_expression "iVar4 = *(int *)(puVar20 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(puVar20 + 0x2000c);" (assignment_expression "iVar9 = *(int *)(puVar20 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) ))))) ;) (do_statement "do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;\n      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);\n      puVar13 = (undefined4 *)(uint)*puVar22;\n      puVar15 = puVar14 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }\n      puVar16 = puVar16 + -(int)puVar15;\n      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);\n    } while (3 < (int)puVar16);" do (compound_statement "{\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar22;\n      puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);\n      puVar13 = (undefined4 *)(uint)*puVar22;\n      puVar15 = puVar14 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }\n      puVar16 = puVar16 + -(int)puVar15;\n      puVar22 = (ushort *)((int)puVar22 + (int)puVar15);\n    }" { (expression_statement "puVar3 = (undefined1 *)(uint)*(byte *)puVar22;" (assignment_expression "puVar3 = (undefined1 *)(uint)*(byte *)puVar22" identifier = (binary_expression "(undefined1 *)(uint)*(byte *)puVar22" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3);" (assignment_expression "puVar14 = (undefined1 *)(uint)*(byte *)((int)puVar22 + 3)" identifier = (binary_expression "(undefined1 *)(uint)*(byte *)((int)puVar22 + 3)" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)((int)puVar22 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 3)" ( (binary_expression "(int)puVar22 + 3" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar13 = (undefined4 *)(uint)*puVar22;" (assignment_expression "puVar13 = (undefined4 *)(uint)*puVar22" identifier = (binary_expression "(undefined4 *)(uint)*puVar22" (cast_expression "(undefined4 *)(uint)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "puVar15 = puVar14 + 4;" (assignment_expression "puVar15 = puVar14 + 4" identifier = (binary_expression "puVar14 + 4" identifier + number_literal)) ;) (if_statement "if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar12 + 9);\n        puVar6 = puVar13;\n        if (cVar8 != '\0') break;\n      }" { (labeled_statement "LAB_00024c9c:\n        if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }" statement_identifier : (if_statement "if (puVar13 < (undefined4 *)0x1000) {\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }\n        else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }" if (parenthesized_expression "(puVar13 < (undefined4 *)0x1000)" ( (binary_expression "puVar13 < (undefined4 *)0x1000" identifier < (cast_expression "(undefined4 *)0x1000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }\n          (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);\n          puVar13 = (undefined4 *)0x0;\n          (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n          puVar3 = puVar14;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }" { (if_statement "if (puVar13 < (undefined4 *)0x82) {\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }" if (parenthesized_expression "(puVar13 < (undefined4 *)0x82)" ( (binary_expression "puVar13 < (undefined4 *)0x82" identifier < (cast_expression "(undefined4 *)0x82" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            (*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();\n            return;\n          }" { comment comment (expression_statement "(*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))();" (call_expression "(*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))()" (parenthesized_expression "(*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)))" ( (pointer_expression "*(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670))" * (cast_expression "(code *)(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670))" ( (binary_expression "puVar20 +\n                      (int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)" identifier + (cast_expression "(int)(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(\n                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670)" ( (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4) +\n                             0x670" (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                           + *(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4)" (string_literal ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") + (pointer_expression "*(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4)" * (cast_expression "(int *)(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4)" ( (binary_expression "*(int *)(puVar20 + 0x2000c) + 0x2b80 + (int)puVar13 * 4" (binary_expression "*(int *)(puVar20 + 0x2000c) + 0x2b80" (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) )))) + number_literal) + (binary_expression "(int)puVar13 * 4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) + number_literal) )))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "(**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718);" (call_expression "(**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x718)" (parenthesized_expression "(**(code **)(puVar20 + 0x20088))" ( (pointer_expression "**(code **)(puVar20 + 0x20088)" * (pointer_expression "*(code **)(puVar20 + 0x20088)" * (cast_expression "(code **)(puVar20 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20088)" ( (binary_expression "puVar20 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar20 + 0x2000c) + -0x718)" ( number_literal , (binary_expression "*(int *)(puVar20 + 0x2000c) + -0x718" (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar13 = (undefined4 *)0x0;" (assignment_expression "puVar13 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(puVar20 + 0x200e0))(puVar22 + 2);" (call_expression "(**(code **)(puVar20 + 0x200e0))(puVar22 + 2)" (parenthesized_expression "(**(code **)(puVar20 + 0x200e0))" ( (pointer_expression "**(code **)(puVar20 + 0x200e0)" * (pointer_expression "*(code **)(puVar20 + 0x200e0)" * (cast_expression "(code **)(puVar20 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x200e0)" ( (binary_expression "puVar20 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar22 + 2)" ( (binary_expression "puVar22 + 2" identifier + number_literal) ))) ;) (expression_statement "puVar3 = puVar14;" (assignment_expression "puVar3 = puVar14" identifier = identifier) ;) (labeled_statement "LAB_00024d18:\n          cVar8 = *(char *)((int)puVar12 + 1);" statement_identifier : (expression_statement "cVar8 = *(char *)((int)puVar12 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar12 + 1)" identifier = (pointer_expression "*(char *)((int)puVar12 + 1)" * (cast_expression "(char *)((int)puVar12 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 1)" ( (binary_expression "(int)puVar12 + 1" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) }) (else_clause "else {\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }" else (compound_statement "{\n          if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);\n          if (puVar14 < &DAT_00000008) goto LAB_00024d18;\n          puVar19 = (uint *)(puVar22 + 4);\n          do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar12 + 1);\n        }" { (if_statement "if (puVar13 != (undefined4 *)0x1000) {\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }" if (parenthesized_expression "(puVar13 != (undefined4 *)0x1000)" ( (binary_expression "puVar13 != (undefined4 *)0x1000" identifier != (cast_expression "(undefined4 *)0x1000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }\n            puVar13 = (undefined4 *)0x0;\n            (**(code **)(puVar20 + 0x200e0))(puVar22 + 2);\n            puVar3 = puVar14;\n            goto LAB_00024d18;\n          }" { (if_statement "if (puVar13 < (undefined4 *)0x8000) {\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }" if (parenthesized_expression "(puVar13 < (undefined4 *)0x8000)" ( (binary_expression "puVar13 < (undefined4 *)0x8000" identifier < (cast_expression "(undefined4 *)0x8000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              (**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);\n            }" { (expression_statement "(**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634);" (call_expression "(**(code **)(puVar20 + 0x20088))(1,iVar9 + -0x634)" (parenthesized_expression "(**(code **)(puVar20 + 0x20088))" ( (pointer_expression "**(code **)(puVar20 + 0x20088)" * (pointer_expression "*(code **)(puVar20 + 0x20088)" * (cast_expression "(code **)(puVar20 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20088)" ( (binary_expression "puVar20 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,iVar9 + -0x634)" ( number_literal , (binary_expression "iVar9 + -0x634" identifier + number_literal) ))) ;) }) (else_clause "else {\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }" else (compound_statement "{\n              (**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);\n            }" { (expression_statement "(**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668);" (call_expression "(**(code **)(puVar20 + 0x20088))(1,*(int *)(puVar20 + 0x2000c) + -0x668)" (parenthesized_expression "(**(code **)(puVar20 + 0x20088))" ( (pointer_expression "**(code **)(puVar20 + 0x20088)" * (pointer_expression "*(code **)(puVar20 + 0x20088)" * (cast_expression "(code **)(puVar20 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20088)" ( (binary_expression "puVar20 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar20 + 0x2000c) + -0x668)" ( number_literal , (binary_expression "*(int *)(puVar20 + 0x2000c) + -0x668" (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) }))) (expression_statement "puVar13 = (undefined4 *)0x0;" (assignment_expression "puVar13 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(puVar20 + 0x200e0))(puVar22 + 2);" (call_expression "(**(code **)(puVar20 + 0x200e0))(puVar22 + 2)" (parenthesized_expression "(**(code **)(puVar20 + 0x200e0))" ( (pointer_expression "**(code **)(puVar20 + 0x200e0)" * (pointer_expression "*(code **)(puVar20 + 0x200e0)" * (cast_expression "(code **)(puVar20 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x200e0)" ( (binary_expression "puVar20 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar22 + 2)" ( (binary_expression "puVar22 + 2" identifier + number_literal) ))) ;) (expression_statement "puVar3 = puVar14;" (assignment_expression "puVar3 = puVar14" identifier = identifier) ;) (goto_statement "goto LAB_00024d18;" goto statement_identifier ;) })) (expression_statement "(**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8);" (call_expression "(**(code **)(puVar20 + 0x200d0))(*(int *)(puVar20 + 0x2000c) + -0x6e8)" (parenthesized_expression "(**(code **)(puVar20 + 0x200d0))" ( (pointer_expression "**(code **)(puVar20 + 0x200d0)" * (pointer_expression "*(code **)(puVar20 + 0x200d0)" * (cast_expression "(code **)(puVar20 + 0x200d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x200d0)" ( (binary_expression "puVar20 + 0x200d0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar20 + 0x2000c) + -0x6e8)" ( (binary_expression "*(int *)(puVar20 + 0x2000c) + -0x6e8" (pointer_expression "*(int *)(puVar20 + 0x2000c)" * (cast_expression "(int *)(puVar20 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x2000c)" ( (binary_expression "puVar20 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) (if_statement "if (puVar14 < &DAT_00000008) goto LAB_00024d18;" if (parenthesized_expression "(puVar14 < &DAT_00000008)" ( (binary_expression "puVar14 < &DAT_00000008" identifier < (pointer_expression "&DAT_00000008" & identifier)) )) (goto_statement "goto LAB_00024d18;" goto statement_identifier ;)) (expression_statement "puVar19 = (uint *)(puVar22 + 4);" (assignment_expression "puVar19 = (uint *)(puVar22 + 4)" identifier = (cast_expression "(uint *)(puVar22 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 4)" ( (binary_expression "puVar22 + 4" identifier + number_literal) )))) ;) (do_statement "do {\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          } while (puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10));" do (compound_statement "{\n            (**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));\n            puVar13 = (undefined4 *)*puVar19;\n            puVar19 = puVar19 + 2;\n            puVar3 = (undefined1 *)(iVar17 + -0x688);\n            (**(code **)(puVar20 + 0x20088))(1);\n          }" { (expression_statement "(**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1));" (call_expression "(**(code **)(puVar20 + 0x20088))\n                      (1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1))" (parenthesized_expression "(**(code **)(puVar20 + 0x20088))" ( (pointer_expression "**(code **)(puVar20 + 0x20088)" * (pointer_expression "*(code **)(puVar20 + 0x20088)" * (cast_expression "(code **)(puVar20 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20088)" ( (binary_expression "puVar20 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,iVar18 + -0x6b4,*(byte *)((int)puVar19 + -2),*(byte *)((int)puVar19 + -1))" ( number_literal , (binary_expression "iVar18 + -0x6b4" identifier + number_literal) , (pointer_expression "*(byte *)((int)puVar19 + -2)" * (cast_expression "(byte *)((int)puVar19 + -2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 + -2)" ( (binary_expression "(int)puVar19 + -2" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar19 + -1)" * (cast_expression "(byte *)((int)puVar19 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 + -1)" ( (binary_expression "(int)puVar19 + -1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "puVar13 = (undefined4 *)*puVar19;" (assignment_expression "puVar13 = (undefined4 *)*puVar19" identifier = (cast_expression "(undefined4 *)*puVar19" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar19 = puVar19 + 2;" (assignment_expression "puVar19 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (expression_statement "puVar3 = (undefined1 *)(iVar17 + -0x688);" (assignment_expression "puVar3 = (undefined1 *)(iVar17 + -0x688)" identifier = (cast_expression "(undefined1 *)(iVar17 + -0x688)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x688)" ( (binary_expression "iVar17 + -0x688" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(puVar20 + 0x20088))(1);" (call_expression "(**(code **)(puVar20 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar20 + 0x20088))" ( (pointer_expression "**(code **)(puVar20 + 0x20088)" * (pointer_expression "*(code **)(puVar20 + 0x20088)" * (cast_expression "(code **)(puVar20 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20088)" ( (binary_expression "puVar20 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1)" ( number_literal ))) ;) }) while (parenthesized_expression "(puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10))" ( (binary_expression "puVar19 != (uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10)" identifier != (cast_expression "(uint *)((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10)" ( (binary_expression "(int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8) + 0x10" (binary_expression "(int)puVar22 + ((uint)(puVar14 + -8) & 0xfffffff8)" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)(puVar14 + -8) & 0xfffffff8)" ( (binary_expression "(uint)(puVar14 + -8) & 0xfffffff8" (call_expression "(uint)(puVar14 + -8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar14 + -8)" ( (binary_expression "puVar14 + -8" identifier + number_literal) ))) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "cVar8 = *(char *)((int)puVar12 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar12 + 1)" identifier = (pointer_expression "*(char *)((int)puVar12 + 1)" * (cast_expression "(char *)((int)puVar12 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 1)" ( (binary_expression "(int)puVar12 + 1" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })))) (if_statement "if (cVar8 != '\0') {\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar20 + 0x20088))(1);\n        }" { (expression_statement "puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104);" (assignment_expression "puVar13 = (undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104)" identifier = (cast_expression "(undefined4 *)\n                    (*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(&DAT_00004b24 + iVar11))(*(byte *)(puVar22 + 1),auStack_104)" (parenthesized_expression "(*(code *)(&DAT_00004b24 + iVar11))" ( (pointer_expression "*(code *)(&DAT_00004b24 + iVar11)" * (cast_expression "(code *)(&DAT_00004b24 + iVar11)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00004b24 + iVar11)" ( (binary_expression "&DAT_00004b24 + iVar11" (pointer_expression "&DAT_00004b24" & identifier) + identifier) )))) )) (argument_list "(*(byte *)(puVar22 + 1),auStack_104)" ( (pointer_expression "*(byte *)(puVar22 + 1)" * (cast_expression "(byte *)(puVar22 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 1)" ( (binary_expression "puVar22 + 1" identifier + number_literal) )))) , identifier ))))) ;) (expression_statement "puVar3 = (undefined1 *)(iVar4 + -0x70e4);" (assignment_expression "puVar3 = (undefined1 *)(iVar4 + -0x70e4)" identifier = (cast_expression "(undefined1 *)(iVar4 + -0x70e4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x70e4)" ( (binary_expression "iVar4 + -0x70e4" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(puVar20 + 0x20088))(1);" (call_expression "(**(code **)(puVar20 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar20 + 0x20088))" ( (pointer_expression "**(code **)(puVar20 + 0x20088)" * (pointer_expression "*(code **)(puVar20 + 0x20088)" * (cast_expression "(code **)(puVar20 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20088)" ( (binary_expression "puVar20 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1)" ( number_literal ))) ;) })) (expression_statement "cVar8 = *(char *)((int)puVar12 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar12 + 9)" identifier = (pointer_expression "*(char *)((int)puVar12 + 9)" * (cast_expression "(char *)((int)puVar12 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 9)" ( (binary_expression "(int)puVar12 + 9" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar6 = puVar13;" (assignment_expression "puVar6 = puVar13" identifier = identifier) ;) (if_statement "if (cVar8 != '\0') break;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else {\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }" else (compound_statement "{\n        puVar6 = puVar13;\n        if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }\n      }" { (expression_statement "puVar6 = puVar13;" (assignment_expression "puVar6 = puVar13" identifier = identifier) ;) (if_statement "if ((undefined4 *)puVar12[0xd] == puVar13) {\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }" if (parenthesized_expression "((undefined4 *)puVar12[0xd] == puVar13)" ( (binary_expression "(undefined4 *)puVar12[0xd] == puVar13" (cast_expression "(undefined4 *)puVar12[0xd]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[0xd]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar12[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar20 + 0x200e0))(puVar22);\n          puVar3 = puVar15;\n          break;\n        }" { (if_statement "if (*(char *)((int)puVar12 + 3) != '\0') {\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }" if (parenthesized_expression "(*(char *)((int)puVar12 + 3) != '\0')" ( (binary_expression "*(char *)((int)puVar12 + 3) != '\0'" (pointer_expression "*(char *)((int)puVar12 + 3)" * (cast_expression "(char *)((int)puVar12 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 3)" ( (binary_expression "(int)puVar12 + 3" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar23 = puVar22;\n            do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);\n            break;\n          }" { (expression_statement "puVar23 = puVar22;" (assignment_expression "puVar23 = puVar22" identifier = identifier) ;) (do_statement "do {\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            } while ((ushort *)((int)puVar22 + (int)puVar15) != puVar24);" do (compound_statement "{\n              puVar24 = (ushort *)((int)puVar23 + 1);\n              (**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);\n              puVar6 = puVar13;\n              puVar23 = puVar24;\n            }" { (expression_statement "puVar24 = (ushort *)((int)puVar23 + 1);" (assignment_expression "puVar24 = (ushort *)((int)puVar23 + 1)" identifier = (cast_expression "(ushort *)((int)puVar23 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 1)" ( (binary_expression "(int)puVar23 + 1" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar20 + 0x20094))(*(byte *)puVar23);" (call_expression "(**(code **)(puVar20 + 0x20094))(*(byte *)puVar23)" (parenthesized_expression "(**(code **)(puVar20 + 0x20094))" ( (pointer_expression "**(code **)(puVar20 + 0x20094)" * (pointer_expression "*(code **)(puVar20 + 0x20094)" * (cast_expression "(code **)(puVar20 + 0x20094)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x20094)" ( (binary_expression "puVar20 + 0x20094" identifier + number_literal) ))))) )) (argument_list "(*(byte *)puVar23)" ( (pointer_expression "*(byte *)puVar23" * (cast_expression "(byte *)puVar23" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "puVar6 = puVar13;" (assignment_expression "puVar6 = puVar13" identifier = identifier) ;) (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" identifier = identifier) ;) }) while (parenthesized_expression "((ushort *)((int)puVar22 + (int)puVar15) != puVar24)" ( (binary_expression "(ushort *)((int)puVar22 + (int)puVar15) != puVar24" (cast_expression "(ushort *)((int)puVar22 + (int)puVar15)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + (int)puVar15)" ( (binary_expression "(int)puVar22 + (int)puVar15" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))) != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "puVar6 = (undefined4 *)puVar12[8];" (assignment_expression "puVar6 = (undefined4 *)puVar12[8]" identifier = (cast_expression "(undefined4 *)puVar12[8]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[8]" identifier [ number_literal ]))) ;) (if_statement "if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;" if (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00024c9c;" goto statement_identifier ;)) (if_statement "if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }" if (parenthesized_expression "(puVar6 != (undefined4 *)0x1)" ( (binary_expression "puVar6 != (undefined4 *)0x1" identifier != (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar6 = (undefined4 *)0xffffffff;\n          }" { (expression_statement "puVar6 = (undefined4 *)0xffffffff;" (assignment_expression "puVar6 = (undefined4 *)0xffffffff" identifier = (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "(**(code **)(puVar20 + 0x200e0))(puVar22);" (call_expression "(**(code **)(puVar20 + 0x200e0))(puVar22)" (parenthesized_expression "(**(code **)(puVar20 + 0x200e0))" ( (pointer_expression "**(code **)(puVar20 + 0x200e0)" * (pointer_expression "*(code **)(puVar20 + 0x200e0)" * (cast_expression "(code **)(puVar20 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x200e0)" ( (binary_expression "puVar20 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar22)" ( identifier ))) ;) (expression_statement "puVar3 = puVar15;" (assignment_expression "puVar3 = puVar15" identifier = identifier) ;) (break_statement "break;" break ;) })) }))) (expression_statement "puVar16 = puVar16 + -(int)puVar15;" (assignment_expression "puVar16 = puVar16 + -(int)puVar15" identifier = (binary_expression "puVar16 + -(int)puVar15" identifier + (unary_expression "-(int)puVar15" - (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "puVar22 = (ushort *)((int)puVar22 + (int)puVar15);" (assignment_expression "puVar22 = (ushort *)((int)puVar22 + (int)puVar15)" identifier = (cast_expression "(ushort *)((int)puVar22 + (int)puVar15)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + (int)puVar15)" ( (binary_expression "(int)puVar22 + (int)puVar15" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) while (parenthesized_expression "(3 < (int)puVar16)" ( (binary_expression "3 < (int)puVar16" number_literal < (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if (iStack_84 == *piVar5) {\n    return;\n  }" if (parenthesized_expression "(iStack_84 == *piVar5)" ( (binary_expression "iStack_84 == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar25 = *(code **)(puVar20 + 0x200f0);" (assignment_expression "pcVar25 = *(code **)(puVar20 + 0x200f0)" identifier = (pointer_expression "*(code **)(puVar20 + 0x200f0)" * (cast_expression "(code **)(puVar20 + 0x200f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x200f0)" ( (binary_expression "puVar20 + 0x200f0" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = iStack_84;" (assignment_expression "iVar4 = iStack_84" identifier = identifier) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar9 = (**(code **)(pcVar25 + 0x1f98c))();" (assignment_expression "iVar9 = (**(code **)(pcVar25 + 0x1f98c))()" identifier = (call_expression "(**(code **)(pcVar25 + 0x1f98c))()" (parenthesized_expression "(**(code **)(pcVar25 + 0x1f98c))" ( (pointer_expression "**(code **)(pcVar25 + 0x1f98c)" * (pointer_expression "*(code **)(pcVar25 + 0x1f98c)" * (cast_expression "(code **)(pcVar25 + 0x1f98c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x1f98c)" ( (binary_expression "pcVar25 + 0x1f98c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    else {\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    (*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8);\n    return;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    else {\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    (*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8);\n    return;\n  }" { (if_statement "if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }\n    else {\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }" if (parenthesized_expression "((puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1))" ( (binary_expression "(puVar3 + -1 < &DAT_00000008) &&\n       (puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" (parenthesized_expression "(puVar3 + -1 < &DAT_00000008)" ( (binary_expression "puVar3 + -1 < &DAT_00000008" (binary_expression "puVar3 + -1" identifier + number_literal) < (pointer_expression "&DAT_00000008" & identifier)) )) && (parenthesized_expression "(puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" ( (comma_expression "puVar16 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1" (assignment_expression "puVar16 = (undefined1 *)(iVar4 + 1)" identifier = (cast_expression "(undefined1 *)(iVar4 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )))) , (binary_expression "puVar3 != (undefined1 *)0x1" identifier != (cast_expression "(undefined1 *)0x1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }" { (do_statement "do {\n        puVar16 = puVar16 + 1;\n      } while (puVar3 + iVar4 != puVar16);" do (compound_statement "{\n        puVar16 = puVar16 + 1;\n      }" { (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + iVar4 != puVar16)" ( (binary_expression "puVar3 + iVar4 != puVar16" (binary_expression "puVar3 + iVar4" identifier + identifier) != identifier) )) ;) (expression_statement "pcVar21 = *(code **)(pcVar25 + 0x1f9e4);" (assignment_expression "pcVar21 = *(code **)(pcVar25 + 0x1f9e4)" identifier = (pointer_expression "*(code **)(pcVar25 + 0x1f9e4)" * (cast_expression "(code **)(pcVar25 + 0x1f9e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x1f9e4)" ( (binary_expression "pcVar25 + 0x1f9e4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }" else (compound_statement "{\n      pcVar21 = *(code **)(pcVar25 + 0x1f9e4);\n    }" { (expression_statement "pcVar21 = *(code **)(pcVar25 + 0x1f9e4);" (assignment_expression "pcVar21 = *(code **)(pcVar25 + 0x1f9e4)" identifier = (pointer_expression "*(code **)(pcVar25 + 0x1f9e4)" * (cast_expression "(code **)(pcVar25 + 0x1f9e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x1f9e4)" ( (binary_expression "pcVar25 + 0x1f9e4" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8);" (call_expression "(*pcVar21)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar6,0x40,1,0xffffffff,*(int *)(pcVar25 + 0x1f8d0) + -0x43e8)" ( identifier , number_literal , number_literal , number_literal , (binary_expression "*(int *)(pcVar25 + 0x1f8d0) + -0x43e8" (pointer_expression "*(int *)(pcVar25 + 0x1f8d0)" * (cast_expression "(int *)(pcVar25 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar25 + 0x1f8d0)" ( (binary_expression "pcVar25 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar7 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430)" * (cast_expression "(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3430)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar25 + 0x1f8d0) + -0x3430)" ( (binary_expression "*(int *)(pcVar25 + 0x1f8d0) + -0x3430" (pointer_expression "*(int *)(pcVar25 + 0x1f8d0)" * (cast_expression "(int *)(pcVar25 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar25 + 0x1f8d0)" ( (binary_expression "pcVar25 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*puVar6 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434);" (assignment_expression "*puVar6 = *(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434)" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434)" * (cast_expression "(undefined4 *)(*(int *)(pcVar25 + 0x1f8d0) + -0x3434)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar25 + 0x1f8d0) + -0x3434)" ( (binary_expression "*(int *)(pcVar25 + 0x1f8d0) + -0x3434" (pointer_expression "*(int *)(pcVar25 + 0x1f8d0)" * (cast_expression "(int *)(pcVar25 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar25 + 0x1f8d0)" ( (binary_expression "pcVar25 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar6[1] = uVar7;" (assignment_expression "puVar6[1] = uVar7" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "undefined4 * FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}\n\n" (function_definition "undefined4 * FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}" type_identifier (pointer_declarator "* FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)" * (function_declarator "FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)" identifier (parameter_list "(byte *param_1,undefined1 *param_2,undefined4 *param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined1 *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "ushort *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined1 *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "undefined *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "undefined4 *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "uint unaff_s8;" type_identifier identifier ;) (declaration "ushort *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "ushort *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "ushort *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "undefined1 auStack_104 [128];" type_identifier (array_declarator "auStack_104 [128]" identifier [ number_literal ]) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 *local_7c;" type_identifier (pointer_declarator "*local_7c" * identifier) ;) (declaration "ushort *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined1 *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "undefined *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined4 *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "undefined1 *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "ushort local_2e;" type_identifier identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00044ca0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00044ca0" identifier = identifier) ;) (expression_statement "puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;" (assignment_expression "puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac" identifier = identifier) ;) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_00044ca0" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_00044ca0" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar7 = param_3;" (assignment_expression "puVar7 = param_3" identifier = identifier) ;) (if_statement "if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" if (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" { (expression_statement "unaff_s8 = (uint)*param_1;" (assignment_expression "unaff_s8 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" identifier = (binary_expression "unaff_s8 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = param_1;" (assignment_expression "unaff_s0 = param_1" identifier = identifier) ;) (if_statement "if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" if (parenthesized_expression "(2 < unaff_s7)" ( (binary_expression "2 < unaff_s7" number_literal < identifier) )) (compound_statement "{\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" { (expression_statement "unaff_s2 = &local_2e;" (assignment_expression "unaff_s2 = &local_2e" identifier = (pointer_expression "&local_2e" & identifier)) ;) (expression_statement "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;" (assignment_expression "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" identifier + number_literal)) ;) (expression_statement "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;" (assignment_expression "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" identifier + number_literal)) ;) (expression_statement "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;" (assignment_expression "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" identifier = (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" identifier + number_literal)) ;) (expression_statement "unaff_s1 = param_2;" (assignment_expression "unaff_s1 = param_2" identifier = identifier) ;) (do_statement "do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);" do (compound_statement "{\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      }" { (expression_statement "local_2e = *(ushort *)(unaff_s0 + 2);" (assignment_expression "local_2e = *(ushort *)(unaff_s0 + 2)" identifier = (pointer_expression "*(ushort *)(unaff_s0 + 2)" * (cast_expression "(ushort *)(unaff_s0 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s0 + 2)" ( (binary_expression "unaff_s0 + 2" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (undefined4 *)(uint)local_2e;" (assignment_expression "unaff_s5 = (undefined4 *)(uint)local_2e" identifier = (cast_expression "(undefined4 *)(uint)local_2e" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)local_2e" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);" (assignment_expression "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" identifier = (call_expression "(*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" (parenthesized_expression "(*(code *)PTR_sg_all_ffs_00044c68)" ( (pointer_expression "*(code *)PTR_sg_all_ffs_00044c68" * (cast_expression "(code *)PTR_sg_all_ffs_00044c68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0 + 4,unaff_s8 - 2)" ( (binary_expression "unaff_s0 + 4" identifier + number_literal) , (binary_expression "unaff_s8 - 2" identifier - number_literal) )))) ;) (expression_statement "puVar7 = unaff_s5;" (assignment_expression "puVar7 = unaff_s5" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }" { (labeled_statement "LAB_00024a4c:\n          local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }" if (parenthesized_expression "(unaff_s8 - 4 < 8)" ( (binary_expression "unaff_s8 - 4 < 8" (binary_expression "unaff_s8 - 4" identifier - number_literal) < number_literal) )) (compound_statement "{\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }" { (expression_statement "local_44 = (uint)unaff_s0[4];" (assignment_expression "local_44 = (uint)unaff_s0[4]" identifier = (cast_expression "(uint)unaff_s0[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "unaff_s0[4]" identifier [ number_literal ]))) ;) (expression_statement "pbVar10 = unaff_s0 + 5;" (assignment_expression "pbVar10 = unaff_s0 + 5" identifier = (binary_expression "unaff_s0 + 5" identifier + number_literal)) ;) (if_statement "if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" if (parenthesized_expression "(4 < unaff_s8)" ( (binary_expression "4 < unaff_s8" number_literal < identifier) )) (compound_statement "{\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" { (do_statement "do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);" do (compound_statement "{\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              }" { (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_48 = local_44 >> 0x18 | local_48 << 8;" (assignment_expression "local_48 = local_44 >> 0x18 | local_48 << 8" identifier = (binary_expression "local_44 >> 0x18 | local_48 << 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "local_48 << 8" identifier << number_literal))) ;) (expression_statement "local_44 = (uint)bVar1 | local_44 << 8;" (assignment_expression "local_44 = (uint)bVar1 | local_44 << 8" identifier = (binary_expression "(uint)bVar1 | local_44 << 8" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "local_44 << 8" identifier << number_literal))) ;) }) while (parenthesized_expression "(unaff_s0 + unaff_s7 != pbVar10)" ( (binary_expression "unaff_s0 + unaff_s7 != pbVar10" (binary_expression "unaff_s0 + unaff_s7" identifier + identifier) != identifier) )) ;) })) }) (else_clause "else {\n            local_44 = 0;\n          }" else (compound_statement "{\n            local_44 = 0;\n          }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) }))) (if_statement "if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" if (parenthesized_expression "(param_3 == (undefined4 *)0x0)" ( (binary_expression "param_3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" { (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" identifier = identifier) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" else (compound_statement "{\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" { (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = puVar3;" (assignment_expression "param_2 = puVar3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) }) (else_clause "else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" else (if_statement "if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" if (parenthesized_expression "(unaff_s0[unaff_s8 + 2] == 0xfe)" ( (binary_expression "unaff_s0[unaff_s8 + 2] == 0xfe" (subscript_expression "unaff_s0[unaff_s8 + 2]" identifier [ (binary_expression "unaff_s8 + 2" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" { (expression_statement "param_2 = puVar18 + -0xcd0;" (assignment_expression "param_2 = puVar18 + -0xcd0" identifier = (binary_expression "puVar18 + -0xcd0" identifier + number_literal)) ;) (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" else (compound_statement "{\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" { (if_statement "if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;" if (parenthesized_expression "(unaff_s0[unaff_s8 + 2] != 0xff)" ( (binary_expression "unaff_s0[unaff_s8 + 2] != 0xff" (subscript_expression "unaff_s0[unaff_s8 + 2]" identifier [ (binary_expression "unaff_s8 + 2" identifier + number_literal) ]) != number_literal) )) (goto_statement "goto LAB_00024a4c;" goto statement_identifier ;)) (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = unaff_s3;" (assignment_expression "param_2 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" ( (pointer_expression "*(code *)PTR___printf_chk_00044c28" * (cast_expression "(code *)PTR___printf_chk_00044c28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))))) (expression_statement "unaff_s1 = unaff_s1 + -unaff_s7;" (assignment_expression "unaff_s1 = unaff_s1 + -unaff_s7" identifier = (binary_expression "unaff_s1 + -unaff_s7" identifier + (unary_expression "-unaff_s7" - identifier))) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s7;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s7" identifier = (binary_expression "unaff_s0 + unaff_s7" identifier + identifier)) ;) (expression_statement "unaff_s4 = puVar18;" (assignment_expression "unaff_s4 = puVar18" identifier = identifier) ;) (if_statement "if ((int)unaff_s1 < 4) break;" if (parenthesized_expression "((int)unaff_s1 < 4)" ( (binary_expression "(int)unaff_s1 < 4" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "unaff_s8 = (uint)*unaff_s0;" (assignment_expression "unaff_s8 = (uint)*unaff_s0" identifier = (binary_expression "(uint)*unaff_s0" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" identifier = (binary_expression "unaff_s8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(2 < unaff_s7)" ( (binary_expression "2 < unaff_s7" number_literal < identifier) )) ;) })) })) (if_statement "if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }" if (parenthesized_expression "(local_2c == *(undefined4 **)puVar2)" ( (binary_expression "local_2c == *(undefined4 **)puVar2" identifier == (pointer_expression "*(undefined4 **)puVar2" * (cast_expression "(undefined4 **)puVar2" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return *(undefined4 **)puVar2;\n  }" { (return_statement "return *(undefined4 **)puVar2;" return (pointer_expression "*(undefined4 **)puVar2" * (cast_expression "(undefined4 **)puVar2" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) })) (expression_statement "uVar24 = 0x24ba0;" (assignment_expression "uVar24 = 0x24ba0" identifier = number_literal) ;) (expression_statement "puVar18 = PTR___stack_chk_fail_00044c90;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00044c90" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00044c90)();" (call_expression "(*(code *)PTR___stack_chk_fail_00044c90)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00044c90)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00044c90" * (cast_expression "(code *)PTR___stack_chk_fail_00044c90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = *(int **)(puVar18 + 0x20100);" (assignment_expression "piVar5 = *(int **)(puVar18 + 0x20100)" identifier = (pointer_expression "*(int **)(puVar18 + 0x20100)" * (cast_expression "(int **)(puVar18 + 0x20100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20100)" ( (binary_expression "puVar18 + 0x20100" identifier + number_literal) ))))) ;) (expression_statement "local_84 = *piVar5;" (assignment_expression "local_84 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "local_80 = unaff_s0;" (assignment_expression "local_80 = unaff_s0" identifier = identifier) ;) (expression_statement "local_7c = unaff_s1;" (assignment_expression "local_7c = unaff_s1" identifier = identifier) ;) (expression_statement "local_78 = unaff_s2;" (assignment_expression "local_78 = unaff_s2" identifier = identifier) ;) (expression_statement "local_74 = unaff_s3;" (assignment_expression "local_74 = unaff_s3" identifier = identifier) ;) (expression_statement "local_70 = unaff_s4;" (assignment_expression "local_70 = unaff_s4" identifier = identifier) ;) (expression_statement "local_6c = unaff_s5;" (assignment_expression "local_6c = unaff_s5" identifier = identifier) ;) (expression_statement "local_68 = unaff_s6;" (assignment_expression "local_68 = unaff_s6" identifier = identifier) ;) (expression_statement "local_64 = unaff_s7;" (assignment_expression "local_64 = unaff_s7" identifier = identifier) ;) (expression_statement "local_60 = unaff_s8;" (assignment_expression "local_60 = unaff_s8" identifier = identifier) ;) (expression_statement "local_5c = uVar24;" (assignment_expression "local_5c = uVar24" identifier = identifier) ;) (if_statement "if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }" if (parenthesized_expression "((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0))))" ( (binary_expression "(puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))" (parenthesized_expression "(puVar7[0xc] != 0)" ( (binary_expression "puVar7[0xc] != 0" (subscript_expression "puVar7[0xc]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))" ( (parenthesized_expression "(*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0))" ( (binary_expression "*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)" (binary_expression "*(char *)((int)puVar7 + 3) == '\0'" (pointer_expression "*(char *)((int)puVar7 + 3)" * (cast_expression "(char *)((int)puVar7 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 3)" ( (binary_expression "(int)puVar7 + 3" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(puVar7[8] == 0)" ( (binary_expression "puVar7[8] == 0" (subscript_expression "puVar7[8]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }" { (expression_statement "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);" (call_expression "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68)" (parenthesized_expression "(**(code **)(puVar18 + 0x200d0))" ( (pointer_expression "**(code **)(puVar18 + 0x200d0)" * (pointer_expression "*(code **)(puVar18 + 0x200d0)" * (cast_expression "(code **)(puVar18 + 0x200d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200d0)" ( (binary_expression "puVar18 + 0x200d0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar18 + 0x2000c) + -0xc68)" ( (binary_expression "*(int *)(puVar18 + 0x2000c) + -0xc68" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "param_2 = param_2 + -4;" (assignment_expression "param_2 = param_2 + -4" identifier = (binary_expression "param_2 + -4" identifier + number_literal)) ;) (expression_statement "puVar21 = (ushort *)(param_1 + 4);" (assignment_expression "puVar21 = (ushort *)(param_1 + 4)" identifier = (cast_expression "(ushort *)(param_1 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (if_statement "if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }" if (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }" { (expression_statement "iVar11 = *(int *)(puVar18 + 0x20004);" (assignment_expression "iVar11 = *(int *)(puVar18 + 0x20004)" identifier = (pointer_expression "*(int *)(puVar18 + 0x20004)" * (cast_expression "(int *)(puVar18 + 0x20004)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x20004)" ( (binary_expression "puVar18 + 0x20004" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar16 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar15 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "cVar8 = *(char *)((int)puVar7 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 9)" identifier = (pointer_expression "*(char *)((int)puVar7 + 9)" * (cast_expression "(char *)((int)puVar7 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 9)" ( (binary_expression "(int)puVar7 + 9" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar4 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar9 = *(int *)(puVar18 + 0x2000c)" identifier = (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) ))))) ;) (do_statement "do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);" do (compound_statement "{\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    }" { (expression_statement "puVar3 = (undefined1 *)(uint)*(byte *)puVar21;" (assignment_expression "puVar3 = (undefined1 *)(uint)*(byte *)puVar21" identifier = (binary_expression "(undefined1 *)(uint)*(byte *)puVar21" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)puVar21" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);" (assignment_expression "puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3)" identifier = (binary_expression "(undefined1 *)(uint)*(byte *)((int)puVar21 + 3)" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)((int)puVar21 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 3)" ( (binary_expression "(int)puVar21 + 3" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar12 = (undefined4 *)(uint)*puVar21;" (assignment_expression "puVar12 = (undefined4 *)(uint)*puVar21" identifier = (binary_expression "(undefined4 *)(uint)*puVar21" (cast_expression "(undefined4 *)(uint)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "puVar14 = puVar13 + 4;" (assignment_expression "puVar14 = puVar13 + 4" identifier = (binary_expression "puVar13 + 4" identifier + number_literal)) ;) (if_statement "if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }" { (labeled_statement "LAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" statement_identifier : (if_statement "if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" if (parenthesized_expression "(puVar12 < (undefined4 *)0x1000)" ( (binary_expression "puVar12 < (undefined4 *)0x1000" identifier < (cast_expression "(undefined4 *)0x1000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" { (if_statement "if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }" if (parenthesized_expression "(puVar12 < (undefined4 *)0x82)" ( (binary_expression "puVar12 < (undefined4 *)0x82" identifier < (cast_expression "(undefined4 *)0x82" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }" { (expression_statement "puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();" (assignment_expression "puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" identifier = (cast_expression "(undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" (parenthesized_expression "(*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))" ( (pointer_expression "*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" * (cast_expression "(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" ( (binary_expression "puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" identifier + (cast_expression "(int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" ( (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670" (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" (string_literal ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") + (pointer_expression "*(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" * (cast_expression "(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" ( (binary_expression "*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4" (binary_expression "*(int *)(puVar18 + 0x2000c) + 0x2b80" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) + (binary_expression "(int)puVar12 * 4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) + number_literal) )))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar7;" return identifier ;) })) (expression_statement "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar18 + 0x2000c) + -0x718)" ( number_literal , (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x718" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" ( (pointer_expression "**(code **)(puVar18 + 0x200e0)" * (pointer_expression "*(code **)(puVar18 + 0x200e0)" * (cast_expression "(code **)(puVar18 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200e0)" ( (binary_expression "puVar18 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar21 + 2)" ( (binary_expression "puVar21 + 2" identifier + number_literal) ))) ;) (expression_statement "puVar3 = puVar13;" (assignment_expression "puVar3 = puVar13" identifier = identifier) ;) (labeled_statement "LAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);" statement_identifier : (expression_statement "cVar8 = *(char *)((int)puVar7 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 1)" identifier = (pointer_expression "*(char *)((int)puVar7 + 1)" * (cast_expression "(char *)((int)puVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 1)" ( (binary_expression "(int)puVar7 + 1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) }) (else_clause "else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" else (compound_statement "{\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" { (if_statement "if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }" if (parenthesized_expression "(puVar12 != (undefined4 *)0x1000)" ( (binary_expression "puVar12 != (undefined4 *)0x1000" identifier != (cast_expression "(undefined4 *)0x1000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }" { (if_statement "if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" if (parenthesized_expression "(puVar12 < (undefined4 *)0x8000)" ( (binary_expression "puVar12 < (undefined4 *)0x8000" identifier < (cast_expression "(undefined4 *)0x8000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }" { (expression_statement "(**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,iVar9 + -0x634)" ( number_literal , (binary_expression "iVar9 + -0x634" identifier + number_literal) ))) ;) }) (else_clause "else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" else (compound_statement "{\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" { (expression_statement "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar18 + 0x2000c) + -0x668)" ( number_literal , (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x668" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) }))) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" ( (pointer_expression "**(code **)(puVar18 + 0x200e0)" * (pointer_expression "*(code **)(puVar18 + 0x200e0)" * (cast_expression "(code **)(puVar18 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200e0)" ( (binary_expression "puVar18 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar21 + 2)" ( (binary_expression "puVar21 + 2" identifier + number_literal) ))) ;) (expression_statement "puVar3 = puVar13;" (assignment_expression "puVar3 = puVar13" identifier = identifier) ;) (goto_statement "goto LAB_00024d18;" goto statement_identifier ;) })) (expression_statement "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);" (call_expression "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8)" (parenthesized_expression "(**(code **)(puVar18 + 0x200d0))" ( (pointer_expression "**(code **)(puVar18 + 0x200d0)" * (pointer_expression "*(code **)(puVar18 + 0x200d0)" * (cast_expression "(code **)(puVar18 + 0x200d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200d0)" ( (binary_expression "puVar18 + 0x200d0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar18 + 0x2000c) + -0x6e8)" ( (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x6e8" (pointer_expression "*(int *)(puVar18 + 0x2000c)" * (cast_expression "(int *)(puVar18 + 0x2000c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x2000c)" ( (binary_expression "puVar18 + 0x2000c" identifier + number_literal) )))) + number_literal) ))) ;) (if_statement "if (puVar13 < &DAT_00000008) goto LAB_00024d18;" if (parenthesized_expression "(puVar13 < &DAT_00000008)" ( (binary_expression "puVar13 < &DAT_00000008" identifier < (pointer_expression "&DAT_00000008" & identifier)) )) (goto_statement "goto LAB_00024d18;" goto statement_identifier ;)) (expression_statement "puVar17 = (uint *)(puVar21 + 4);" (assignment_expression "puVar17 = (uint *)(puVar21 + 4)" identifier = (cast_expression "(uint *)(puVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 4)" ( (binary_expression "puVar21 + 4" identifier + number_literal) )))) ;) (do_statement "do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));" do (compound_statement "{\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          }" { (expression_statement "(**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));" (call_expression "(**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1))" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1))" ( number_literal , (binary_expression "iVar16 + -0x6b4" identifier + number_literal) , (pointer_expression "*(byte *)((int)puVar17 + -2)" * (cast_expression "(byte *)((int)puVar17 + -2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + -2)" ( (binary_expression "(int)puVar17 + -2" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar17 + -1)" * (cast_expression "(byte *)((int)puVar17 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + -1)" ( (binary_expression "(int)puVar17 + -1" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "puVar12 = (undefined4 *)*puVar17;" (assignment_expression "puVar12 = (undefined4 *)*puVar17" identifier = (cast_expression "(undefined4 *)*puVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) (expression_statement "puVar3 = (undefined1 *)(iVar15 + -0x688);" (assignment_expression "puVar3 = (undefined1 *)(iVar15 + -0x688)" identifier = (cast_expression "(undefined1 *)(iVar15 + -0x688)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x688)" ( (binary_expression "iVar15 + -0x688" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(puVar18 + 0x20088))(1);" (call_expression "(**(code **)(puVar18 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1)" ( number_literal ))) ;) }) while (parenthesized_expression "(puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10))" ( (binary_expression "puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" identifier != (cast_expression "(uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" ( (binary_expression "(int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10" (binary_expression "(int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8)" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)(puVar13 + -8) & 0xfffffff8)" ( (binary_expression "(uint)(puVar13 + -8) & 0xfffffff8" (call_expression "(uint)(puVar13 + -8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar13 + -8)" ( (binary_expression "puVar13 + -8" identifier + number_literal) ))) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "cVar8 = *(char *)((int)puVar7 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 1)" identifier = (pointer_expression "*(char *)((int)puVar7 + 1)" * (cast_expression "(char *)((int)puVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 1)" ( (binary_expression "(int)puVar7 + 1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })))) (if_statement "if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }" { (expression_statement "puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);" (assignment_expression "puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" identifier = (cast_expression "(undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" (parenthesized_expression "(*(code *)(iVar11 + 0x4b24))" ( (pointer_expression "*(code *)(iVar11 + 0x4b24)" * (cast_expression "(code *)(iVar11 + 0x4b24)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x4b24)" ( (binary_expression "iVar11 + 0x4b24" identifier + number_literal) )))) )) (argument_list "(*(byte *)(puVar21 + 1),auStack_104)" ( (pointer_expression "*(byte *)(puVar21 + 1)" * (cast_expression "(byte *)(puVar21 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 1)" ( (binary_expression "puVar21 + 1" identifier + number_literal) )))) , identifier ))))) ;) (expression_statement "puVar3 = (undefined1 *)(iVar4 + -0x70e4);" (assignment_expression "puVar3 = (undefined1 *)(iVar4 + -0x70e4)" identifier = (cast_expression "(undefined1 *)(iVar4 + -0x70e4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x70e4)" ( (binary_expression "iVar4 + -0x70e4" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(puVar18 + 0x20088))(1);" (call_expression "(**(code **)(puVar18 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" ( (pointer_expression "**(code **)(puVar18 + 0x20088)" * (pointer_expression "*(code **)(puVar18 + 0x20088)" * (cast_expression "(code **)(puVar18 + 0x20088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20088)" ( (binary_expression "puVar18 + 0x20088" identifier + number_literal) ))))) )) (argument_list "(1)" ( number_literal ))) ;) })) (expression_statement "cVar8 = *(char *)((int)puVar7 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 9)" identifier = (pointer_expression "*(char *)((int)puVar7 + 9)" * (cast_expression "(char *)((int)puVar7 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 9)" ( (binary_expression "(int)puVar7 + 9" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (if_statement "if (cVar8 != '\0') break;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" else (compound_statement "{\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" { (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (if_statement "if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }" if (parenthesized_expression "((undefined4 *)puVar7[0xd] == puVar12)" ( (binary_expression "(undefined4 *)puVar7[0xd] == puVar12" (cast_expression "(undefined4 *)puVar7[0xd]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[0xd]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }" { (if_statement "if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }" if (parenthesized_expression "(*(char *)((int)puVar7 + 3) != '\0')" ( (binary_expression "*(char *)((int)puVar7 + 3) != '\0'" (pointer_expression "*(char *)((int)puVar7 + 3)" * (cast_expression "(char *)((int)puVar7 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 3)" ( (binary_expression "(int)puVar7 + 3" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }" { (expression_statement "puVar22 = puVar21;" (assignment_expression "puVar22 = puVar21" identifier = identifier) ;) (do_statement "do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);" do (compound_statement "{\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            }" { (expression_statement "puVar23 = (ushort *)((int)puVar22 + 1);" (assignment_expression "puVar23 = (ushort *)((int)puVar22 + 1)" identifier = (cast_expression "(ushort *)((int)puVar22 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 1)" ( (binary_expression "(int)puVar22 + 1" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);" (call_expression "(**(code **)(puVar18 + 0x20094))(*(byte *)puVar22)" (parenthesized_expression "(**(code **)(puVar18 + 0x20094))" ( (pointer_expression "**(code **)(puVar18 + 0x20094)" * (pointer_expression "*(code **)(puVar18 + 0x20094)" * (cast_expression "(code **)(puVar18 + 0x20094)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x20094)" ( (binary_expression "puVar18 + 0x20094" identifier + number_literal) ))))) )) (argument_list "(*(byte *)puVar22)" ( (pointer_expression "*(byte *)puVar22" * (cast_expression "(byte *)puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" identifier = identifier) ;) (expression_statement "puVar22 = puVar23;" (assignment_expression "puVar22 = puVar23" identifier = identifier) ;) }) while (parenthesized_expression "((ushort *)((int)puVar21 + (int)puVar14) != puVar23)" ( (binary_expression "(ushort *)((int)puVar21 + (int)puVar14) != puVar23" (cast_expression "(ushort *)((int)puVar21 + (int)puVar14)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (int)puVar14)" ( (binary_expression "(int)puVar21 + (int)puVar14" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ))) != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "puVar6 = (undefined4 *)puVar7[8];" (assignment_expression "puVar6 = (undefined4 *)puVar7[8]" identifier = (cast_expression "(undefined4 *)puVar7[8]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[8]" identifier [ number_literal ]))) ;) (if_statement "if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;" if (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00024c9c;" goto statement_identifier ;)) (if_statement "if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }" if (parenthesized_expression "(puVar6 != (undefined4 *)0x1)" ( (binary_expression "puVar6 != (undefined4 *)0x1" identifier != (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            puVar6 = (undefined4 *)0xffffffff;\n          }" { (expression_statement "puVar6 = (undefined4 *)0xffffffff;" (assignment_expression "puVar6 = (undefined4 *)0xffffffff" identifier = (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" ( (pointer_expression "**(code **)(puVar18 + 0x200e0)" * (pointer_expression "*(code **)(puVar18 + 0x200e0)" * (cast_expression "(code **)(puVar18 + 0x200e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200e0)" ( (binary_expression "puVar18 + 0x200e0" identifier + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier ))) ;) (expression_statement "puVar3 = puVar14;" (assignment_expression "puVar3 = puVar14" identifier = identifier) ;) (break_statement "break;" break ;) })) }))) (expression_statement "param_2 = param_2 + -(int)puVar14;" (assignment_expression "param_2 = param_2 + -(int)puVar14" identifier = (binary_expression "param_2 + -(int)puVar14" identifier + (unary_expression "-(int)puVar14" - (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "puVar21 = (ushort *)((int)puVar21 + (int)puVar14);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + (int)puVar14)" identifier = (cast_expression "(ushort *)((int)puVar21 + (int)puVar14)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (int)puVar14)" ( (binary_expression "(int)puVar21 + (int)puVar14" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) while (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }" if (parenthesized_expression "(local_84 == *piVar5)" ( (binary_expression "local_84 == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return (undefined4 *)0x1;\n  }" { (return_statement "return (undefined4 *)0x1;" return (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar19 = *(code **)(puVar18 + 0x200f0);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x200f0)" identifier = (pointer_expression "*(code **)(puVar18 + 0x200f0)" * (cast_expression "(code **)(puVar18 + 0x200f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x200f0)" ( (binary_expression "puVar18 + 0x200f0" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = local_84;" (assignment_expression "iVar4 = local_84" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar9 = (**(code **)(pcVar19 + 0x1f98c))();" (assignment_expression "iVar9 = (**(code **)(pcVar19 + 0x1f98c))()" identifier = (call_expression "(**(code **)(pcVar19 + 0x1f98c))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1f98c))" ( (pointer_expression "**(code **)(pcVar19 + 0x1f98c)" * (pointer_expression "*(code **)(pcVar19 + 0x1f98c)" * (cast_expression "(code **)(pcVar19 + 0x1f98c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1f98c)" ( (binary_expression "pcVar19 + 0x1f98c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }" { (if_statement "if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" if (parenthesized_expression "((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1))" ( (binary_expression "(puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" (parenthesized_expression "(puVar3 + -1 < &DAT_00000008)" ( (binary_expression "puVar3 + -1 < &DAT_00000008" (binary_expression "puVar3 + -1" identifier + number_literal) < (pointer_expression "&DAT_00000008" & identifier)) )) && (parenthesized_expression "(puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" ( (comma_expression "puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1" (assignment_expression "puVar13 = (undefined1 *)(iVar4 + 1)" identifier = (cast_expression "(undefined1 *)(iVar4 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )))) , (binary_expression "puVar3 != (undefined1 *)0x1" identifier != (cast_expression "(undefined1 *)0x1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" { (do_statement "do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);" do (compound_statement "{\n        puVar13 = puVar13 + 1;\n      }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + iVar4 != puVar13)" ( (binary_expression "puVar3 + iVar4 != puVar13" (binary_expression "puVar3 + iVar4" identifier + identifier) != identifier) )) ;) (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1f9e4);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1f9e4)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1f9e4)" * (cast_expression "(code **)(pcVar19 + 0x1f9e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1f9e4)" ( (binary_expression "pcVar19 + 0x1f9e4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" else (compound_statement "{\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" { (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1f9e4);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1f9e4)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1f9e4)" * (cast_expression "(code **)(pcVar19 + 0x1f9e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1f9e4)" ( (binary_expression "pcVar19 + 0x1f9e4" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);" (call_expression "(*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8)" ( identifier , number_literal , number_literal , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x43e8" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" * (cast_expression "(int *)(pcVar19 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1f8d0)" ( (binary_expression "pcVar19 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return puVar6;" return identifier ;) })) (expression_statement "uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);" (assignment_expression "uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" * (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" ( (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x3430" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" * (cast_expression "(int *)(pcVar19 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1f8d0)" ( (binary_expression "pcVar19 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);" (assignment_expression "*puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" * (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" ( (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x3434" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" * (cast_expression "(int *)(pcVar19 + 0x1f8d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1f8d0)" ( (binary_expression "pcVar19 + 0x1f8d0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar6[1] = uVar24;" (assignment_expression "puVar6[1] = uVar24" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (binary_expression IDENT << LIT))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) + LIT) )))) )))) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , (binary_expression IDENT + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression & IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) ))) + LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) != IDENT) )) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < (pointer_expression & IDENT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 * FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}" (type_identifier "undefined4") (pointer_declarator "* FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)" (* "*") (function_declarator "FUN_00024980(byte *param_1,undefined1 *param_2,undefined4 *param_3)" (identifier "FUN_00024980") (parameter_list "(byte *param_1,undefined1 *param_2,undefined4 *param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined1 *param_2" (type_identifier "undefined1") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  char cVar8;\n  undefined4 *puVar6;\n  undefined4 *puVar7;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  byte *unaff_s0;\n  undefined1 *puVar13;\n  undefined1 *unaff_s1;\n  undefined1 *puVar14;\n  ushort *unaff_s2;\n  undefined1 *unaff_s3;\n  undefined *unaff_s4;\n  undefined4 *unaff_s5;\n  int iVar15;\n  undefined1 *unaff_s6;\n  int iVar16;\n  uint unaff_s7;\n  uint *puVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint unaff_s8;\n  ushort *puVar21;\n  ushort *puVar22;\n  ushort *puVar23;\n  undefined4 uVar24;\n  undefined1 auStack_104 [128];\n  int local_84;\n  byte *local_80;\n  undefined1 *local_7c;\n  ushort *local_78;\n  undefined1 *local_74;\n  undefined *local_70;\n  undefined4 *local_6c;\n  undefined1 *local_68;\n  uint local_64;\n  uint local_60;\n  undefined4 local_5c;\n  uint local_48;\n  uint local_44;\n  ushort local_2e;\n  undefined4 *local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00044ca0;\n  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;\n  puVar7 = param_3;\n  if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }\n  uVar24 = 0x24ba0;\n  puVar18 = PTR___stack_chk_fail_00044c90;\n  (*(code *)PTR___stack_chk_fail_00044c90)();\n  piVar5 = *(int **)(puVar18 + 0x20100);\n  local_84 = *piVar5;\n  puVar3 = param_2;\n  puVar6 = puVar7;\n  local_80 = unaff_s0;\n  local_7c = unaff_s1;\n  local_78 = unaff_s2;\n  local_74 = unaff_s3;\n  local_70 = unaff_s4;\n  local_6c = unaff_s5;\n  local_68 = unaff_s6;\n  local_64 = unaff_s7;\n  local_60 = unaff_s8;\n  local_5c = uVar24;\n  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }\n  param_2 = param_2 + -4;\n  puVar21 = (ushort *)(param_1 + 4);\n  if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }\n  if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }\n  pcVar19 = *(code **)(puVar18 + 0x200f0);\n  iVar4 = local_84;\n  (*pcVar19)();\n  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();\n  if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }\n  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);\n  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);\n  puVar6[1] = uVar24;\n  return puVar6;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "char cVar8;" (primitive_type "char") (identifier "cVar8") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "byte *unaff_s0;" (type_identifier "byte") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined1 *unaff_s1;" (type_identifier "undefined1") (pointer_declarator "*unaff_s1" (* "*") (identifier "unaff_s1")) (; ";")) (declaration "undefined1 *puVar14;" (type_identifier "undefined1") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "ushort *unaff_s2;" (type_identifier "ushort") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "undefined1 *unaff_s3;" (type_identifier "undefined1") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "undefined *unaff_s4;" (type_identifier "undefined") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "undefined4 *unaff_s5;" (type_identifier "undefined4") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "undefined1 *unaff_s6;" (type_identifier "undefined1") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint unaff_s7;" (type_identifier "uint") (identifier "unaff_s7") (; ";")) (declaration "uint *puVar17;" (type_identifier "uint") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "undefined *puVar18;" (type_identifier "undefined") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "code *pcVar19;" (type_identifier "code") (pointer_declarator "*pcVar19" (* "*") (identifier "pcVar19")) (; ";")) (declaration "code *pcVar20;" (type_identifier "code") (pointer_declarator "*pcVar20" (* "*") (identifier "pcVar20")) (; ";")) (declaration "uint unaff_s8;" (type_identifier "uint") (identifier "unaff_s8") (; ";")) (declaration "ushort *puVar21;" (type_identifier "ushort") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "ushort *puVar22;" (type_identifier "ushort") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "ushort *puVar23;" (type_identifier "ushort") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "undefined4 uVar24;" (type_identifier "undefined4") (identifier "uVar24") (; ";")) (declaration "undefined1 auStack_104 [128];" (type_identifier "undefined1") (array_declarator "auStack_104 [128]" (identifier "auStack_104") ([ "[") (number_literal "128") (] "]")) (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "byte *local_80;" (type_identifier "byte") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "undefined1 *local_7c;" (type_identifier "undefined1") (pointer_declarator "*local_7c" (* "*") (identifier "local_7c")) (; ";")) (declaration "ushort *local_78;" (type_identifier "ushort") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "undefined1 *local_74;" (type_identifier "undefined1") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "undefined *local_70;" (type_identifier "undefined") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "undefined4 *local_6c;" (type_identifier "undefined4") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "undefined1 *local_68;" (type_identifier "undefined1") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "ushort local_2e;" (type_identifier "ushort") (identifier "local_2e") (; ";")) (declaration "undefined4 *local_2c;" (type_identifier "undefined4") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_00044ca0;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00044ca0" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_00044ca0")) (; ";")) (expression_statement "puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;" (assignment_expression "puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac" (identifier "puVar18") (= "=") (identifier "PTR_s_e_capacity_partition_s___MB___00044bac")) (; ";")) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0" (identifier "local_2c") (= "=") (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_00044ca0" (* "*") (cast_expression "(undefined4 **)PTR___stack_chk_guard_00044ca0" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00044ca0")))) (; ";")) (expression_statement "puVar7 = param_3;" (assignment_expression "puVar7 = param_3" (identifier "puVar7") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (3 < (int)param_2) {\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" (if "if") (parenthesized_expression "(3 < (int)param_2)" (( "(") (binary_expression "3 < (int)param_2" (number_literal "3") (< "<") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")")) (compound_statement "{\n    unaff_s8 = (uint)*param_1;\n    unaff_s7 = unaff_s8 + 1;\n    unaff_s0 = param_1;\n    if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }\n  }" ({ "{") (expression_statement "unaff_s8 = (uint)*param_1;" (assignment_expression "unaff_s8 = (uint)*param_1" (identifier "unaff_s8") (= "=") (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1"))) (; ";")) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" (identifier "unaff_s7") (= "=") (binary_expression "unaff_s8 + 1" (identifier "unaff_s8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s0 = param_1;" (assignment_expression "unaff_s0 = param_1" (identifier "unaff_s0") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (2 < unaff_s7) {\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" (if "if") (parenthesized_expression "(2 < unaff_s7)" (( "(") (binary_expression "2 < unaff_s7" (number_literal "2") (< "<") (identifier "unaff_s7")) () ")")) (compound_statement "{\n      unaff_s2 = &local_2e;\n      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;\n      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;\n      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;\n      unaff_s1 = param_2;\n      do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);\n    }" ({ "{") (expression_statement "unaff_s2 = &local_2e;" (assignment_expression "unaff_s2 = &local_2e" (identifier "unaff_s2") (= "=") (pointer_expression "&local_2e" (& "&") (identifier "local_2e"))) (; ";")) (expression_statement "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;" (assignment_expression "puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" (identifier "puVar3") (= "=") (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c" (identifier "PTR_s_e_capacity_partition_s___MB___00044bac") (+ "+") (number_literal "-0xd9c"))) (; ";")) (expression_statement "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;" (assignment_expression "unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" (identifier "unaff_s6") (= "=") (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58" (identifier "PTR_s_e_capacity_partition_s___MB___00044bac") (+ "+") (number_literal "-0xd58"))) (; ";")) (expression_statement "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;" (assignment_expression "unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" (identifier "unaff_s3") (= "=") (binary_expression "PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18" (identifier "PTR_s_e_capacity_partition_s___MB___00044bac") (+ "+") (number_literal "-0xd18"))) (; ";")) (expression_statement "unaff_s1 = param_2;" (assignment_expression "unaff_s1 = param_2" (identifier "unaff_s1") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      } while (2 < unaff_s7);" (do "do") (compound_statement "{\n        local_2e = *(ushort *)(unaff_s0 + 2);\n        unaff_s5 = (undefined4 *)(uint)local_2e;\n        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);\n        puVar7 = unaff_s5;\n        if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        unaff_s1 = unaff_s1 + -unaff_s7;\n        unaff_s0 = unaff_s0 + unaff_s7;\n        unaff_s4 = puVar18;\n        if ((int)unaff_s1 < 4) break;\n        unaff_s8 = (uint)*unaff_s0;\n        unaff_s7 = unaff_s8 + 1;\n      }" ({ "{") (expression_statement "local_2e = *(ushort *)(unaff_s0 + 2);" (assignment_expression "local_2e = *(ushort *)(unaff_s0 + 2)" (identifier "local_2e") (= "=") (pointer_expression "*(ushort *)(unaff_s0 + 2)" (* "*") (cast_expression "(ushort *)(unaff_s0 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s0 + 2)" (( "(") (binary_expression "unaff_s0 + 2" (identifier "unaff_s0") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "unaff_s5 = (undefined4 *)(uint)local_2e;" (assignment_expression "unaff_s5 = (undefined4 *)(uint)local_2e" (identifier "unaff_s5") (= "=") (cast_expression "(undefined4 *)(uint)local_2e" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)local_2e" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_2e")))) (; ";")) (expression_statement "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);" (assignment_expression "iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2)" (parenthesized_expression "(*(code *)PTR_sg_all_ffs_00044c68)" (( "(") (pointer_expression "*(code *)PTR_sg_all_ffs_00044c68" (* "*") (cast_expression "(code *)PTR_sg_all_ffs_00044c68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sg_all_ffs_00044c68"))) () ")")) (argument_list "(unaff_s0 + 4,unaff_s8 - 2)" (( "(") (binary_expression "unaff_s0 + 4" (identifier "unaff_s0") (+ "+") (number_literal "4")) (, ",") (binary_expression "unaff_s8 - 2" (identifier "unaff_s8") (- "-") (number_literal "2")) () ")")))) (; ";")) (expression_statement "puVar7 = unaff_s5;" (assignment_expression "puVar7 = unaff_s5" (identifier "puVar7") (= "=") (identifier "unaff_s5")) (; ";")) (if_statement "if (iVar4 == 0) {\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }\n        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00024a4c:\n          local_48 = 0;\n          if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }\n          if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n        }" ({ "{") (labeled_statement "LAB_00024a4c:\n          local_48 = 0;" (statement_identifier "LAB_00024a4c") (: ":") (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (unaff_s8 - 4 < 8) {\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }\n          else {\n            local_44 = 0;\n          }" (if "if") (parenthesized_expression "(unaff_s8 - 4 < 8)" (( "(") (binary_expression "unaff_s8 - 4 < 8" (binary_expression "unaff_s8 - 4" (identifier "unaff_s8") (- "-") (number_literal "4")) (< "<") (number_literal "8")) () ")")) (compound_statement "{\n            local_44 = (uint)unaff_s0[4];\n            pbVar10 = unaff_s0 + 5;\n            if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }\n          }" ({ "{") (expression_statement "local_44 = (uint)unaff_s0[4];" (assignment_expression "local_44 = (uint)unaff_s0[4]" (identifier "local_44") (= "=") (cast_expression "(uint)unaff_s0[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "unaff_s0[4]" (identifier "unaff_s0") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "pbVar10 = unaff_s0 + 5;" (assignment_expression "pbVar10 = unaff_s0 + 5" (identifier "pbVar10") (= "=") (binary_expression "unaff_s0 + 5" (identifier "unaff_s0") (+ "+") (number_literal "5"))) (; ";")) (if_statement "if (4 < unaff_s8) {\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" (if "if") (parenthesized_expression "(4 < unaff_s8)" (( "(") (binary_expression "4 < unaff_s8" (number_literal "4") (< "<") (identifier "unaff_s8")) () ")")) (compound_statement "{\n              do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);\n            }" ({ "{") (do_statement "do {\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              } while (unaff_s0 + unaff_s7 != pbVar10);" (do "do") (compound_statement "{\n                bVar1 = *pbVar10;\n                pbVar10 = pbVar10 + 1;\n                local_48 = local_44 >> 0x18 | local_48 << 8;\n                local_44 = (uint)bVar1 | local_44 << 8;\n              }" ({ "{") (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" (identifier "bVar1") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_48 = local_44 >> 0x18 | local_48 << 8;" (assignment_expression "local_48 = local_44 >> 0x18 | local_48 << 8" (identifier "local_48") (= "=") (binary_expression "local_44 >> 0x18 | local_48 << 8" (binary_expression "local_44 >> 0x18" (identifier "local_44") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "local_48 << 8" (identifier "local_48") (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "local_44 = (uint)bVar1 | local_44 << 8;" (assignment_expression "local_44 = (uint)bVar1 | local_44 << 8" (identifier "local_44") (= "=") (binary_expression "(uint)bVar1 | local_44 << 8" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (| "|") (binary_expression "local_44 << 8" (identifier "local_44") (<< "<<") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s0 + unaff_s7 != pbVar10)" (( "(") (binary_expression "unaff_s0 + unaff_s7 != pbVar10" (binary_expression "unaff_s0 + unaff_s7" (identifier "unaff_s0") (+ "+") (identifier "unaff_s7")) (!= "!=") (identifier "pbVar10")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            local_44 = 0;\n          }" (else "else") (compound_statement "{\n            local_44 = 0;\n          }" ({ "{") (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (param_3 == (undefined4 *)0x0) {\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }\n          else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" (if "if") (parenthesized_expression "(param_3 == (undefined4 *)0x0)" (( "(") (binary_expression "param_3 == (undefined4 *)0x0" (identifier "param_3") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            param_1 = (byte *)0x1;\n            param_2 = unaff_s6;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" ({ "{") (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" (identifier "param_1") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" (identifier "param_2") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" (( "(") (pointer_expression "*(code *)PTR___printf_chk_00044c28" (* "*") (cast_expression "(code *)PTR___printf_chk_00044c28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___printf_chk_00044c28"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" (else "else") (compound_statement "{\n            param_1 = (byte *)0x1;\n            param_2 = puVar3;\n            (*(code *)PTR___printf_chk_00044c28)();\n          }" ({ "{") (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" (identifier "param_1") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "param_2 = puVar3;" (assignment_expression "param_2 = puVar3" (identifier "param_2") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" (( "(") (pointer_expression "*(code *)PTR___printf_chk_00044c28" (* "*") (cast_expression "(code *)PTR___printf_chk_00044c28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___printf_chk_00044c28"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" (else "else") (if_statement "if (unaff_s0[unaff_s8 + 2] == 0xfe) {\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }\n        else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" (if "if") (parenthesized_expression "(unaff_s0[unaff_s8 + 2] == 0xfe)" (( "(") (binary_expression "unaff_s0[unaff_s8 + 2] == 0xfe" (subscript_expression "unaff_s0[unaff_s8 + 2]" (identifier "unaff_s0") ([ "[") (binary_expression "unaff_s8 + 2" (identifier "unaff_s8") (+ "+") (number_literal "2")) (] "]")) (== "==") (number_literal "0xfe")) () ")")) (compound_statement "{\n          param_2 = puVar18 + -0xcd0;\n          param_1 = (byte *)0x1;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" ({ "{") (expression_statement "param_2 = puVar18 + -0xcd0;" (assignment_expression "param_2 = puVar18 + -0xcd0" (identifier "param_2") (= "=") (binary_expression "puVar18 + -0xcd0" (identifier "puVar18") (+ "+") (number_literal "-0xcd0"))) (; ";")) (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" (identifier "param_1") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" (( "(") (pointer_expression "*(code *)PTR___printf_chk_00044c28" (* "*") (cast_expression "(code *)PTR___printf_chk_00044c28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___printf_chk_00044c28"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" (else "else") (compound_statement "{\n          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;\n          param_1 = (byte *)0x1;\n          param_2 = unaff_s3;\n          (*(code *)PTR___printf_chk_00044c28)();\n        }" ({ "{") (if_statement "if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;" (if "if") (parenthesized_expression "(unaff_s0[unaff_s8 + 2] != 0xff)" (( "(") (binary_expression "unaff_s0[unaff_s8 + 2] != 0xff" (subscript_expression "unaff_s0[unaff_s8 + 2]" (identifier "unaff_s0") ([ "[") (binary_expression "unaff_s8 + 2" (identifier "unaff_s8") (+ "+") (number_literal "2")) (] "]")) (!= "!=") (number_literal "0xff")) () ")")) (goto_statement "goto LAB_00024a4c;" (goto "goto") (statement_identifier "LAB_00024a4c") (; ";"))) (expression_statement "param_1 = (byte *)0x1;" (assignment_expression "param_1 = (byte *)0x1" (identifier "param_1") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "param_2 = unaff_s3;" (assignment_expression "param_2 = unaff_s3" (identifier "param_2") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "(*(code *)PTR___printf_chk_00044c28)();" (call_expression "(*(code *)PTR___printf_chk_00044c28)()" (parenthesized_expression "(*(code *)PTR___printf_chk_00044c28)" (( "(") (pointer_expression "*(code *)PTR___printf_chk_00044c28" (* "*") (cast_expression "(code *)PTR___printf_chk_00044c28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___printf_chk_00044c28"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))))) (expression_statement "unaff_s1 = unaff_s1 + -unaff_s7;" (assignment_expression "unaff_s1 = unaff_s1 + -unaff_s7" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + -unaff_s7" (identifier "unaff_s1") (+ "+") (unary_expression "-unaff_s7" (- "-") (identifier "unaff_s7")))) (; ";")) (expression_statement "unaff_s0 = unaff_s0 + unaff_s7;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s7" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + unaff_s7" (identifier "unaff_s0") (+ "+") (identifier "unaff_s7"))) (; ";")) (expression_statement "unaff_s4 = puVar18;" (assignment_expression "unaff_s4 = puVar18" (identifier "unaff_s4") (= "=") (identifier "puVar18")) (; ";")) (if_statement "if ((int)unaff_s1 < 4) break;" (if "if") (parenthesized_expression "((int)unaff_s1 < 4)" (( "(") (binary_expression "(int)unaff_s1 < 4" (cast_expression "(int)unaff_s1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s1")) (< "<") (number_literal "4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "unaff_s8 = (uint)*unaff_s0;" (assignment_expression "unaff_s8 = (uint)*unaff_s0" (identifier "unaff_s8") (= "=") (binary_expression "(uint)*unaff_s0" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "unaff_s0"))) (; ";")) (expression_statement "unaff_s7 = unaff_s8 + 1;" (assignment_expression "unaff_s7 = unaff_s8 + 1" (identifier "unaff_s7") (= "=") (binary_expression "unaff_s8 + 1" (identifier "unaff_s8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(2 < unaff_s7)" (( "(") (binary_expression "2 < unaff_s7" (number_literal "2") (< "<") (identifier "unaff_s7")) () ")")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_2c == *(undefined4 **)puVar2) {\n    return *(undefined4 **)puVar2;\n  }" (if "if") (parenthesized_expression "(local_2c == *(undefined4 **)puVar2)" (( "(") (binary_expression "local_2c == *(undefined4 **)puVar2" (identifier "local_2c") (== "==") (pointer_expression "*(undefined4 **)puVar2" (* "*") (cast_expression "(undefined4 **)puVar2" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return *(undefined4 **)puVar2;\n  }" ({ "{") (return_statement "return *(undefined4 **)puVar2;" (return "return") (pointer_expression "*(undefined4 **)puVar2" (* "*") (cast_expression "(undefined4 **)puVar2" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar2"))) (; ";")) (} "}"))) (expression_statement "uVar24 = 0x24ba0;" (assignment_expression "uVar24 = 0x24ba0" (identifier "uVar24") (= "=") (number_literal "0x24ba0")) (; ";")) (expression_statement "puVar18 = PTR___stack_chk_fail_00044c90;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00044c90" (identifier "puVar18") (= "=") (identifier "PTR___stack_chk_fail_00044c90")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00044c90)();" (call_expression "(*(code *)PTR___stack_chk_fail_00044c90)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00044c90)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00044c90" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00044c90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00044c90"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar5 = *(int **)(puVar18 + 0x20100);" (assignment_expression "piVar5 = *(int **)(puVar18 + 0x20100)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(puVar18 + 0x20100)" (* "*") (cast_expression "(int **)(puVar18 + 0x20100)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20100)" (( "(") (binary_expression "puVar18 + 0x20100" (identifier "puVar18") (+ "+") (number_literal "0x20100")) () ")"))))) (; ";")) (expression_statement "local_84 = *piVar5;" (assignment_expression "local_84 = *piVar5" (identifier "local_84") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" (identifier "puVar3") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" (identifier "puVar6") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "local_80 = unaff_s0;" (assignment_expression "local_80 = unaff_s0" (identifier "local_80") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "local_7c = unaff_s1;" (assignment_expression "local_7c = unaff_s1" (identifier "local_7c") (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "local_78 = unaff_s2;" (assignment_expression "local_78 = unaff_s2" (identifier "local_78") (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "local_74 = unaff_s3;" (assignment_expression "local_74 = unaff_s3" (identifier "local_74") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "local_70 = unaff_s4;" (assignment_expression "local_70 = unaff_s4" (identifier "local_70") (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "local_6c = unaff_s5;" (assignment_expression "local_6c = unaff_s5" (identifier "local_6c") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "local_68 = unaff_s6;" (assignment_expression "local_68 = unaff_s6" (identifier "local_68") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "local_64 = unaff_s7;" (assignment_expression "local_64 = unaff_s7" (identifier "local_64") (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "local_60 = unaff_s8;" (assignment_expression "local_60 = unaff_s8" (identifier "local_60") (= "=") (identifier "unaff_s8")) (; ";")) (expression_statement "local_5c = uVar24;" (assignment_expression "local_5c = uVar24" (identifier "local_5c") (= "=") (identifier "uVar24")) (; ";")) (if_statement "if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }" (if "if") (parenthesized_expression "((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0))))" (( "(") (binary_expression "(puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))" (parenthesized_expression "(puVar7[0xc] != 0)" (( "(") (binary_expression "puVar7[0xc] != 0" (subscript_expression "puVar7[0xc]" (identifier "puVar7") ([ "[") (number_literal "0xc") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))" (( "(") (parenthesized_expression "(*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0))" (( "(") (binary_expression "*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)" (binary_expression "*(char *)((int)puVar7 + 3) == '\0'" (pointer_expression "*(char *)((int)puVar7 + 3)" (* "*") (cast_expression "(char *)((int)puVar7 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + 3)" (( "(") (binary_expression "(int)puVar7 + 3" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "3")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(puVar7[8] == 0)" (( "(") (binary_expression "puVar7[8] == 0" (subscript_expression "puVar7[8]" (identifier "puVar7") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);\n  }" ({ "{") (expression_statement "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);" (call_expression "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68)" (parenthesized_expression "(**(code **)(puVar18 + 0x200d0))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x200d0)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x200d0)" (* "*") (cast_expression "(code **)(puVar18 + 0x200d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x200d0)" (( "(") (binary_expression "puVar18 + 0x200d0" (identifier "puVar18") (+ "+") (number_literal "0x200d0")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar18 + 0x2000c) + -0xc68)" (( "(") (binary_expression "*(int *)(puVar18 + 0x2000c) + -0xc68" (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")")))) (+ "+") (number_literal "-0xc68")) () ")"))) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 + -4;" (assignment_expression "param_2 = param_2 + -4" (identifier "param_2") (= "=") (binary_expression "param_2 + -4" (identifier "param_2") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "puVar21 = (ushort *)(param_1 + 4);" (assignment_expression "puVar21 = (ushort *)(param_1 + 4)" (identifier "puVar21") (= "=") (cast_expression "(ushort *)(param_1 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (3 < (int)param_2) {\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }" (if "if") (parenthesized_expression "(3 < (int)param_2)" (( "(") (binary_expression "3 < (int)param_2" (number_literal "3") (< "<") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")")) (compound_statement "{\n    iVar11 = *(int *)(puVar18 + 0x20004);\n    iVar16 = *(int *)(puVar18 + 0x2000c);\n    iVar15 = *(int *)(puVar18 + 0x2000c);\n    cVar8 = *(char *)((int)puVar7 + 9);\n    iVar4 = *(int *)(puVar18 + 0x2000c);\n    iVar9 = *(int *)(puVar18 + 0x2000c);\n    do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);\n  }" ({ "{") (expression_statement "iVar11 = *(int *)(puVar18 + 0x20004);" (assignment_expression "iVar11 = *(int *)(puVar18 + 0x20004)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar18 + 0x20004)" (* "*") (cast_expression "(int *)(puVar18 + 0x20004)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x20004)" (( "(") (binary_expression "puVar18 + 0x20004" (identifier "puVar18") (+ "+") (number_literal "0x20004")) () ")"))))) (; ";")) (expression_statement "iVar16 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar16 = *(int *)(puVar18 + 0x2000c)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")"))))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar15 = *(int *)(puVar18 + 0x2000c)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")"))))) (; ";")) (expression_statement "cVar8 = *(char *)((int)puVar7 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 9)" (identifier "cVar8") (= "=") (pointer_expression "*(char *)((int)puVar7 + 9)" (* "*") (cast_expression "(char *)((int)puVar7 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + 9)" (( "(") (binary_expression "(int)puVar7 + 9" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar4 = *(int *)(puVar18 + 0x2000c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar18 + 0x2000c);" (assignment_expression "iVar9 = *(int *)(puVar18 + 0x2000c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")"))))) (; ";")) (do_statement "do {\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    } while (3 < (int)param_2);" (do "do") (compound_statement "{\n      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;\n      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);\n      puVar12 = (undefined4 *)(uint)*puVar21;\n      puVar14 = puVar13 + 4;\n      if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }\n      param_2 = param_2 + -(int)puVar14;\n      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);\n    }" ({ "{") (expression_statement "puVar3 = (undefined1 *)(uint)*(byte *)puVar21;" (assignment_expression "puVar3 = (undefined1 *)(uint)*(byte *)puVar21" (identifier "puVar3") (= "=") (binary_expression "(undefined1 *)(uint)*(byte *)puVar21" (cast_expression "(undefined1 *)(uint)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)puVar21" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar21")))) (; ";")) (expression_statement "puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);" (assignment_expression "puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3)" (identifier "puVar13") (= "=") (binary_expression "(undefined1 *)(uint)*(byte *)((int)puVar21 + 3)" (cast_expression "(undefined1 *)(uint)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)((int)puVar21 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + 3)" (( "(") (binary_expression "(int)puVar21 + 3" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "puVar12 = (undefined4 *)(uint)*puVar21;" (assignment_expression "puVar12 = (undefined4 *)(uint)*puVar21" (identifier "puVar12") (= "=") (binary_expression "(undefined4 *)(uint)*puVar21" (cast_expression "(undefined4 *)(uint)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "puVar21"))) (; ";")) (expression_statement "puVar14 = puVar13 + 4;" (assignment_expression "puVar14 = puVar13 + 4" (identifier "puVar14") (= "=") (binary_expression "puVar13 + 4" (identifier "puVar13") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (cVar8 == '\0') {\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }\n      else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" (if "if") (parenthesized_expression "(cVar8 == '\0')" (( "(") (binary_expression "cVar8 == '\0'" (identifier "cVar8") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }\n        cVar8 = *(char *)((int)puVar7 + 9);\n        puVar6 = puVar12;\n        if (cVar8 != '\0') break;\n      }" ({ "{") (labeled_statement "LAB_00024c9c:\n        if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" (statement_identifier "LAB_00024c9c") (: ":") (if_statement "if (puVar12 < (undefined4 *)0x1000) {\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }\n        else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" (if "if") (parenthesized_expression "(puVar12 < (undefined4 *)0x1000)" (( "(") (binary_expression "puVar12 < (undefined4 *)0x1000" (identifier "puVar12") (< "<") (cast_expression "(undefined4 *)0x1000" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1000"))) () ")")) (compound_statement "{\n          if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }\n          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);\n          puVar12 = (undefined4 *)0x0;\n          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n          puVar3 = puVar13;\nLAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" ({ "{") (if_statement "if (puVar12 < (undefined4 *)0x82) {\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }" (if "if") (parenthesized_expression "(puVar12 < (undefined4 *)0x82)" (( "(") (binary_expression "puVar12 < (undefined4 *)0x82" (identifier "puVar12") (< "<") (cast_expression "(undefined4 *)0x82" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x82"))) () ")")) (compound_statement "{\n                    \n                    \n            puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();\n            return puVar7;\n          }" ({ "{") (expression_statement "puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))();" (assignment_expression "puVar7 = (undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)\n                     (*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))()" (parenthesized_expression "(*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)))" (( "(") (pointer_expression "*(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" (* "*") (cast_expression "(code *)(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670))" (( "(") (binary_expression "puVar18 +\n                               (int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" (identifier "puVar18") (+ "+") (cast_expression "(int)(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(\n                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670)" (( "(") (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4) + 0x670" (binary_expression ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"\n                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" (string_literal ""  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"" (" """) (string_content "  where sg_logs") (escape_sequence "\'") (string_content " lesser used options are:") (escape_sequence "\n") (string_content "    --control=PC|-c PC    page control(PC) (default: 1)") (escape_sequence "\n") (string_content "                          0: current threshold, 1: current cumulative") (escape_sequence "\n") (string_content "                          2: default threshold, 3: default cumulative") (escape_sequence "\n") (string_content "    --list|-l       list supported log page names (equivalent to ") (escape_sequence "\'") (string_content "-p sp") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "                    use twice to list supported log page and subpage names") (escape_sequence "\n") (string_content "    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)") (escape_sequence "\n") (string_content "                           when > 1 will request LEN bytes") (escape_sequence "\n") (string_content "    --name|-n       decode some pages into multiple name=value lines") (escape_sequence "\n") (string_content "    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)") (escape_sequence "\n") (string_content "    --old|-O        use old interface (use as first option)") (escape_sequence "\n") (string_content "    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)") (escape_sequence "\n") (string_content "    --pcb|-q        show parameter control bytes in decoded output") (escape_sequence "\n") (string_content "    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)") (escape_sequence "\n") (string_content "    --pdt=DT|-D DT    DT is peripheral device type to use with ") (escape_sequence "\'") (string_content "--in=FN") (escape_sequence "\'") (escape_sequence "\n") (string_content "                      or when ") (escape_sequence "\'") (string_content "--no_inq") (escape_sequence "\'") (string_content " is used") (escape_sequence "\n") (string_content "    --readonly|-X    open DEVICE read-only (def: first read-write then if") (escape_sequence "\n") (string_content "                     fails try open again read-only)") (escape_sequence "\n") (string_content "    --reset|-R      reset log parameters (takes PC and SP into account)") (escape_sequence "\n") (string_content "                    (uses PCR bit in LOG SELECT)") (escape_sequence "\n") (string_content "    --select|-S     perform LOG SELECT (def: LOG SENSE)") (escape_sequence "\n") (string_content "    --sp|-s         set the Saving Parameters (SP) bit (def: 0)") (escape_sequence "\n") (string_content "    --version|-V    output version string then exit") (escape_sequence "\n") (escape_sequence "\n") (string_content "If DEVICE and --select are given, a LOG SELECT command will be issued.") (escape_sequence "\n") (string_content "If DEVICE is not given and ") (escape_sequence "\'") (string_content "--in=FN") (escape_sequence "\'") (string_content " is given then FN will decoded as if") (escape_sequence "\n") (string_content "it were a log page. The contents of FN generated by either a prior") (escape_sequence "\n") (escape_sequence "\'") (string_content "sg_logs -HHH ...") (escape_sequence "\'") (string_content " invocation or by a text editor.") (escape_sequence "\n") (string_content "Log pages defined in SPC are common to all device types.") (escape_sequence "\n") (" """)) (+ "+") (pointer_expression "*(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" (* "*") (cast_expression "(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4)" (( "(") (binary_expression "*(int *)(puVar18 + 0x2000c) + 0x2b80 +\n                                              (int)puVar12 * 4" (binary_expression "*(int *)(puVar18 + 0x2000c) + 0x2b80" (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")")))) (+ "+") (number_literal "0x2b80")) (+ "+") (binary_expression "(int)puVar12 * 4" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (number_literal "0x670")) () ")")))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x20088)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x20088)" (* "*") (cast_expression "(code **)(puVar18 + 0x20088)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20088)" (( "(") (binary_expression "puVar18 + 0x20088" (identifier "puVar18") (+ "+") (number_literal "0x20088")) () ")"))))) () ")")) (argument_list "(1,*(int *)(puVar18 + 0x2000c) + -0x718)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x718" (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")")))) (+ "+") (number_literal "-0x718")) () ")"))) (; ";")) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x200e0)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x200e0)" (* "*") (cast_expression "(code **)(puVar18 + 0x200e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x200e0)" (( "(") (binary_expression "puVar18 + 0x200e0" (identifier "puVar18") (+ "+") (number_literal "0x200e0")) () ")"))))) () ")")) (argument_list "(puVar21 + 2)" (( "(") (binary_expression "puVar21 + 2" (identifier "puVar21") (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "puVar3 = puVar13;" (assignment_expression "puVar3 = puVar13" (identifier "puVar3") (= "=") (identifier "puVar13")) (; ";")) (labeled_statement "LAB_00024d18:\n          cVar8 = *(char *)((int)puVar7 + 1);" (statement_identifier "LAB_00024d18") (: ":") (expression_statement "cVar8 = *(char *)((int)puVar7 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 1)" (identifier "cVar8") (= "=") (pointer_expression "*(char *)((int)puVar7 + 1)" (* "*") (cast_expression "(char *)((int)puVar7 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + 1)" (( "(") (binary_expression "(int)puVar7 + 1" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "1")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" (else "else") (compound_statement "{\n          if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }\n          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);\n          if (puVar13 < &DAT_00000008) goto LAB_00024d18;\n          puVar17 = (uint *)(puVar21 + 4);\n          do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));\n          cVar8 = *(char *)((int)puVar7 + 1);\n        }" ({ "{") (if_statement "if (puVar12 != (undefined4 *)0x1000) {\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }" (if "if") (parenthesized_expression "(puVar12 != (undefined4 *)0x1000)" (( "(") (binary_expression "puVar12 != (undefined4 *)0x1000" (identifier "puVar12") (!= "!=") (cast_expression "(undefined4 *)0x1000" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1000"))) () ")")) (compound_statement "{\n            if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }\n            puVar12 = (undefined4 *)0x0;\n            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);\n            puVar3 = puVar13;\n            goto LAB_00024d18;\n          }" ({ "{") (if_statement "if (puVar12 < (undefined4 *)0x8000) {\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }\n            else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" (if "if") (parenthesized_expression "(puVar12 < (undefined4 *)0x8000)" (( "(") (binary_expression "puVar12 < (undefined4 *)0x8000" (identifier "puVar12") (< "<") (cast_expression "(undefined4 *)0x8000" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x8000"))) () ")")) (compound_statement "{\n              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);\n            }" ({ "{") (expression_statement "(**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x20088)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x20088)" (* "*") (cast_expression "(code **)(puVar18 + 0x20088)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20088)" (( "(") (binary_expression "puVar18 + 0x20088" (identifier "puVar18") (+ "+") (number_literal "0x20088")) () ")"))))) () ")")) (argument_list "(1,iVar9 + -0x634)" (( "(") (number_literal "1") (, ",") (binary_expression "iVar9 + -0x634" (identifier "iVar9") (+ "+") (number_literal "-0x634")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" (else "else") (compound_statement "{\n              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);\n            }" ({ "{") (expression_statement "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);" (call_expression "(**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x20088)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x20088)" (* "*") (cast_expression "(code **)(puVar18 + 0x20088)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20088)" (( "(") (binary_expression "puVar18 + 0x20088" (identifier "puVar18") (+ "+") (number_literal "0x20088")) () ")"))))) () ")")) (argument_list "(1,*(int *)(puVar18 + 0x2000c) + -0x668)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x668" (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")")))) (+ "+") (number_literal "-0x668")) () ")"))) (; ";")) (} "}")))) (expression_statement "puVar12 = (undefined4 *)0x0;" (assignment_expression "puVar12 = (undefined4 *)0x0" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21 + 2)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x200e0)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x200e0)" (* "*") (cast_expression "(code **)(puVar18 + 0x200e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x200e0)" (( "(") (binary_expression "puVar18 + 0x200e0" (identifier "puVar18") (+ "+") (number_literal "0x200e0")) () ")"))))) () ")")) (argument_list "(puVar21 + 2)" (( "(") (binary_expression "puVar21 + 2" (identifier "puVar21") (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "puVar3 = puVar13;" (assignment_expression "puVar3 = puVar13" (identifier "puVar3") (= "=") (identifier "puVar13")) (; ";")) (goto_statement "goto LAB_00024d18;" (goto "goto") (statement_identifier "LAB_00024d18") (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);" (call_expression "(**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8)" (parenthesized_expression "(**(code **)(puVar18 + 0x200d0))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x200d0)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x200d0)" (* "*") (cast_expression "(code **)(puVar18 + 0x200d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x200d0)" (( "(") (binary_expression "puVar18 + 0x200d0" (identifier "puVar18") (+ "+") (number_literal "0x200d0")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar18 + 0x2000c) + -0x6e8)" (( "(") (binary_expression "*(int *)(puVar18 + 0x2000c) + -0x6e8" (pointer_expression "*(int *)(puVar18 + 0x2000c)" (* "*") (cast_expression "(int *)(puVar18 + 0x2000c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x2000c)" (( "(") (binary_expression "puVar18 + 0x2000c" (identifier "puVar18") (+ "+") (number_literal "0x2000c")) () ")")))) (+ "+") (number_literal "-0x6e8")) () ")"))) (; ";")) (if_statement "if (puVar13 < &DAT_00000008) goto LAB_00024d18;" (if "if") (parenthesized_expression "(puVar13 < &DAT_00000008)" (( "(") (binary_expression "puVar13 < &DAT_00000008" (identifier "puVar13") (< "<") (pointer_expression "&DAT_00000008" (& "&") (identifier "DAT_00000008"))) () ")")) (goto_statement "goto LAB_00024d18;" (goto "goto") (statement_identifier "LAB_00024d18") (; ";"))) (expression_statement "puVar17 = (uint *)(puVar21 + 4);" (assignment_expression "puVar17 = (uint *)(puVar21 + 4)" (identifier "puVar17") (= "=") (cast_expression "(uint *)(puVar21 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar21 + 4)" (( "(") (binary_expression "puVar21 + 4" (identifier "puVar21") (+ "+") (number_literal "4")) () ")")))) (; ";")) (do_statement "do {\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));" (do "do") (compound_statement "{\n            (**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));\n            puVar12 = (undefined4 *)*puVar17;\n            puVar17 = puVar17 + 2;\n            puVar3 = (undefined1 *)(iVar15 + -0x688);\n            (**(code **)(puVar18 + 0x20088))(1);\n          }" ({ "{") (expression_statement "(**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));" (call_expression "(**(code **)(puVar18 + 0x20088))\n                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1))" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x20088)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x20088)" (* "*") (cast_expression "(code **)(puVar18 + 0x20088)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20088)" (( "(") (binary_expression "puVar18 + 0x20088" (identifier "puVar18") (+ "+") (number_literal "0x20088")) () ")"))))) () ")")) (argument_list "(1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1))" (( "(") (number_literal "1") (, ",") (binary_expression "iVar16 + -0x6b4" (identifier "iVar16") (+ "+") (number_literal "-0x6b4")) (, ",") (pointer_expression "*(byte *)((int)puVar17 + -2)" (* "*") (cast_expression "(byte *)((int)puVar17 + -2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + -2)" (( "(") (binary_expression "(int)puVar17 + -2" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (number_literal "-2")) () ")")))) (, ",") (pointer_expression "*(byte *)((int)puVar17 + -1)" (* "*") (cast_expression "(byte *)((int)puVar17 + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + -1)" (( "(") (binary_expression "(int)puVar17 + -1" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (number_literal "-1")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar12 = (undefined4 *)*puVar17;" (assignment_expression "puVar12 = (undefined4 *)*puVar17" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)*puVar17" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar3 = (undefined1 *)(iVar15 + -0x688);" (assignment_expression "puVar3 = (undefined1 *)(iVar15 + -0x688)" (identifier "puVar3") (= "=") (cast_expression "(undefined1 *)(iVar15 + -0x688)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x688)" (( "(") (binary_expression "iVar15 + -0x688" (identifier "iVar15") (+ "+") (number_literal "-0x688")) () ")")))) (; ";")) (expression_statement "(**(code **)(puVar18 + 0x20088))(1);" (call_expression "(**(code **)(puVar18 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x20088)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x20088)" (* "*") (cast_expression "(code **)(puVar18 + 0x20088)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20088)" (( "(") (binary_expression "puVar18 + 0x20088" (identifier "puVar18") (+ "+") (number_literal "0x20088")) () ")"))))) () ")")) (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10))" (( "(") (binary_expression "puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" (identifier "puVar17") (!= "!=") (cast_expression "(uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10)" (( "(") (binary_expression "(int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10" (binary_expression "(int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8)" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (parenthesized_expression "((uint)(puVar13 + -8) & 0xfffffff8)" (( "(") (binary_expression "(uint)(puVar13 + -8) & 0xfffffff8" (call_expression "(uint)(puVar13 + -8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar13 + -8)" (( "(") (binary_expression "puVar13 + -8" (identifier "puVar13") (+ "+") (number_literal "-8")) () ")"))) (& "&") (number_literal "0xfffffff8")) () ")"))) (+ "+") (number_literal "0x10")) () ")")))) () ")")) (; ";")) (expression_statement "cVar8 = *(char *)((int)puVar7 + 1);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 1)" (identifier "cVar8") (= "=") (pointer_expression "*(char *)((int)puVar7 + 1)" (* "*") (cast_expression "(char *)((int)puVar7 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + 1)" (( "(") (binary_expression "(int)puVar7 + 1" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}"))))) (if_statement "if (cVar8 != '\0') {\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }" (if "if") (parenthesized_expression "(cVar8 != '\0')" (( "(") (binary_expression "cVar8 != '\0'" (identifier "cVar8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);\n          puVar3 = (undefined1 *)(iVar4 + -0x70e4);\n          (**(code **)(puVar18 + 0x20088))(1);\n        }" ({ "{") (expression_statement "puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);" (assignment_expression "puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104)" (parenthesized_expression "(*(code *)(iVar11 + 0x4b24))" (( "(") (pointer_expression "*(code *)(iVar11 + 0x4b24)" (* "*") (cast_expression "(code *)(iVar11 + 0x4b24)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x4b24)" (( "(") (binary_expression "iVar11 + 0x4b24" (identifier "iVar11") (+ "+") (number_literal "0x4b24")) () ")")))) () ")")) (argument_list "(*(byte *)(puVar21 + 1),auStack_104)" (( "(") (pointer_expression "*(byte *)(puVar21 + 1)" (* "*") (cast_expression "(byte *)(puVar21 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar21 + 1)" (( "(") (binary_expression "puVar21 + 1" (identifier "puVar21") (+ "+") (number_literal "1")) () ")")))) (, ",") (identifier "auStack_104") () ")"))))) (; ";")) (expression_statement "puVar3 = (undefined1 *)(iVar4 + -0x70e4);" (assignment_expression "puVar3 = (undefined1 *)(iVar4 + -0x70e4)" (identifier "puVar3") (= "=") (cast_expression "(undefined1 *)(iVar4 + -0x70e4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x70e4)" (( "(") (binary_expression "iVar4 + -0x70e4" (identifier "iVar4") (+ "+") (number_literal "-0x70e4")) () ")")))) (; ";")) (expression_statement "(**(code **)(puVar18 + 0x20088))(1);" (call_expression "(**(code **)(puVar18 + 0x20088))(1)" (parenthesized_expression "(**(code **)(puVar18 + 0x20088))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x20088)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x20088)" (* "*") (cast_expression "(code **)(puVar18 + 0x20088)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20088)" (( "(") (binary_expression "puVar18 + 0x20088" (identifier "puVar18") (+ "+") (number_literal "0x20088")) () ")"))))) () ")")) (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "cVar8 = *(char *)((int)puVar7 + 9);" (assignment_expression "cVar8 = *(char *)((int)puVar7 + 9)" (identifier "cVar8") (= "=") (pointer_expression "*(char *)((int)puVar7 + 9)" (* "*") (cast_expression "(char *)((int)puVar7 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + 9)" (( "(") (binary_expression "(int)puVar7 + 9" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" (identifier "puVar6") (= "=") (identifier "puVar12")) (; ";")) (if_statement "if (cVar8 != '\0') break;" (if "if") (parenthesized_expression "(cVar8 != '\0')" (( "(") (binary_expression "cVar8 != '\0'" (identifier "cVar8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" (else "else") (compound_statement "{\n        puVar6 = puVar12;\n        if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }\n      }" ({ "{") (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" (identifier "puVar6") (= "=") (identifier "puVar12")) (; ";")) (if_statement "if ((undefined4 *)puVar7[0xd] == puVar12) {\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }" (if "if") (parenthesized_expression "((undefined4 *)puVar7[0xd] == puVar12)" (( "(") (binary_expression "(undefined4 *)puVar7[0xd] == puVar12" (cast_expression "(undefined4 *)puVar7[0xd]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[0xd]" (identifier "puVar7") ([ "[") (number_literal "0xd") (] "]"))) (== "==") (identifier "puVar12")) () ")")) (compound_statement "{\n          if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }\n          puVar6 = (undefined4 *)puVar7[8];\n          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;\n          if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }\n          (**(code **)(puVar18 + 0x200e0))(puVar21);\n          puVar3 = puVar14;\n          break;\n        }" ({ "{") (if_statement "if (*(char *)((int)puVar7 + 3) != '\0') {\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }" (if "if") (parenthesized_expression "(*(char *)((int)puVar7 + 3) != '\0')" (( "(") (binary_expression "*(char *)((int)puVar7 + 3) != '\0'" (pointer_expression "*(char *)((int)puVar7 + 3)" (* "*") (cast_expression "(char *)((int)puVar7 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + 3)" (( "(") (binary_expression "(int)puVar7 + 3" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (number_literal "3")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            puVar22 = puVar21;\n            do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);\n            break;\n          }" ({ "{") (expression_statement "puVar22 = puVar21;" (assignment_expression "puVar22 = puVar21" (identifier "puVar22") (= "=") (identifier "puVar21")) (; ";")) (do_statement "do {\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);" (do "do") (compound_statement "{\n              puVar23 = (ushort *)((int)puVar22 + 1);\n              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);\n              puVar6 = puVar12;\n              puVar22 = puVar23;\n            }" ({ "{") (expression_statement "puVar23 = (ushort *)((int)puVar22 + 1);" (assignment_expression "puVar23 = (ushort *)((int)puVar22 + 1)" (identifier "puVar23") (= "=") (cast_expression "(ushort *)((int)puVar22 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + 1)" (( "(") (binary_expression "(int)puVar22 + 1" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);" (call_expression "(**(code **)(puVar18 + 0x20094))(*(byte *)puVar22)" (parenthesized_expression "(**(code **)(puVar18 + 0x20094))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x20094)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x20094)" (* "*") (cast_expression "(code **)(puVar18 + 0x20094)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x20094)" (( "(") (binary_expression "puVar18 + 0x20094" (identifier "puVar18") (+ "+") (number_literal "0x20094")) () ")"))))) () ")")) (argument_list "(*(byte *)puVar22)" (( "(") (pointer_expression "*(byte *)puVar22" (* "*") (cast_expression "(byte *)puVar22" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar22"))) () ")"))) (; ";")) (expression_statement "puVar6 = puVar12;" (assignment_expression "puVar6 = puVar12" (identifier "puVar6") (= "=") (identifier "puVar12")) (; ";")) (expression_statement "puVar22 = puVar23;" (assignment_expression "puVar22 = puVar23" (identifier "puVar22") (= "=") (identifier "puVar23")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((ushort *)((int)puVar21 + (int)puVar14) != puVar23)" (( "(") (binary_expression "(ushort *)((int)puVar21 + (int)puVar14) != puVar23" (cast_expression "(ushort *)((int)puVar21 + (int)puVar14)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + (int)puVar14)" (( "(") (binary_expression "(int)puVar21 + (int)puVar14" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (cast_expression "(int)puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar14"))) () ")"))) (!= "!=") (identifier "puVar23")) () ")")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "puVar6 = (undefined4 *)puVar7[8];" (assignment_expression "puVar6 = (undefined4 *)puVar7[8]" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)puVar7[8]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[8]" (identifier "puVar7") ([ "[") (number_literal "8") (] "]")))) (; ";")) (if_statement "if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;" (if "if") (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar6 == (undefined4 *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00024c9c;" (goto "goto") (statement_identifier "LAB_00024c9c") (; ";"))) (if_statement "if (puVar6 != (undefined4 *)0x1) {\n            puVar6 = (undefined4 *)0xffffffff;\n          }" (if "if") (parenthesized_expression "(puVar6 != (undefined4 *)0x1)" (( "(") (binary_expression "puVar6 != (undefined4 *)0x1" (identifier "puVar6") (!= "!=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n            puVar6 = (undefined4 *)0xffffffff;\n          }" ({ "{") (expression_statement "puVar6 = (undefined4 *)0xffffffff;" (assignment_expression "puVar6 = (undefined4 *)0xffffffff" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)0xffffffff" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar18 + 0x200e0))(puVar21);" (call_expression "(**(code **)(puVar18 + 0x200e0))(puVar21)" (parenthesized_expression "(**(code **)(puVar18 + 0x200e0))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x200e0)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x200e0)" (* "*") (cast_expression "(code **)(puVar18 + 0x200e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x200e0)" (( "(") (binary_expression "puVar18 + 0x200e0" (identifier "puVar18") (+ "+") (number_literal "0x200e0")) () ")"))))) () ")")) (argument_list "(puVar21)" (( "(") (identifier "puVar21") () ")"))) (; ";")) (expression_statement "puVar3 = puVar14;" (assignment_expression "puVar3 = puVar14" (identifier "puVar3") (= "=") (identifier "puVar14")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}")))) (expression_statement "param_2 = param_2 + -(int)puVar14;" (assignment_expression "param_2 = param_2 + -(int)puVar14" (identifier "param_2") (= "=") (binary_expression "param_2 + -(int)puVar14" (identifier "param_2") (+ "+") (unary_expression "-(int)puVar14" (- "-") (cast_expression "(int)puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar14"))))) (; ";")) (expression_statement "puVar21 = (ushort *)((int)puVar21 + (int)puVar14);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + (int)puVar14)" (identifier "puVar21") (= "=") (cast_expression "(ushort *)((int)puVar21 + (int)puVar14)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + (int)puVar14)" (( "(") (binary_expression "(int)puVar21 + (int)puVar14" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (cast_expression "(int)puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar14"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(3 < (int)param_2)" (( "(") (binary_expression "3 < (int)param_2" (number_literal "3") (< "<") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (if_statement "if (local_84 == *piVar5) {\n    return (undefined4 *)0x1;\n  }" (if "if") (parenthesized_expression "(local_84 == *piVar5)" (( "(") (binary_expression "local_84 == *piVar5" (identifier "local_84") (== "==") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n    return (undefined4 *)0x1;\n  }" ({ "{") (return_statement "return (undefined4 *)0x1;" (return "return") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1")) (; ";")) (} "}"))) (expression_statement "pcVar19 = *(code **)(puVar18 + 0x200f0);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x200f0)" (identifier "pcVar19") (= "=") (pointer_expression "*(code **)(puVar18 + 0x200f0)" (* "*") (cast_expression "(code **)(puVar18 + 0x200f0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x200f0)" (( "(") (binary_expression "puVar18 + 0x200f0" (identifier "puVar18") (+ "+") (number_literal "0x200f0")) () ")"))))) (; ";")) (expression_statement "iVar4 = local_84;" (assignment_expression "iVar4 = local_84" (identifier "iVar4") (= "=") (identifier "local_84")) (; ";")) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" (( "(") (pointer_expression "*pcVar19" (* "*") (identifier "pcVar19")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar9 = (**(code **)(pcVar19 + 0x1f98c))();" (assignment_expression "iVar9 = (**(code **)(pcVar19 + 0x1f98c))()" (identifier "iVar9") (= "=") (call_expression "(**(code **)(pcVar19 + 0x1f98c))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1f98c))" (( "(") (pointer_expression "**(code **)(pcVar19 + 0x1f98c)" (* "*") (pointer_expression "*(code **)(pcVar19 + 0x1f98c)" (* "*") (cast_expression "(code **)(pcVar19 + 0x1f98c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x1f98c)" (( "(") (binary_expression "pcVar19 + 0x1f98c" (identifier "pcVar19") (+ "+") (number_literal "0x1f98c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar9 == 0) {\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);\n    return puVar6;\n  }" ({ "{") (if_statement "if ((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }\n    else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" (if "if") (parenthesized_expression "((puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1))" (( "(") (binary_expression "(puVar3 + -1 < &DAT_00000008) &&\n       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" (parenthesized_expression "(puVar3 + -1 < &DAT_00000008)" (( "(") (binary_expression "puVar3 + -1 < &DAT_00000008" (binary_expression "puVar3 + -1" (identifier "puVar3") (+ "+") (number_literal "-1")) (< "<") (pointer_expression "&DAT_00000008" (& "&") (identifier "DAT_00000008"))) () ")")) (&& "&&") (parenthesized_expression "(puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)" (( "(") (comma_expression "puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1" (assignment_expression "puVar13 = (undefined1 *)(iVar4 + 1)" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)(iVar4 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 1)" (( "(") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) () ")")))) (, ",") (binary_expression "puVar3 != (undefined1 *)0x1" (identifier "puVar3") (!= "!=") (cast_expression "(undefined1 *)0x1" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1")))) () ")"))) () ")")) (compound_statement "{\n      do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" ({ "{") (do_statement "do {\n        puVar13 = puVar13 + 1;\n      } while (puVar3 + iVar4 != puVar13);" (do "do") (compound_statement "{\n        puVar13 = puVar13 + 1;\n      }" ({ "{") (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 + iVar4 != puVar13)" (( "(") (binary_expression "puVar3 + iVar4 != puVar13" (binary_expression "puVar3 + iVar4" (identifier "puVar3") (+ "+") (identifier "iVar4")) (!= "!=") (identifier "puVar13")) () ")")) (; ";")) (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1f9e4);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1f9e4)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(pcVar19 + 0x1f9e4)" (* "*") (cast_expression "(code **)(pcVar19 + 0x1f9e4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x1f9e4)" (( "(") (binary_expression "pcVar19 + 0x1f9e4" (identifier "pcVar19") (+ "+") (number_literal "0x1f9e4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" (else "else") (compound_statement "{\n      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);\n    }" ({ "{") (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1f9e4);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1f9e4)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(pcVar19 + 0x1f9e4)" (* "*") (cast_expression "(code **)(pcVar19 + 0x1f9e4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x1f9e4)" (( "(") (binary_expression "pcVar19 + 0x1f9e4" (identifier "pcVar19") (+ "+") (number_literal "0x1f9e4")) () ")"))))) (; ";")) (} "}")))) (expression_statement "(*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);" (call_expression "(*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8)" (parenthesized_expression "(*pcVar20)" (( "(") (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) () ")")) (argument_list "(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8)" (( "(") (identifier "puVar6") (, ",") (number_literal "0x40") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x43e8" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" (* "*") (cast_expression "(int *)(pcVar19 + 0x1f8d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar19 + 0x1f8d0)" (( "(") (binary_expression "pcVar19 + 0x1f8d0" (identifier "pcVar19") (+ "+") (number_literal "0x1f8d0")) () ")")))) (+ "+") (number_literal "-0x43e8")) () ")"))) (; ";")) (return_statement "return puVar6;" (return "return") (identifier "puVar6") (; ";")) (} "}"))) (expression_statement "uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);" (assignment_expression "uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" (identifier "uVar24") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" (* "*") (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar19 + 0x1f8d0) + -0x3430)" (( "(") (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x3430" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" (* "*") (cast_expression "(int *)(pcVar19 + 0x1f8d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar19 + 0x1f8d0)" (( "(") (binary_expression "pcVar19 + 0x1f8d0" (identifier "pcVar19") (+ "+") (number_literal "0x1f8d0")) () ")")))) (+ "+") (number_literal "-0x3430")) () ")"))))) (; ";")) (expression_statement "*puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);" (assignment_expression "*puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" (* "*") (cast_expression "(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar19 + 0x1f8d0) + -0x3434)" (( "(") (binary_expression "*(int *)(pcVar19 + 0x1f8d0) + -0x3434" (pointer_expression "*(int *)(pcVar19 + 0x1f8d0)" (* "*") (cast_expression "(int *)(pcVar19 + 0x1f8d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar19 + 0x1f8d0)" (( "(") (binary_expression "pcVar19 + 0x1f8d0" (identifier "pcVar19") (+ "+") (number_literal "0x1f8d0")) () ")")))) (+ "+") (number_literal "-0x3434")) () ")"))))) (; ";")) (expression_statement "puVar6[1] = uVar24;" (assignment_expression "puVar6[1] = uVar24" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar24")) (; ";")) (return_statement "return puVar6;" (return "return") (identifier "puVar6") (; ";")) (} "}")))

void function_1(uint8_t *var_3,int var_2,type_1 in_hex)

{
  type_2 bVar1;
  type_3 *puVar2;
  type_4 *var_29;
  int var_8;
  int *piVar5;
  char var_18;
  type_5 *var_12;
  type_5 uVar7;
  int var_20;
  type_2 *var_9;
  int var_24;
  type_6 in_register_00000018;
  type_5 *puVar12;
  type_5 *var_19;
  type_2 *var_7;
  type_4 *var_17;
  int var_14;
  type_4 *puVar15;
  uint16_t *unaff_s2;
  type_4 *var_26;
  type_4 *unaff_s3;
  type_3 *unaff_s4;
  type_5 *unaff_s5;
  int var_23;
  type_4 *unaff_s6;
  int var_21;
  type_7 var_5;
  type_7 *var_22;
  type_3 *var_13;
  type_8 *pcVar21;
  type_7 var_4;
  type_9 *var_16;
  type_9 *puVar23;
  type_9 *var_25;
  type_8 *var_28;
  type_4 auStack_104 [128];
  int var_27;
  type_2 *pbStack_80;
  int iStack_7c;
  uint16_t *puStack_78;
  type_4 *puStack_74;
  type_3 *puStack_70;
  type_5 *puStack_6c;
  type_4 *puStack_68;
  type_7 uStack_64;
  type_7 uStack_60;
  type_8 *pcStack_5c;
  type_7 var_11;
  type_7 var_10;
  uint16_t u;
  int var_15;
  
  puVar2 = PTR___stack_chk_guard_00044ca0;
  var_13 = var_6;
  var_12 = (type_5 *)var_1(in_register_00000018,in_hex);
  var_15 = *(int *)PTR___stack_chk_guard_00044ca0;
  puVar12 = var_12;
  if (3 < var_2) {
    var_4 = (type_7)*var_3;
    var_5 = var_4 + 1;
    var_7 = var_3;
    if (2 < var_5) {
      unaff_s2 = &u;
      var_29 = var_6 + -0xd9c;
      unaff_s6 = var_6 + -0xd58;
      unaff_s3 = var_6 + -0xd18;
      var_14 = var_2;
      do {
        u = *(uint16_t *)(var_7 + 2);
        unaff_s5 = (type_5 *)(type_7)u;
        var_8 = (*(type_8 *)PTR_sg_all_ffs_00044c68)(var_7 + 4,var_4 - 2);
        puVar12 = unaff_s5;
        if (var_8 == 0) {
LAB_00024a4c:
          var_11 = 0;
          if (var_4 - 4 < 8) {
            var_10 = (type_7)var_7[4];
            var_9 = var_7 + 5;
            if (4 < var_4) {
              do {
                bVar1 = *var_9;
                var_9 = var_9 + 1;
                var_11 = var_10 >> 0x18 | var_11 << 8;
                var_10 = (type_7)bVar1 | var_10 << 8;
              } while (var_7 + var_5 != var_9);
            }
          }
          else {
            var_10 = 0;
          }
          if (var_12 == (type_5 *)0x0) {
            var_3 = (uint8_t *)0x1;
            var_2 = (int)unaff_s6;
            (*(type_8 *)PTR___printf_chk_00044c28)();
          }
          else {
            var_3 = (uint8_t *)0x1;
            var_2 = (int)var_29;
            (*(type_8 *)PTR___printf_chk_00044c28)();
          }
        }
        else if (var_7[var_4 + 2] == 0xfe) {
          var_2 = (int)(var_13 + -0xcd0);
          var_3 = (uint8_t *)0x1;
          (*(type_8 *)PTR___printf_chk_00044c28)();
        }
        else {
          if (var_7[var_4 + 2] != 0xff) goto LAB_00024a4c;
          var_3 = (uint8_t *)0x1;
          var_2 = (int)unaff_s3;
          (*(type_8 *)PTR___printf_chk_00044c28)();
        }
        var_14 = var_14 - var_5;
        var_7 = var_7 + var_5;
        unaff_s4 = var_13;
        if (var_14 < 4) break;
        var_4 = (type_7)*var_7;
        var_5 = var_4 + 1;
      } while (2 < var_5);
    }
  }
  if (var_15 == *(int *)puVar2) {
    return;
  }
  var_28 = show_device_stats_page;
  var_13 = PTR___stack_chk_fail_00044c90;
  (*(type_8 *)PTR___stack_chk_fail_00044c90)();
  piVar5 = *(int **)(var_13 + 0x20100);
  var_27 = *piVar5;
  var_29 = (type_4 *)var_2;
  var_12 = puVar12;
  pbStack_80 = var_7;
  iStack_7c = var_14;
  puStack_78 = unaff_s2;
  puStack_74 = unaff_s3;
  puStack_70 = unaff_s4;
  puStack_6c = unaff_s5;
  puStack_68 = unaff_s6;
  uStack_64 = var_5;
  uStack_60 = var_4;
  pcStack_5c = var_28;
  if ((puVar12[0xc] != 0) || ((*(char *)((int)puVar12 + 3) == '\0' && (puVar12[8] == 0)))) {
    (**(type_8 **)(var_13 + 0x200d0))(*(int *)(var_13 + 0x2000c) + -0xc68);
  }
  var_26 = (type_4 *)(var_2 + -4);
  var_16 = (type_9 *)(var_3 + 4);
  if (3 < (int)var_26) {
    var_24 = *(int *)(var_13 + 0x20004);
    var_21 = *(int *)(var_13 + 0x2000c);
    var_23 = *(int *)(var_13 + 0x2000c);
    var_18 = *(char *)((int)puVar12 + 9);
    var_8 = *(int *)(var_13 + 0x2000c);
    var_20 = *(int *)(var_13 + 0x2000c);
    do {
      var_29 = (type_4 *)(type_7)*(type_2 *)var_16;
      var_17 = (type_4 *)(type_7)*(type_2 *)((int)var_16 + 3);
      var_19 = (type_5 *)(type_7)*var_16;
      puVar15 = var_17 + 4;
      if (var_18 == '\0') {
LAB_00024c9c:
        if (var_19 < (type_5 *)0x1000) {
          if (var_19 < (type_5 *)0x82) {
                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (*(type_8 *)(var_13 +
                      (int)(
                           "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"
                           + *(int *)(*(int *)(var_13 + 0x2000c) + 0x2b80 + (int)var_19 * 4) +
                             0x670)))();
            return;
          }
          (**(type_8 **)(var_13 + 0x20088))(1,*(int *)(var_13 + 0x2000c) + -0x718);
          var_19 = (type_5 *)0x0;
          (**(type_8 **)(var_13 + 0x200e0))(var_16 + 2);
          var_29 = var_17;
LAB_00024d18:
          var_18 = *(char *)((int)puVar12 + 1);
        }
        else {
          if (var_19 != (type_5 *)0x1000) {
            if (var_19 < (type_5 *)0x8000) {
              (**(type_8 **)(var_13 + 0x20088))(1,var_20 + -0x634);
            }
            else {
              (**(type_8 **)(var_13 + 0x20088))(1,*(int *)(var_13 + 0x2000c) + -0x668);
            }
            var_19 = (type_5 *)0x0;
            (**(type_8 **)(var_13 + 0x200e0))(var_16 + 2);
            var_29 = var_17;
            goto LAB_00024d18;
          }
          (**(type_8 **)(var_13 + 0x200d0))(*(int *)(var_13 + 0x2000c) + -0x6e8);
          if (var_17 < &DAT_00000008) goto LAB_00024d18;
          var_22 = (type_7 *)(var_16 + 4);
          do {
            (**(type_8 **)(var_13 + 0x20088))
                      (1,var_21 + -0x6b4,*(type_2 *)((int)var_22 + -2),*(type_2 *)((int)var_22 + -1));
            var_19 = (type_5 *)*var_22;
            var_22 = var_22 + 2;
            var_29 = (type_4 *)(var_23 + -0x688);
            (**(type_8 **)(var_13 + 0x20088))(1);
          } while (var_22 != (type_7 *)((int)var_16 + ((type_7)(var_17 + -8) & 0xfffffff8) + 0x10));
          var_18 = *(char *)((int)puVar12 + 1);
        }
        if (var_18 != '\0') {
          var_19 = (type_5 *)
                    (*(type_8 *)(&DAT_00004b24 + var_24))(*(type_2 *)(var_16 + 1),auStack_104);
          var_29 = (type_4 *)(var_8 + -0x70e4);
          (**(type_8 **)(var_13 + 0x20088))(1);
        }
        var_18 = *(char *)((int)puVar12 + 9);
        var_12 = var_19;
        if (var_18 != '\0') break;
      }
      else {
        var_12 = var_19;
        if ((type_5 *)puVar12[0xd] == var_19) {
          if (*(char *)((int)puVar12 + 3) != '\0') {
            puVar23 = var_16;
            do {
              var_25 = (type_9 *)((int)puVar23 + 1);
              (**(type_8 **)(var_13 + 0x20094))(*(type_2 *)puVar23);
              var_12 = var_19;
              puVar23 = var_25;
            } while ((type_9 *)((int)var_16 + (int)puVar15) != var_25);
            break;
          }
          var_12 = (type_5 *)puVar12[8];
          if (var_12 == (type_5 *)0x0) goto LAB_00024c9c;
          if (var_12 != (type_5 *)0x1) {
            var_12 = (type_5 *)0xffffffff;
          }
          (**(type_8 **)(var_13 + 0x200e0))(var_16);
          var_29 = puVar15;
          break;
        }
      }
      var_26 = var_26 + -(int)puVar15;
      var_16 = (type_9 *)((int)var_16 + (int)puVar15);
    } while (3 < (int)var_26);
  }
  if (var_27 == *piVar5) {
    return;
  }
  var_28 = *(type_8 **)(var_13 + 0x200f0);
  var_8 = var_27;
  (*var_28)();
  var_20 = (**(type_8 **)(var_28 + 0x1f98c))();
  if (var_20 == 0) {
    if ((var_29 + -1 < &DAT_00000008) &&
       (var_26 = (type_4 *)(var_8 + 1), var_29 != (type_4 *)0x1)) {
      do {
        var_26 = var_26 + 1;
      } while (var_29 + var_8 != var_26);
      pcVar21 = *(type_8 **)(var_28 + 0x1f9e4);
    }
    else {
      pcVar21 = *(type_8 **)(var_28 + 0x1f9e4);
    }
    (*pcVar21)(var_12,0x40,1,0xffffffff,*(int *)(var_28 + 0x1f8d0) + -0x43e8);
    return;
  }
  uVar7 = *(type_5 *)(*(int *)(var_28 + 0x1f8d0) + -0x3430);
  *var_12 = *(type_5 *)(*(int *)(var_28 + 0x1f8d0) + -0x3434);
  var_12[1] = uVar7;
  return;
}


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

undefined4 * MASKED(byte *param_1,undefined1 *param_2,undefined4 *param_3)

{
  byte bVar1;
  undefined *puVar2;
  undefined1 *puVar3;
  int iVar4;
  int *piVar5;
  char cVar8;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  undefined4 *puVar12;
  byte *unaff_s0;
  undefined1 *puVar13;
  undefined1 *unaff_s1;
  undefined1 *puVar14;
  ushort *unaff_s2;
  undefined1 *unaff_s3;
  undefined *unaff_s4;
  undefined4 *unaff_s5;
  int iVar15;
  undefined1 *unaff_s6;
  int iVar16;
  uint unaff_s7;
  uint *puVar17;
  undefined *puVar18;
  code *pcVar19;
  code *pcVar20;
  uint unaff_s8;
  ushort *puVar21;
  ushort *puVar22;
  ushort *puVar23;
  undefined4 uVar24;
  undefined1 auStack_104 [128];
  int local_84;
  byte *local_80;
  undefined1 *local_7c;
  ushort *local_78;
  undefined1 *local_74;
  undefined *local_70;
  undefined4 *local_6c;
  undefined1 *local_68;
  uint local_64;
  uint local_60;
  undefined4 local_5c;
  uint local_48;
  uint local_44;
  ushort local_2e;
  undefined4 *local_2c;
  
  puVar2 = PTR___stack_chk_guard_00044ca0;
  puVar18 = PTR_s_e_capacity_partition_s___MB___00044bac;
  local_2c = *(undefined4 **)PTR___stack_chk_guard_00044ca0;
  puVar7 = param_3;
  if (3 < (int)param_2) {
    unaff_s8 = (uint)*param_1;
    unaff_s7 = unaff_s8 + 1;
    unaff_s0 = param_1;
    if (2 < unaff_s7) {
      unaff_s2 = &local_2e;
      puVar3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd9c;
      unaff_s6 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd58;
      unaff_s3 = PTR_s_e_capacity_partition_s___MB___00044bac + -0xd18;
      unaff_s1 = param_2;
      do {
        local_2e = *(ushort *)(unaff_s0 + 2);
        unaff_s5 = (undefined4 *)(uint)local_2e;
        iVar4 = (*(code *)PTR_sg_all_ffs_00044c68)(unaff_s0 + 4,unaff_s8 - 2);
        puVar7 = unaff_s5;
        if (iVar4 == 0) {
LAB_00024a4c:
          local_48 = 0;
          if (unaff_s8 - 4 < 8) {
            local_44 = (uint)unaff_s0[4];
            pbVar10 = unaff_s0 + 5;
            if (4 < unaff_s8) {
              do {
                bVar1 = *pbVar10;
                pbVar10 = pbVar10 + 1;
                local_48 = local_44 >> 0x18 | local_48 << 8;
                local_44 = (uint)bVar1 | local_44 << 8;
              } while (unaff_s0 + unaff_s7 != pbVar10);
            }
          }
          else {
            local_44 = 0;
          }
          if (param_3 == (undefined4 *)0x0) {
            param_1 = (byte *)0x1;
            param_2 = unaff_s6;
            (*(code *)PTR___printf_chk_00044c28)();
          }
          else {
            param_1 = (byte *)0x1;
            param_2 = puVar3;
            (*(code *)PTR___printf_chk_00044c28)();
          }
        }
        else if (unaff_s0[unaff_s8 + 2] == 0xfe) {
          param_2 = puVar18 + -0xcd0;
          param_1 = (byte *)0x1;
          (*(code *)PTR___printf_chk_00044c28)();
        }
        else {
          if (unaff_s0[unaff_s8 + 2] != 0xff) goto LAB_00024a4c;
          param_1 = (byte *)0x1;
          param_2 = unaff_s3;
          (*(code *)PTR___printf_chk_00044c28)();
        }
        unaff_s1 = unaff_s1 + -unaff_s7;
        unaff_s0 = unaff_s0 + unaff_s7;
        unaff_s4 = puVar18;
        if ((int)unaff_s1 < 4) break;
        unaff_s8 = (uint)*unaff_s0;
        unaff_s7 = unaff_s8 + 1;
      } while (2 < unaff_s7);
    }
  }
  if (local_2c == *(undefined4 **)puVar2) {
    return *(undefined4 **)puVar2;
  }
  uVar24 = 0x24ba0;
  puVar18 = PTR___stack_chk_fail_00044c90;
  (*(code *)PTR___stack_chk_fail_00044c90)();
  piVar5 = *(int **)(puVar18 + 0x20100);
  local_84 = *piVar5;
  puVar3 = param_2;
  puVar6 = puVar7;
  local_80 = unaff_s0;
  local_7c = unaff_s1;
  local_78 = unaff_s2;
  local_74 = unaff_s3;
  local_70 = unaff_s4;
  local_6c = unaff_s5;
  local_68 = unaff_s6;
  local_64 = unaff_s7;
  local_60 = unaff_s8;
  local_5c = uVar24;
  if ((puVar7[0xc] != 0) || ((*(char *)((int)puVar7 + 3) == '\0' && (puVar7[8] == 0)))) {
    (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0xc68);
  }
  param_2 = param_2 + -4;
  puVar21 = (ushort *)(param_1 + 4);
  if (3 < (int)param_2) {
    iVar11 = *(int *)(puVar18 + 0x20004);
    iVar16 = *(int *)(puVar18 + 0x2000c);
    iVar15 = *(int *)(puVar18 + 0x2000c);
    cVar8 = *(char *)((int)puVar7 + 9);
    iVar4 = *(int *)(puVar18 + 0x2000c);
    iVar9 = *(int *)(puVar18 + 0x2000c);
    do {
      puVar3 = (undefined1 *)(uint)*(byte *)puVar21;
      puVar13 = (undefined1 *)(uint)*(byte *)((int)puVar21 + 3);
      puVar12 = (undefined4 *)(uint)*puVar21;
      puVar14 = puVar13 + 4;
      if (cVar8 == '\0') {
LAB_00024c9c:
        if (puVar12 < (undefined4 *)0x1000) {
          if (puVar12 < (undefined4 *)0x82) {
                    /* WARNING: Could not recover jumptable at 0x00024cc8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            puVar7 = (undefined4 *)
                     (*(code *)(puVar18 +
                               (int)(
                                    "  where sg_logs\' lesser used options are:\n    --control=PC|-c PC    page control(PC) (default: 1)\n                          0: current threshold, 1: current cumulative\n                          2: default threshold, 3: default cumulative\n    --list|-l       list supported log page names (equivalent to \'-p sp\')\n                    use twice to list supported log page and subpage names\n    --maxlen=LEN|-m LEN    max response length (def: 0 -> everything)\n                           when > 1 will request LEN bytes\n    --name|-n       decode some pages into multiple name=value lines\n    --no_inq|-x     no initial INQUIRY output (twice: and no INQUIRY call)\n    --old|-O        use old interface (use as first option)\n    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n    --pcb|-q        show parameter control bytes in decoded output\n    --ppc|-Q        set the Parameter Pointer Control (PPC) bit (def: 0)\n    --pdt=DT|-D DT    DT is peripheral device type to use with \'--in=FN\'\n                      or when \'--no_inq\' is used\n    --readonly|-X    open DEVICE read-only (def: first read-write then if\n                     fails try open again read-only)\n    --reset|-R      reset log parameters (takes PC and SP into account)\n                    (uses PCR bit in LOG SELECT)\n    --select|-S     perform LOG SELECT (def: LOG SENSE)\n    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n    --version|-V    output version string then exit\n\nIf DEVICE and --select are given, a LOG SELECT command will be issued.\nIf DEVICE is not given and \'--in=FN\' is given then FN will decoded as if\nit were a log page. The contents of FN generated by either a prior\n\'sg_logs -HHH ...\' invocation or by a text editor.\nLog pages defined in SPC are common to all device types.\n"
                                    + *(int *)(*(int *)(puVar18 + 0x2000c) + 0x2b80 +
                                              (int)puVar12 * 4) + 0x670)))();
            return puVar7;
          }
          (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x718);
          puVar12 = (undefined4 *)0x0;
          (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);
          puVar3 = puVar13;
LAB_00024d18:
          cVar8 = *(char *)((int)puVar7 + 1);
        }
        else {
          if (puVar12 != (undefined4 *)0x1000) {
            if (puVar12 < (undefined4 *)0x8000) {
              (**(code **)(puVar18 + 0x20088))(1,iVar9 + -0x634);
            }
            else {
              (**(code **)(puVar18 + 0x20088))(1,*(int *)(puVar18 + 0x2000c) + -0x668);
            }
            puVar12 = (undefined4 *)0x0;
            (**(code **)(puVar18 + 0x200e0))(puVar21 + 2);
            puVar3 = puVar13;
            goto LAB_00024d18;
          }
          (**(code **)(puVar18 + 0x200d0))(*(int *)(puVar18 + 0x2000c) + -0x6e8);
          if (puVar13 < &DAT_00000008) goto LAB_00024d18;
          puVar17 = (uint *)(puVar21 + 4);
          do {
            (**(code **)(puVar18 + 0x20088))
                      (1,iVar16 + -0x6b4,*(byte *)((int)puVar17 + -2),*(byte *)((int)puVar17 + -1));
            puVar12 = (undefined4 *)*puVar17;
            puVar17 = puVar17 + 2;
            puVar3 = (undefined1 *)(iVar15 + -0x688);
            (**(code **)(puVar18 + 0x20088))(1);
          } while (puVar17 != (uint *)((int)puVar21 + ((uint)(puVar13 + -8) & 0xfffffff8) + 0x10));
          cVar8 = *(char *)((int)puVar7 + 1);
        }
        if (cVar8 != '\0') {
          puVar12 = (undefined4 *)(*(code *)(iVar11 + 0x4b24))(*(byte *)(puVar21 + 1),auStack_104);
          puVar3 = (undefined1 *)(iVar4 + -0x70e4);
          (**(code **)(puVar18 + 0x20088))(1);
        }
        cVar8 = *(char *)((int)puVar7 + 9);
        puVar6 = puVar12;
        if (cVar8 != '\0') break;
      }
      else {
        puVar6 = puVar12;
        if ((undefined4 *)puVar7[0xd] == puVar12) {
          if (*(char *)((int)puVar7 + 3) != '\0') {
            puVar22 = puVar21;
            do {
              puVar23 = (ushort *)((int)puVar22 + 1);
              (**(code **)(puVar18 + 0x20094))(*(byte *)puVar22);
              puVar6 = puVar12;
              puVar22 = puVar23;
            } while ((ushort *)((int)puVar21 + (int)puVar14) != puVar23);
            break;
          }
          puVar6 = (undefined4 *)puVar7[8];
          if (puVar6 == (undefined4 *)0x0) goto LAB_00024c9c;
          if (puVar6 != (undefined4 *)0x1) {
            puVar6 = (undefined4 *)0xffffffff;
          }
          (**(code **)(puVar18 + 0x200e0))(puVar21);
          puVar3 = puVar14;
          break;
        }
      }
      param_2 = param_2 + -(int)puVar14;
      puVar21 = (ushort *)((int)puVar21 + (int)puVar14);
    } while (3 < (int)param_2);
  }
  if (local_84 == *piVar5) {
    return (undefined4 *)0x1;
  }
  pcVar19 = *(code **)(puVar18 + 0x200f0);
  iVar4 = local_84;
  (*pcVar19)();
  iVar9 = (**(code **)(pcVar19 + 0x1f98c))();
  if (iVar9 == 0) {
    if ((puVar3 + -1 < &DAT_00000008) &&
       (puVar13 = (undefined1 *)(iVar4 + 1), puVar3 != (undefined1 *)0x1)) {
      do {
        puVar13 = puVar13 + 1;
      } while (puVar3 + iVar4 != puVar13);
      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);
    }
    else {
      pcVar20 = *(code **)(pcVar19 + 0x1f9e4);
    }
    (*pcVar20)(puVar6,0x40,1,0xffffffff,*(int *)(pcVar19 + 0x1f8d0) + -0x43e8);
    return puVar6;
  }
  uVar24 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3430);
  *puVar6 = *(undefined4 *)(*(int *)(pcVar19 + 0x1f8d0) + -0x3434);
  puVar6[1] = uVar24;
  return puVar6;
}

