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

int main(int argc,char **argv)

{
  char cVar1;
  undefined *puVar2;
  char **argv_00;
  _Bool _Var3;
  char cVar4;
  ushort uVar5;
  char *pcVar6;
  size_t sVar7;
  int iVar8;
  char *pcVar9;
  int iVar10;
  void **ppvVar11;
  int iVar12;
  ushort **ppuVar13;
  size_t sVar14;
  size_t sVar15;
  page_code_desc *ppVar16;
  int iVar17;
  uint uVar18;
  uint uVar19;
  opts_t *poVar20;
  int iVar21;
  int in_GS_OFFSET;
  byte bVar22;
  undefined4 uVar23;
  void **ppvVar24;
  undefined4 uVar25;
  int *piVar26;
  int local_29c;
  void **local_280;
  int local_27c;
  int local_278;
  char *local_274;
  int local_268;
  void *local_264;
  void *local_260;
  uint local_25c;
  opts_t local_258;
  char local_228;
  char local_227;
  char local_226 [514];
  int local_24;
  int *local_18;
  
  argv_00 = argv;
  iVar21 = argc;
  bVar22 = 0;
  local_18 = &argc;
  local_24 = *(int *)(in_GS_OFFSET + 0x14);
  local_264 = (void *)0x0;
  local_260 = (void *)0x0;
  poVar20 = &local_258;
  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {
    poVar20->do_deftest = false;
    poVar20->do_doff = false;
    poVar20->do_extdur = false;
    poVar20->do_list = false;
    poVar20 = (opts_t *)&poVar20->do_pf;
  }
  local_258.maxlen = 0x1000;
  local_258.page_code = 0xffffffff;
  pcVar6 = getenv("SG3_UTILS_OLD_OPTS");
  if (pcVar6 == (char *)0x0) {
    local_258.opt_new = true;
    iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00);
    if (iVar17 == 0) {
      if (local_258.opt_new == false) {
        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);
        goto LAB_000115cc;
      }
      if (local_258.do_help == 0) goto LAB_0001131a;
LAB_0001141a:
      iVar21 = 0;
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
      goto LAB_000112e2;
    }
  }
  else {
    local_258.opt_new = false;
    iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);
    if (iVar17 == 0) {
      if (local_258.opt_new == false) {
        if (local_258.do_help != 0) {
LAB_000115ee:
          iVar21 = 0;
          puts(
              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
              );
          goto LAB_000112e2;
        }
      }
      else {
        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);
LAB_000115cc:
        if (iVar21 != 0) goto LAB_000112dd;
        if (local_258.do_help != 0) {
          if (local_258.opt_new != false) goto LAB_0001141a;
          goto LAB_000115ee;
        }
      }
LAB_0001131a:
      if (local_258.verbose_given == false) {
LAB_00011445:
        if (local_258.version_given != false) {
          iVar21 = 0;
          pr2serr();
          goto LAB_000112e2;
        }
      }
      else if (local_258.version_given != false) {
        pr2serr();
        goto LAB_00011445;
      }
      iVar17 = local_258.maxlen;
      _Var3 = local_258.do_raw;
      if (local_258.device_name != (char *)0x0) {
        local_280 = (void **)local_258.verbose;
        if (local_258.do_raw == false) {
          local_278 = 0;
          local_27c = 0;
        }
        else {
          local_27c = sg_memalign();
          iVar21 = local_258.maxlen;
          puVar2 = PTR_stdin_00015ff0;
          if (local_27c == 0) {
            iVar21 = 99;
            pr2serr();
            goto LAB_000112e2;
          }
          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;
          if (*local_258.raw_arg == '-') {
            local_228 = '\0';
            local_29c = 0;
            pcVar6 = local_226 + 2;
            local_278 = 0;
            do {
              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);
              if (pcVar9 == (char *)0x0) break;
              uVar19 = 0xffffffff;
              pcVar9 = pcVar6;
              do {
                if (uVar19 == 0) break;
                uVar19 = uVar19 - 1;
                cVar4 = *pcVar9;
                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;
              } while (cVar4 != '\0');
              uVar19 = ~uVar19;
              if (uVar19 - 1 == 0) {
LAB_00011c3f:
                local_228 = '\0';
              }
              else {
                sVar7 = uVar19 - 1;
                cVar4 = _Var3;
                if (local_226[uVar19] == '\n') {
                  local_226[uVar19] = '\0';
                  if (uVar19 - 2 == 0) goto LAB_00011c3f;
                  cVar4 = '\0';
                  sVar7 = uVar19 - 2;
                }
                local_274 = pcVar6;
                if (local_228 != '\0') {
                  ppuVar13 = __ctype_b_loc();
                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {
                    local_227 = local_226[2];
                    local_226[0] = '\0';
                    iVar10 = __isoc99_sscanf();
                    if (iVar10 != 1) {
                      pr2serr();
                      goto LAB_00011955;
                    }
                    sVar7 = sVar7 - 1;
                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;
                    local_274 = local_226 + 3;
                  }
                  local_228 = '\0';
                }
                sVar14 = strspn(local_274," \t");
                if (sVar14 != sVar7) {
                  local_274 = local_274 + sVar14;
                  if (*local_274 != '#') {
                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");
                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))
                    goto LAB_000122f0;
                    iVar10 = 0;
                    do {
                      iVar8 = __isoc99_sscanf();
                      if (iVar8 != 1) {
                        if (*local_274 != '#') {
                          pr2serr();
                          goto LAB_00011955;
                        }
                        goto LAB_00011c1c;
                      }
                      if (0xff < local_25c) {
                        pr2serr();
                        goto LAB_00011955;
                      }
                      if (cVar4 != '\0') {
                        iVar8 = -1;
                        pcVar9 = local_274;
                        do {
                          if (iVar8 == 0) break;
                          iVar8 = iVar8 + -1;
                          cVar1 = *pcVar9;
                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;
                        } while (cVar1 != '\0');
                        if (iVar8 == -3) {
                          local_228 = *local_274;
                        }
                      }
                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;
                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;
                      iVar10 = iVar10 + 1;
                      local_274 = strpbrk(local_274," ,\t");
                      if (local_274 == (char *)0x0) goto LAB_00011c1c;
                      sVar7 = strspn(local_274," ,\t");
                      local_274 = local_274 + sVar7;
                      if (*local_274 == '\0') goto LAB_00011c1c;
                    } while (iVar10 != 0x400);
                    iVar10 = 0x401;
LAB_00011c1c:
                    local_278 = local_278 + iVar10;
                  }
                }
              }
              local_29c = local_29c + 1;
            } while (local_29c != 0x200);
          }
          else {
            uVar19 = 0xffffffff;
            pcVar6 = local_258.raw_arg;
            do {
              if (uVar19 == 0) break;
              uVar19 = uVar19 - 1;
              cVar4 = *pcVar6;
              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;
            } while (cVar4 != '\0');
            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");
            if (~uVar19 - 1 != sVar7) {
LAB_00011945:
              pr2serr();
              goto LAB_00011955;
            }
            pcVar6 = local_258.raw_arg;
            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {
              iVar8 = __isoc99_sscanf();
              if (iVar8 != 1) goto LAB_00011945;
              if (0xff < local_25c) {
                pr2serr();
                goto LAB_00011955;
              }
              *(char *)(local_27c + iVar10) = (char)local_25c;
              pcVar9 = strchr(pcVar6,0x2c);
              pcVar6 = strchr(pcVar6,0x20);
              if (pcVar9 == (char *)0x0) {
                if (pcVar6 == (char *)0x0) {
                  local_278 = iVar10 + 1;
                  goto LAB_00011382;
                }
              }
              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {
                pcVar6 = pcVar9;
              }
              pcVar6 = pcVar6 + 1;
            }
            local_278 = iVar10 + 1;
            if (iVar21 == iVar10) {
LAB_00011f16:
              pr2serr();
              goto LAB_00011955;
            }
          }
        }
LAB_00011382:
        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {
          if (local_258.do_selftest < 1) goto LAB_00011621;
          if (local_258.do_deftest != false) {
LAB_000119dc:
            if (local_258.opt_new == false) {
              pcVar6 = "either set -s=SF or -t (not both)";
              goto LAB_000118f8;
            }
            pcVar6 = "either set --selftest=SF or --test (not both)";
            goto LAB_0001187f;
          }
          if (local_258.do_raw != false) goto LAB_000113c3;
        }
        else {
          if (local_258.do_deftest == false) {
            if (local_258.opt_new == false) {
              pcVar6 = "setting -doff or -uoff only useful when -t is set";
              goto LAB_000118f8;
            }
            pcVar6 = "setting --doff or --uoff only useful when -t is set";
            goto LAB_0001187f;
          }
          if (0 < local_258.do_selftest) goto LAB_000119dc;
LAB_00011621:
          if (local_258.do_raw != false) {
            if ((local_258._0_4_ & 0xffff00ff) != 0) {
LAB_000113c3:
              if (local_258.opt_new == false) {
                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_000118f8:
                iVar21 = 0x1f;
                puts(pcVar6);
                puts(
                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                    );
                goto LAB_000117b2;
              }
              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_0001187f:
              iVar21 = 0x1f;
              puts(pcVar6);
              puts(
                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                  );
              goto LAB_000117b2;
            }
            if (local_258.do_pf == false) {
              if (local_258.opt_new == false) {
                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");
              }
              else {
                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");
              }
            }
          }
        }
        iVar10 = sg_cmds_open_device();
        if (iVar10 < 0) {
          if ((void **)local_258.verbose != (void **)0x0) {
            safe_strerror();
            pr2serr();
          }
          iVar21 = sg_convert_errno();
          goto LAB_000117b2;
        }
        ppvVar11 = (void **)(uint)(3 < local_258.verbose);
        ppvVar24 = &local_264;
        uVar23 = 0;
        iVar12 = sg_memalign();
        iVar8 = local_258.page_code;
        if (iVar12 == 0) {
          iVar21 = 99;
          pr2serr();
          sg_cmds_close_device();
          goto LAB_000117b2;
        }
        if (local_258.do_extdur == false) {
          if (local_258.do_list == false) {
            if (-1 < local_258.page_code) goto LAB_000116de;
            if (local_258.do_raw == false) {
              uVar19 = local_258.page_code;
              uVar18 = 0;
              if (((local_258.do_deftest == false) &&
                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&
                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {
                uVar18 = local_258.timeout;
              }
              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,
                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,
                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);
              if (iVar21 != 0) {
LAB_00011cc5:
                if (iVar21 == 6) {
                  pr2serr();
                }
                else if (iVar21 == 0xb) {
                  pr2serr();
                }
                else if (iVar21 == 2) {
                  pr2serr();
                }
                else {
                  pr2serr();
                }
                goto LAB_00011ce9;
              }
              if (local_258.do_selftest - 5U < 2) {
                puts("Foreground self-test returned GOOD status");
              }
              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&
                      (local_258.do_uoff == false)) {
                puts("Default self-test returned GOOD status");
              }
            }
            else {
              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,
                                       local_258.verbose,local_258.verbose);
              if (iVar21 != 0) goto LAB_00011cc5;
            }
            goto LAB_00011796;
          }
          if (local_258.page_code < 0) {
            uVar23 = 1;
            ppvVar24 = (void **)local_258.verbose;
            ppvVar11 = (void **)local_258.verbose;
            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,
                                     local_258.verbose);
            if (iVar21 != 0) goto LAB_00011cc5;
          }
LAB_000116de:
          uVar19 = 0;
          if (-1 < iVar8) {
            uVar19 = iVar8;
          }
          local_25c = 0;
          iVar21 = sg_ll_receive_diag_v2
                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,
                              local_258.verbose,uVar23,ppvVar24,ppvVar11);
          if (iVar21 == 0) {
            iVar17 = iVar17 - local_25c;
            if (iVar17 < 4) {
              pr2serr();
              pr2serr();
              goto joined_r0x0001216b;
            }
            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;
            if (iVar17 <= iVar21) {
              iVar21 = iVar17;
            }
            if (local_258.do_hex < 2) {
              ppVar16 = pc_desc_arr;
              if (iVar8 < 1) {
                puts("Supported diagnostic pages response:");
                if (local_258.do_hex == 0) {
                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {
                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);
                    ppVar16 = pc_desc_arr;
                    do {
                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))
                      break;
                      ppVar16 = ppVar16 + 1;
                    } while ((option *)ppVar16 != long_options);
                    __printf_chk();
                  }
                  goto LAB_00011796;
                }
              }
              else {
                while( true ) {
                  uVar19 = ppVar16->page_code;
                  if (uVar19 == iVar8) break;
                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||
                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;
                }
                if (ppVar16->desc != (char *)0x0) {
                  __printf_chk();
                  goto LAB_00012134;
                }
LAB_00012121:
                __printf_chk();
              }
LAB_00012134:
              hex2stdout();
            }
            else {
              hex2stdout();
            }
          }
          else {
            pr2serr();
joined_r0x0001216b:
            iVar21 = 0;
            if (local_258.verbose < 2) goto LAB_00011e1d;
          }
LAB_00011796:
          sg_cmds_close_device();
        }
        else {
          local_25c = 0;
          iVar21 = sg_ll_mode_sense10_v2
                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);
          if (iVar21 == 0) {
            if (3 < (int)(0x20 - local_25c)) {
              piVar26 = &local_268;
              uVar25 = 0;
              uVar23 = 0x20;
              iVar21 = sg_msense_calc_length();
              if (iVar21 - (local_268 + 8) < 0xc) {
                puts("Extended self-test duration not available");
              }
              else {
                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);
                uVar5 = uVar5 << 8 | uVar5 >> 8;
                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",
                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);
              }
              goto LAB_00011796;
            }
            iVar21 = 0x31;
            pr2serr();
          }
          else {
            sg_get_category_sense_str();
            pr2serr();
          }
          puts("Extended self-test duration (mode page 0xa) failed");
LAB_00011ce9:
          if (1 < local_258.verbose) {
            sg_cmds_close_device();
            goto LAB_000117b2;
          }
LAB_00011e1d:
          pr2serr();
          sg_cmds_close_device();
          if (iVar21 != 0) goto LAB_000117b2;
        }
        iVar21 = sg_convert_errno();
        goto LAB_000117b2;
      }
      if (local_258.do_list != false) {
        ppVar16 = pc_desc_arr;
        puts("Page_Code  Description");
        do {
          ppVar16 = ppVar16 + 1;
          __printf_chk();
        } while ((option *)ppVar16 != long_options);
        iVar21 = 0;
        goto LAB_000112e2;
      }
      pr2serr();
      if (local_258.opt_new == false) {
        iVar21 = 1;
        puts(
            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
            );
        goto LAB_000112e2;
      }
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
  }
LAB_000112dd:
  iVar21 = 1;
LAB_000112e2:
  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {
    __stack_chk_fail_local();
LAB_000122f0:
    pr2serr();
LAB_00011955:
    if (local_258.opt_new == false) {
      iVar21 = 1;
      puts("Bad sequence after \'-raw=\' option");
      puts(
          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
    else {
      iVar21 = 1;
      puts("Bad sequence after \'--raw=\' option");
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
LAB_000117b2:
    if (local_260 != (void *)0x0) {
      free(local_260);
    }
    if (local_264 != (void *)0x0) {
      free(local_264);
    }
    if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {
      pr2serr();
    }
    if (iVar21 < 0) {
      iVar21 = 99;
    }
  }
  return iVar21;
}



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

int FUN_00011230(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  char cVar2;
  char cVar3;
  ushort uVar4;
  char *pcVar5;
  size_t sVar6;
  char *pcVar7;
  int iVar8;
  void **ppvVar9;
  int iVar10;
  undefined *puVar11;
  int iVar12;
  ushort **ppuVar13;
  size_t sVar14;
  size_t sVar15;
  undefined **ppuVar16;
  int iVar17;
  uint uVar18;
  undefined *puVar19;
  undefined4 *puVar20;
  int in_GS_OFFSET;
  byte bVar21;
  undefined4 uVar22;
  void **ppvVar23;
  undefined4 uVar24;
  int *piVar25;
  int local_29c;
  void **local_280;
  int local_27c;
  int local_278;
  char *local_274;
  int local_268;
  void *local_264;
  void *local_260;
  uint local_25c;
  undefined4 local_258;
  char local_254;
  char local_253;
  char local_252;
  char local_251;
  char local_250;
  char local_24f;
  int local_24c;
  int local_248;
  int local_244;
  undefined *local_240;
  int local_23c;
  undefined *local_238;
  void **local_234;
  int local_230;
  char *local_22c;
  char local_228;
  char local_227;
  char local_226 [514];
  int local_24;
  undefined4 *local_18;
  
  bVar21 = 0;
  local_18 = &param_1;
  local_24 = *(int *)(in_GS_OFFSET + 0x14);
  local_264 = (void *)0x0;
  local_260 = (void *)0x0;
  puVar20 = &local_258;
  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {
    *puVar20 = 0;
    puVar20 = puVar20 + 1;
  }
  local_244 = 0x1000;
  local_240 = (undefined *)0xffffffff;
  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");
  if (pcVar5 == (char *)0x0) {
    local_251 = '\x01';
    iVar17 = FUN_00012510();
    if (iVar17 == 0) {
      if (local_251 == '\0') {
        iVar17 = FUN_00012820();
        goto LAB_000115cc;
      }
      if (local_24c == 0) goto LAB_0001131a;
LAB_0001141a:
      iVar17 = 0;
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
      goto LAB_000112e2;
    }
  }
  else {
    local_251 = '\0';
    iVar17 = FUN_00012820();
    if (iVar17 == 0) {
      if (local_251 == '\0') {
        if (local_24c != 0) {
LAB_000115ee:
          iVar17 = 0;
          puts(
              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
              );
          goto LAB_000112e2;
        }
      }
      else {
        iVar17 = FUN_00012510();
LAB_000115cc:
        if (iVar17 != 0) goto LAB_000112dd;
        if (local_24c != 0) {
          if (local_251 != '\0') goto LAB_0001141a;
          goto LAB_000115ee;
        }
      }
LAB_0001131a:
      if (local_250 == '\0') {
LAB_00011445:
        if (local_24f != '\0') {
          iVar17 = 0;
          pr2serr();
          goto LAB_000112e2;
        }
      }
      else if (local_24f != '\0') {
        pr2serr();
        goto LAB_00011445;
      }
      iVar12 = local_244;
      cVar3 = local_253;
      if (local_230 != 0) {
        local_280 = local_234;
        if (local_253 == '\0') {
          local_278 = 0;
          local_27c = 0;
        }
        else {
          local_27c = sg_memalign();
          iVar17 = local_244;
          puVar19 = PTR_stdin_00015ff0;
          if (local_27c == 0) {
            iVar17 = 99;
            pr2serr();
            goto LAB_000112e2;
          }
          if (local_22c == (char *)0x0) goto LAB_00011955;
          if (*local_22c == '-') {
            local_228 = '\0';
            local_29c = 0;
            pcVar5 = local_226 + 2;
            local_278 = 0;
            do {
              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);
              if (pcVar7 == (char *)0x0) break;
              uVar18 = 0xffffffff;
              pcVar7 = pcVar5;
              do {
                if (uVar18 == 0) break;
                uVar18 = uVar18 - 1;
                cVar1 = *pcVar7;
                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;
              } while (cVar1 != '\0');
              uVar18 = ~uVar18;
              if (uVar18 - 1 == 0) {
LAB_00011c3f:
                local_228 = '\0';
              }
              else {
                sVar6 = uVar18 - 1;
                cVar1 = cVar3;
                if (local_226[uVar18] == '\n') {
                  local_226[uVar18] = '\0';
                  if (uVar18 - 2 == 0) goto LAB_00011c3f;
                  cVar1 = '\0';
                  sVar6 = uVar18 - 2;
                }
                local_274 = pcVar5;
                if (local_228 != '\0') {
                  ppuVar13 = __ctype_b_loc();
                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {
                    local_227 = local_226[2];
                    local_226[0] = '\0';
                    iVar8 = __isoc99_sscanf();
                    if (iVar8 != 1) {
                      pr2serr();
                      goto LAB_00011955;
                    }
                    sVar6 = sVar6 - 1;
                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;
                    local_274 = local_226 + 3;
                  }
                  local_228 = '\0';
                }
                sVar14 = strspn(local_274," \t");
                if (sVar14 != sVar6) {
                  local_274 = local_274 + sVar14;
                  if (*local_274 != '#') {
                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");
                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))
                    goto LAB_000122f0;
                    iVar8 = 0;
                    do {
                      iVar10 = __isoc99_sscanf();
                      if (iVar10 != 1) {
                        if (*local_274 != '#') {
                          pr2serr();
                          goto LAB_00011955;
                        }
                        goto LAB_00011c1c;
                      }
                      if (0xff < local_25c) {
                        pr2serr();
                        goto LAB_00011955;
                      }
                      if (cVar1 != '\0') {
                        iVar10 = -1;
                        pcVar7 = local_274;
                        do {
                          if (iVar10 == 0) break;
                          iVar10 = iVar10 + -1;
                          cVar2 = *pcVar7;
                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;
                        } while (cVar2 != '\0');
                        if (iVar10 == -3) {
                          local_228 = *local_274;
                        }
                      }
                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;
                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;
                      iVar8 = iVar8 + 1;
                      local_274 = strpbrk(local_274," ,\t");
                      if (local_274 == (char *)0x0) goto LAB_00011c1c;
                      sVar6 = strspn(local_274," ,\t");
                      local_274 = local_274 + sVar6;
                      if (*local_274 == '\0') goto LAB_00011c1c;
                    } while (iVar8 != 0x400);
                    iVar8 = 0x401;
LAB_00011c1c:
                    local_278 = local_278 + iVar8;
                  }
                }
              }
              local_29c = local_29c + 1;
            } while (local_29c != 0x200);
          }
          else {
            uVar18 = 0xffffffff;
            pcVar5 = local_22c;
            do {
              if (uVar18 == 0) break;
              uVar18 = uVar18 - 1;
              cVar3 = *pcVar5;
              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;
            } while (cVar3 != '\0');
            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");
            if (~uVar18 - 1 != sVar6) {
LAB_00011945:
              pr2serr();
              goto LAB_00011955;
            }
            pcVar5 = local_22c;
            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {
              iVar10 = __isoc99_sscanf();
              if (iVar10 != 1) goto LAB_00011945;
              if (0xff < local_25c) {
                pr2serr();
                goto LAB_00011955;
              }
              *(char *)(local_27c + iVar8) = (char)local_25c;
              pcVar7 = strchr(pcVar5,0x2c);
              pcVar5 = strchr(pcVar5,0x20);
              if (pcVar7 == (char *)0x0) {
                if (pcVar5 == (char *)0x0) {
                  local_278 = iVar8 + 1;
                  goto LAB_00011382;
                }
              }
              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {
                pcVar5 = pcVar7;
              }
              pcVar5 = pcVar5 + 1;
            }
            local_278 = iVar8 + 1;
            if (iVar17 == iVar8) {
LAB_00011f16:
              pr2serr();
              goto LAB_00011955;
            }
          }
        }
LAB_00011382:
        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {
          if (local_23c < 1) goto LAB_00011621;
          if ((char)local_258 != '\0') {
LAB_000119dc:
            if (local_251 == '\0') {
              pcVar5 = "either set -s=SF or -t (not both)";
              goto LAB_000118f8;
            }
            pcVar5 = "either set --selftest=SF or --test (not both)";
            goto LAB_0001187f;
          }
          if (local_253 != '\0') goto LAB_000113c3;
        }
        else {
          if ((char)local_258 == '\0') {
            if (local_251 == '\0') {
              pcVar5 = "setting -doff or -uoff only useful when -t is set";
              goto LAB_000118f8;
            }
            pcVar5 = "setting --doff or --uoff only useful when -t is set";
            goto LAB_0001187f;
          }
          if (0 < local_23c) goto LAB_000119dc;
LAB_00011621:
          if (local_253 != '\0') {
            if ((local_258 & 0xffff00ff) != 0) {
LAB_000113c3:
              if (local_251 == '\0') {
                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_000118f8:
                iVar17 = 0x1f;
                puts(pcVar5);
                puts(
                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                    );
                goto LAB_000117b2;
              }
              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_0001187f:
              iVar17 = 0x1f;
              puts(pcVar5);
              puts(
                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                  );
              goto LAB_000117b2;
            }
            if (local_254 == '\0') {
              if (local_251 == '\0') {
                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");
              }
              else {
                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");
              }
            }
          }
        }
        iVar8 = sg_cmds_open_device();
        if (iVar8 < 0) {
          if (local_234 != (void **)0x0) {
            safe_strerror();
            pr2serr();
          }
          iVar17 = sg_convert_errno();
          goto LAB_000117b2;
        }
        ppvVar9 = (void **)(uint)(3 < (int)local_234);
        ppvVar23 = &local_264;
        uVar22 = 0;
        iVar10 = sg_memalign();
        puVar19 = local_240;
        if (iVar10 == 0) {
          iVar17 = 99;
          pr2serr();
          sg_cmds_close_device();
          goto LAB_000117b2;
        }
        if (local_258._2_1_ == '\0') {
          if (local_258._3_1_ == '\0') {
            if (-1 < (int)local_240) goto LAB_000116de;
            if (local_253 == '\0') {
              puVar11 = (undefined *)0x0;
              if ((((char)local_258 == '\0') &&
                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&
                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {
                puVar11 = local_238;
              }
              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,
                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,
                                       puVar19);
              if (iVar17 != 0) {
LAB_00011cc5:
                if (iVar17 == 6) {
                  pr2serr();
                }
                else if (iVar17 == 0xb) {
                  pr2serr();
                }
                else if (iVar17 == 2) {
                  pr2serr();
                }
                else {
                  pr2serr();
                }
                goto LAB_00011ce9;
              }
              if (local_23c - 5U < 2) {
                puts("Foreground self-test returned GOOD status");
              }
              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&
                      (local_252 == '\0')) {
                puts("Default self-test returned GOOD status");
              }
            }
            else {
              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,
                                       local_234);
              if (iVar17 != 0) goto LAB_00011cc5;
            }
            goto LAB_00011796;
          }
          if ((int)local_240 < 0) {
            uVar22 = 1;
            ppvVar23 = local_234;
            ppvVar9 = local_234;
            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);
            if (iVar17 != 0) goto LAB_00011cc5;
          }
LAB_000116de:
          puVar11 = (undefined *)0x0;
          if (-1 < (int)puVar19) {
            puVar11 = puVar19;
          }
          local_25c = 0;
          iVar17 = sg_ll_receive_diag_v2
                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,
                              local_234,uVar22,ppvVar23,ppvVar9);
          if (iVar17 == 0) {
            iVar12 = iVar12 - local_25c;
            if (iVar12 < 4) {
              pr2serr();
              pr2serr();
              goto joined_r0x0001216b;
            }
            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;
            if (iVar12 <= iVar17) {
              iVar17 = iVar12;
            }
            if (local_248 < 2) {
              ppuVar16 = (undefined **)&DAT_00016020;
              if ((int)puVar19 < 1) {
                puts("Supported diagnostic pages response:");
                if (local_248 == 0) {
                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {
                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);
                    ppuVar16 = (undefined **)&DAT_00016020;
                    do {
                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;
                      ppuVar16 = ppuVar16 + 2;
                    } while (ppuVar16 != &PTR_DAT_000160c0);
                    __printf_chk();
                  }
                  goto LAB_00011796;
                }
              }
              else {
                while( true ) {
                  puVar11 = *ppuVar16;
                  if (puVar11 == puVar19) break;
                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||
                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;
                }
                if (ppuVar16[1] != (undefined *)0x0) {
                  __printf_chk();
                  goto LAB_00012134;
                }
LAB_00012121:
                __printf_chk();
              }
LAB_00012134:
              hex2stdout();
            }
            else {
              hex2stdout();
            }
          }
          else {
            pr2serr();
joined_r0x0001216b:
            iVar17 = 0;
            if ((int)local_234 < 2) goto LAB_00011e1d;
          }
LAB_00011796:
          sg_cmds_close_device();
        }
        else {
          local_25c = 0;
          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);
          if (iVar17 == 0) {
            if (3 < (int)(0x20 - local_25c)) {
              piVar25 = &local_268;
              uVar24 = 0;
              uVar22 = 0x20;
              iVar17 = sg_msense_calc_length();
              if (iVar17 - (local_268 + 8) < 0xc) {
                puts("Extended self-test duration not available");
              }
              else {
                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);
                uVar4 = uVar4 << 8 | uVar4 >> 8;
                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",
                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);
              }
              goto LAB_00011796;
            }
            iVar17 = 0x31;
            pr2serr();
          }
          else {
            sg_get_category_sense_str();
            pr2serr();
          }
          puts("Extended self-test duration (mode page 0xa) failed");
LAB_00011ce9:
          if (1 < (int)local_234) {
            sg_cmds_close_device();
            goto LAB_000117b2;
          }
LAB_00011e1d:
          pr2serr();
          sg_cmds_close_device();
          if (iVar17 != 0) goto LAB_000117b2;
        }
        iVar17 = sg_convert_errno();
        goto LAB_000117b2;
      }
      if (local_258._3_1_ != '\0') {
        ppuVar16 = (undefined **)&DAT_00016020;
        puts("Page_Code  Description");
        do {
          ppuVar16 = ppuVar16 + 2;
          __printf_chk();
        } while (ppuVar16 != &PTR_DAT_000160c0);
        iVar17 = 0;
        goto LAB_000112e2;
      }
      pr2serr();
      if (local_251 == '\0') {
        iVar17 = 1;
        puts(
            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
            );
        goto LAB_000112e2;
      }
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
  }
LAB_000112dd:
  iVar17 = 1;
LAB_000112e2:
  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {
    FUN_00012b70();
LAB_000122f0:
    pr2serr();
LAB_00011955:
    if (local_251 == '\0') {
      iVar17 = 1;
      puts("Bad sequence after \'-raw=\' option");
      puts(
          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
    else {
      iVar17 = 1;
      puts("Bad sequence after \'--raw=\' option");
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
LAB_000117b2:
    if (local_260 != (void *)0x0) {
      free(local_260);
    }
    if (local_264 != (void *)0x0) {
      free(local_264);
    }
    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {
      pr2serr();
    }
    if (iVar17 < 0) {
      iVar17 = 99;
    }
  }
  return iVar17;
}


LEA ECX,[ESP + 0x4]
AND ESP,0xfffffff0
PUSH dword ptr [ECX + -0x4]
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000123d0
ADD EBX,0x4d17
PUSH ECX
SUB ESP,0x2a4
MOV EAX,dword ptr [ECX]
MOV EDI,dword ptr [ECX + 0x4]
MOV ECX,0xc
MOV dword ptr [EBP + 0xfffffd94],EAX
XOR EAX,EAX
MOV dword ptr [EBP + 0xfffffd90],EDI
MOV ESI,dword ptr GS:[0x14]
MOV dword ptr [EBP + -0x1c],ESI
XOR ESI,ESI
LEA ESI,[EBP + 0xfffffdb0]
MOV dword ptr [EBP + 0xfffffda4],0x0
MOV dword ptr [EBP + 0xfffffda8],0x0
MOV EDI,ESI
STOSD.REP ES:EDI
LEA EAX,[EBX + 0xffffd11b]
MOV dword ptr [EBP + 0xfffffdc4],0x1000
PUSH EAX
MOV dword ptr [EBP + 0xfffffdc8],0xffffffff
CALL 0x000110c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000113de
MOV ECX,dword ptr [EBP + 0xfffffd90]
MOV EDX,dword ptr [EBP + 0xfffffd94]
MOV EAX,ESI
MOV byte ptr [EBP + 0xfffffdb7],0x0
CALL 0x00012820
TEST EAX,EAX
JZ 0x00011300
MOV EDI,0x1
MOV EDX,dword ptr [EBP + -0x1c]
XOR EDX,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x000122eb
LEA ESP,[EBP + -0x10]
POP ECX
POP EBX
POP ESI
POP EDI
POP EBP
LEA ESP,[ECX + -0x4]
RET
CMP byte ptr [EBP + 0xfffffdb7],0x0
JNZ 0x000115b9
CMP dword ptr [EBP + 0xfffffdbc],0x0
JNZ 0x000115ee
CMP byte ptr [EBP + 0xfffffdb8],0x0
JZ 0x00011445
CMP byte ptr [EBP + 0xfffffdb9],0x0
JNZ 0x00011433
CMP dword ptr [EBP + 0xfffffdd8],0x0
JZ 0x000117fd
MOV EAX,dword ptr [EBP + 0xfffffdc4]
MOV dword ptr [EBP + 0xfffffd74],EAX
MOV EAX,dword ptr [EBP + 0xfffffdd4]
MOV dword ptr [EBP + 0xfffffd88],EAX
MOVZX EAX,byte ptr [EBP + 0xfffffdb5]
MOV byte ptr [EBP + 0xfffffd73],AL
TEST AL,AL
JNZ 0x00011471
MOV dword ptr [EBP + 0xfffffd90],0x0
MOV dword ptr [EBP + 0xfffffd8c],0x0
CMP byte ptr [EBP + 0xfffffdb1],0x0
JNZ 0x00011607
CMP byte ptr [EBP + 0xfffffdb6],0x0
JNZ 0x00011607
CMP dword ptr [EBP + 0xfffffdcc],0x0
JLE 0x00011621
CMP byte ptr [EBP + 0xfffffdb0],0x0
JNZ 0x000119dc
CMP byte ptr [EBP + 0xfffffdb5],0x0
JZ 0x00011662
CMP byte ptr [EBP + 0xfffffdb7],0x0
JZ 0x00011935
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe234]
JMP 0x0001187f
MOV ECX,dword ptr [EBP + 0xfffffd90]
MOV EDX,dword ptr [EBP + 0xfffffd94]
MOV EAX,ESI
MOV byte ptr [EBP + 0xfffffdb7],0x1
CALL 0x00012510
TEST EAX,EAX
JNZ 0x000112dd
CMP byte ptr [EBP + 0xfffffdb7],0x0
JZ 0x000119bd
CMP dword ptr [EBP + 0xfffffdbc],0x0
JZ 0x0001131a
SUB ESP,0xc
LEA EAX,[EBX + 0xffffd3d4]
XOR EDI,EDI
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000112e2
SUB ESP,0xc
LEA EAX,[EBX + 0xffffdf94]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
CMP byte ptr [EBP + 0xfffffdb9],0x0
JZ 0x00011334
LEA EAX,[EBX + 0xffffd12e]
PUSH EDX
XOR EDI,EDI
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffffd13c]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x000112e2
XOR EAX,EAX
CMP dword ptr [EBP + 0xfffffd88],0x3
SETG AL
PUSH EAX
LEA EAX,[EBP + 0xfffffda8]
PUSH EAX
PUSH 0x0
PUSH dword ptr [EBP + 0xfffffd74]
CALL 0x000111e0
ADD ESP,0x10
MOV dword ptr [EBP + 0xfffffd8c],EAX
TEST EAX,EAX
JZ 0x00011ec9
MOV EAX,dword ptr [EBP + 0xfffffddc]
MOV dword ptr [EBP + 0xfffffd7c],EAX
TEST EAX,EAX
JZ 0x00011955
MOV EDX,dword ptr [EBP + 0xfffffdc4]
CMP byte ptr [EAX],0x2d
MOV dword ptr [EBP + 0xfffffd84],EDX
JZ 0x000119f7
MOV EDI,dword ptr [EBP + 0xfffffd7c]
XOR EAX,EAX
OR ECX,0xffffffff
SCASB.REPNE ES:EDI
LEA EAX,[EBX + 0xffffd1cd]
MOV EDX,ECX
PUSH ECX
PUSH ECX
NOT EDX
PUSH EAX
LEA ESI,[EDX + -0x1]
PUSH dword ptr [EBP + 0xfffffd7c]
CALL 0x000111f0
ADD ESP,0x10
CMP ESI,EAX
JNZ 0x00011940
LEA EAX,[EBP + 0xfffffdac]
MOV ESI,dword ptr [EBP + 0xfffffd7c]
XOR EDI,EDI
MOV dword ptr [EBP + 0xfffffd90],EAX
LEA EAX,[EBX + 0xffffd0d3]
MOV dword ptr [EBP + 0xfffffd80],EAX
JMP 0x00011537
TEST EAX,EAX
JZ 0x000119d5
CMP EDX,EAX
JBE 0x000119d5
LEA ESI,[EAX + 0x1]
ADD EDI,0x1
CMP dword ptr [EBP + 0xfffffd84],EDI
JLE 0x00011f01
PUSH EAX
PUSH dword ptr [EBP + 0xfffffd90]
PUSH dword ptr [EBP + 0xfffffd80]
PUSH ESI
CALL 0x00011140
ADD ESP,0x10
SUB EAX,0x1
JNZ 0x00011f5c
MOV EAX,dword ptr [EBP + 0xfffffdac]
CMP EAX,0xff
JA 0x00011f6c
MOV EDX,dword ptr [EBP + 0xfffffd8c]
MOV byte ptr [EDX + EDI*0x1],AL
PUSH EAX
PUSH EAX
PUSH 0x2c
PUSH ESI
CALL 0x000110f0
POP EDX
POP ECX
PUSH 0x20
PUSH ESI
MOV dword ptr [EBP + 0xfffffd94],EAX
CALL 0x000110f0
MOV EDX,dword ptr [EBP + 0xfffffd94]
ADD ESP,0x10
TEST EDX,EDX
JNZ 0x00011521
TEST EAX,EAX
JNZ 0x00011531
LEA EAX,[EDI + 0x1]
MOV dword ptr [EBP + 0xfffffd90],EAX
JMP 0x00011382
MOV ECX,dword ptr [EBP + 0xfffffd90]
MOV EDX,dword ptr [EBP + 0xfffffd94]
MOV EAX,ESI
CALL 0x00012510
TEST EAX,EAX
JNZ 0x000112dd
CMP dword ptr [EBP + 0xfffffdbc],0x0
JZ 0x0001131a
CMP byte ptr [EBP + 0xfffffdb7],0x0
JNZ 0x0001141a
SUB ESP,0xc
LEA EAX,[EBX + 0xffffdb24]
XOR EDI,EDI
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000112e2
CMP byte ptr [EBP + 0xfffffdb0],0x0
JZ 0x0001186d
CMP dword ptr [EBP + 0xfffffdcc],0x0
JG 0x000119dc
CMP byte ptr [EBP + 0xfffffdb5],0x0
JZ 0x00011662
TEST dword ptr [EBP + 0xfffffdb0],0xffff00ff
JNZ 0x000113c3
CMP byte ptr [EBP + 0xfffffdb4],0x0
JNZ 0x00011662
CMP byte ptr [EBP + 0xfffffdb7],0x0
JZ 0x00011eea
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe2a4]
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
MOV EDI,dword ptr [EBP + 0xfffffd88]
PUSH EAX
PUSH EDI
PUSH 0x0
PUSH dword ptr [EBP + 0xfffffdd8]
CALL 0x000111c0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JS 0x000118d2
XOR EAX,EAX
CMP dword ptr [EBP + 0xfffffd88],0x3
SETG AL
PUSH EAX
LEA EAX,[EBP + 0xfffffda4]
PUSH EAX
PUSH 0x0
PUSH dword ptr [EBP + 0xfffffdc4]
CALL 0x000111e0
ADD ESP,0x10
MOV dword ptr [EBP + 0xfffffd94],EAX
TEST EAX,EAX
JZ 0x00012081
CMP byte ptr [EBP + 0xfffffdb2],0x0
JNZ 0x00011d07
CMP byte ptr [EBP + 0xfffffdb3],0x0
MOV ECX,dword ptr [EBP + 0xfffffdc8]
JNZ 0x00011c81
TEST ECX,ECX
JS 0x00011f8c
SUB ESP,0xc
LEA EAX,[EBP + 0xfffffdac]
PUSH dword ptr [EBP + 0xfffffd88]
TEST ECX,ECX
PUSH 0x1
PUSH EAX
MOV EAX,0x0
CMOVNS EAX,ECX
PUSH 0x0
PUSH dword ptr [EBP + 0xfffffd74]
PUSH dword ptr [EBP + 0xfffffd94]
PUSH EAX
MOV EAX,ECX
NOT EAX
MOV dword ptr [EBP + 0xfffffd90],ECX
MOV dword ptr [EBP + 0xfffffdac],0x0
SHR EAX,0x1f
PUSH EAX
PUSH ESI
CALL 0x00011200
ADD ESP,0x30
MOV ECX,dword ptr [EBP + 0xfffffd90]
TEST EAX,EAX
MOV EDI,EAX
JNZ 0x00012150
MOV EDX,dword ptr [EBP + 0xfffffdac]
MOV EAX,dword ptr [EBP + 0xfffffd74]
SUB EAX,EDX
CMP EAX,0x3
JLE 0x00011df0
MOV EDI,dword ptr [EBP + 0xfffffd94]
MOVZX EDX,word ptr [EDI + 0x2]
ROL DX,0x8
MOVZX EDX,DX
ADD EDX,0x4
CMP EAX,EDX
CMOVLE EDX,EAX
MOV EAX,dword ptr [EBP + 0xfffffdc0]
MOV dword ptr [EBP + 0xfffffd90],EDX
CMP EAX,0x1
JLE 0x000120fc
CMP EAX,0x2
PUSH ECX
SETNZ AL
MOVZX EAX,AL
NEG EAX
PUSH EAX
PUSH EDX
PUSH EDI
CALL 0x000110a0
ADD ESP,0x10
SUB ESP,0xc
PUSH ESI
CALL 0x00011070
ADD ESP,0x10
SUB ESP,0xc
NEG EAX
PUSH EAX
CALL 0x00011150
ADD ESP,0x10
MOV EDI,EAX
MOV EAX,dword ptr [EBP + 0xfffffda8]
TEST EAX,EAX
JZ 0x000117c8
SUB ESP,0xc
PUSH EAX
CALL 0x00011050
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0xfffffda4]
TEST EAX,EAX
JZ 0x000117de
SUB ESP,0xc
PUSH EAX
CALL 0x00011050
ADD ESP,0x10
CMP dword ptr [EBP + 0xfffffd88],0x0
JZ 0x0001198c
TEST EDI,EDI
JNS 0x000112e2
MOV EDI,0x63
JMP 0x000112e2
CMP byte ptr [EBP + 0xfffffdb3],0x0
JZ 0x000118a0
SUB ESP,0xc
LEA EAX,[EBX + 0xffffd150]
LEA ESI,[EBX + 0xc4]
PUSH EAX
LEA EDI,[EBX + 0xffffd167]
CALL 0x000110d0
LEA EAX,[EBX + 0x164]
ADD ESP,0x10
MOV dword ptr [EBP + 0xfffffd94],EAX
LEA EAX,[EBX + 0xffffd0ff]
MOV dword ptr [EBP + 0xfffffd90],EAX
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
CMOVZ EAX,dword ptr [EBP + 0xfffffd90]
ADD ESI,0x8
PUSH EAX
PUSH dword ptr [ESI + -0x8]
PUSH EDI
PUSH 0x1
CALL 0x00011160
ADD ESP,0x10
CMP ESI,dword ptr [EBP + 0xfffffd94]
JNZ 0x00011840
XOR EDI,EDI
JMP 0x000112e2
CMP byte ptr [EBP + 0xfffffdb7],0x0
JZ 0x000118ef
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe178]
PUSH EAX
MOV EDI,0x1f
CALL 0x000110d0
LEA EAX,[EBX + 0xffffd3d4]
MOV dword ptr [ESP],EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000117b2
SUB ESP,0xc
LEA EAX,[EBX + 0xffffd178]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
CMP byte ptr [EBP + 0xfffffdb7],0x0
JZ 0x00011919
SUB ESP,0xc
LEA EAX,[EBX + 0xffffd3d4]
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000112dd
NEG ESI
TEST EDI,EDI
JNZ 0x00011e44
SUB ESP,0xc
PUSH ESI
CALL 0x00011150
ADD ESP,0x10
MOV EDI,EAX
JMP 0x000117b2
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe1ac]
PUSH EAX
MOV EDI,0x1f
CALL 0x000110d0
LEA EAX,[EBX + 0xffffdb24]
MOV dword ptr [ESP],EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000117b2
SUB ESP,0xc
LEA EAX,[EBX + 0xffffdb24]
MOV EDI,0x1
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000112e2
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe26c]
JMP 0x000118f8
PUSH EDX
ADD EAX,0x1
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffffe0d4]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
CMP byte ptr [EBP + 0xfffffdb7],0x0
JZ 0x00011dc6
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe130]
MOV EDI,0x1
PUSH EAX
CALL 0x000110d0
LEA EAX,[EBX + 0xffffd3d4]
MOV dword ptr [ESP],EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000117b2
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xffffd20c]
PUSH EDI
PUSH EAX
CALL 0x00011120
ADD ESP,0x10
TEST AL,AL
JNZ 0x000117eb
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe62c]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x000117eb
MOV ECX,dword ptr [EBP + 0xfffffd90]
MOV EDX,dword ptr [EBP + 0xfffffd94]
MOV EAX,ESI
CALL 0x00012820
JMP 0x000115cc
MOV EAX,EDX
JMP 0x00011531
CMP byte ptr [EBP + 0xfffffdb7],0x0
JZ 0x00011c73
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe1e0]
JMP 0x0001187f
MOV EAX,dword ptr [EBX + 0x94]
MOV byte ptr [EBP + 0xfffffde0],0x0
MOV dword ptr [EBP + 0xfffffd6c],0x0
MOV dword ptr [EBP + 0xfffffd64],EAX
LEA EAX,[EBP + 0xfffffde4]
MOV dword ptr [EBP + 0xfffffd90],0x0
MOV dword ptr [EBP + 0xfffffd68],EAX
MOV EDI,dword ptr [EBP + 0xfffffd68]
PUSH EAX
MOV EAX,dword ptr [EBP + 0xfffffd64]
PUSH dword ptr [EAX]
PUSH 0x200
PUSH EDI
CALL 0x00011060
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00011382
XOR EAX,EAX
OR ECX,0xffffffff
SCASB.REPNE ES:EDI
NOT ECX
MOV ESI,ECX
SUB ESI,0x1
JZ 0x00011c3f
SUB ECX,0x2
MOVZX EAX,byte ptr [EBP + 0xfffffd73]
CMP byte ptr [EBP + ECX*0x1 + 0xfffffde4],0xa
MOV byte ptr [EBP + 0xfffffd80],AL
JZ 0x00011c59
CMP byte ptr [EBP + 0xfffffde0],0x0
JZ 0x00011c48
CALL 0x00011210
MOV EDI,dword ptr [EBP + 0xfffffd68]
MOVSX ECX,byte ptr [EBP + 0xfffffde4]
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + 0xfffffd94],EDI
TEST byte ptr [EAX + ECX*0x2 + 0x1],0x10
JNZ 0x00011e6b
MOV byte ptr [EBP + 0xfffffde0],0x0
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xffffd1b0]
PUSH EAX
PUSH dword ptr [EBP + 0xfffffd94]
CALL 0x000111f0
ADD ESP,0x10
MOV EDI,EAX
CMP EAX,ESI
JZ 0x00011c22
MOV EDX,dword ptr [EBP + 0xfffffd94]
SUB ESI,EAX
ADD EDX,EAX
CMP byte ptr [EDX],0x23
JZ 0x00011c22
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xffffd1b3]
PUSH EAX
PUSH EDX
MOV dword ptr [EBP + 0xfffffd94],EDX
CALL 0x000111f0
ADD ESP,0x10
CMP ESI,EAX
JLE 0x00011b1a
MOV EDX,dword ptr [EBP + 0xfffffd94]
CMP byte ptr [EDX + EAX*0x1],0x23
JNZ 0x000122f0
LEA EAX,[EBP + 0xfffffdac]
XOR ESI,ESI
MOV dword ptr [EBP + 0xfffffd78],EAX
LEA EAX,[EBX + 0xffffd0d3]
MOV dword ptr [EBP + 0xfffffd7c],EAX
JMP 0x00011be9
MOV EDX,dword ptr [EBP + 0xfffffdac]
CMP EDX,0xff
JA 0x00011f2d
CMP byte ptr [EBP + 0xfffffd80],0x0
JZ 0x00011b75
MOV EDI,dword ptr [EBP + 0xfffffd94]
OR ECX,0xffffffff
XOR EAX,EAX
SCASB.REPNE ES:EDI
CMP ECX,-0x3
JNZ 0x00011b75
MOV EAX,dword ptr [EBP + 0xfffffd94]
MOVZX EAX,byte ptr [EAX]
MOV byte ptr [EBP + 0xfffffde0],AL
MOV EAX,dword ptr [EBP + 0xfffffd90]
ADD EAX,ESI
CMP dword ptr [EBP + 0xfffffd84],EAX
JLE 0x00011f16
MOV EAX,dword ptr [EBP + 0xfffffd8c]
LEA EDI,[EBX + 0xffffd1c9]
ADD EAX,dword ptr [EBP + 0xfffffd90]
MOV byte ptr [EAX + ESI*0x1],DL
ADD ESI,0x1
PUSH EAX
PUSH EAX
PUSH EDI
PUSH dword ptr [EBP + 0xfffffd94]
CALL 0x00011180
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JZ 0x00011c1c
PUSH EAX
PUSH EAX
PUSH EDI
PUSH EDX
MOV dword ptr [EBP + 0xfffffd94],EDX
CALL 0x000111f0
MOV EDX,dword ptr [EBP + 0xfffffd94]
ADD ESP,0x10
ADD EAX,EDX
CMP byte ptr [EAX],0x0
MOV dword ptr [EBP + 0xfffffd94],EAX
JZ 0x00011c1c
CMP ESI,0x400
JZ 0x00012176
PUSH EAX
PUSH dword ptr [EBP + 0xfffffd78]
PUSH dword ptr [EBP + 0xfffffd7c]
PUSH dword ptr [EBP + 0xfffffd94]
CALL 0x00011140
ADD ESP,0x10
SUB EAX,0x1
JZ 0x00011b39
MOV EAX,dword ptr [EBP + 0xfffffd94]
CMP byte ptr [EAX],0x23
JNZ 0x0001234b
ADD dword ptr [EBP + 0xfffffd90],ESI
ADD dword ptr [EBP + 0xfffffd6c],0x1
MOV EAX,dword ptr [EBP + 0xfffffd6c]
CMP EAX,0x200
JNZ 0x00011a2a
JMP 0x00011382
MOV byte ptr [EBP + 0xfffffde0],0x0
JMP 0x00011c22
MOV EAX,dword ptr [EBP + 0xfffffd68]
MOV dword ptr [EBP + 0xfffffd94],EAX
JMP 0x00011aba
MOV byte ptr [EBP + ECX*0x1 + 0xfffffde4],0x0
TEST ECX,ECX
JZ 0x00011c3f
MOV ESI,ECX
MOV byte ptr [EBP + 0xfffffd80],0x0
JMP 0x00011a81
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe210]
JMP 0x000118f8
TEST ECX,ECX
JNS 0x000116de
PUSH EDI
PUSH dword ptr [EBP + 0xfffffd88]
PUSH 0x1
PUSH 0x4
PUSH dword ptr [EBP + 0xfffffd94]
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH 0x1
PUSH 0x0
PUSH ESI
MOV dword ptr [EBP + 0xfffffd90],ECX
CALL 0x000110b0
ADD ESP,0x30
MOV ECX,dword ptr [EBP + 0xfffffd90]
TEST EAX,EAX
MOV EDI,EAX
JZ 0x000116de
CMP EDI,0x6
JZ 0x000121b7
CMP EDI,0xb
JNZ 0x00012197
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe5b4]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
CMP dword ptr [EBP + 0xfffffd88],0x1
JLE 0x00011e1d
SUB ESP,0xc
PUSH ESI
CALL 0x00011070
ADD ESP,0x10
JMP 0x000117b2
LEA EAX,[EBP + 0xfffffdac]
PUSH dword ptr [EBP + 0xfffffd88]
PUSH 0x1
PUSH EAX
PUSH 0x0
PUSH 0x20
PUSH dword ptr [EBP + 0xfffffd94]
PUSH 0x0
PUSH 0xa
PUSH 0x0
PUSH 0x1
PUSH 0x0
PUSH ESI
MOV dword ptr [EBP + 0xfffffdac],0x0
CALL 0x00011130
ADD ESP,0x30
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x000120aa
MOV EDX,dword ptr [EBP + 0xfffffdac]
MOV EAX,0x20
SUB EAX,EDX
CMP EAX,0x3
JLE 0x000121f1
MOV EDI,dword ptr [EBP + 0xfffffd94]
LEA EAX,[EBP + 0xfffffda0]
PUSH EAX
PUSH 0x0
PUSH 0x20
PUSH EDI
CALL 0x00011170
MOV EDX,dword ptr [EBP + 0xfffffda0]
ADD ESP,0x10
LEA ECX,[EDX + 0x8]
SUB EAX,ECX
CMP EAX,0xb
JLE 0x00012180
MOVZX EAX,word ptr [EDI + EDX*0x1 + 0x12]
SUB ESP,0x14
ROL AX,0x8
MOVZX EAX,AX
MOV dword ptr [EBP + 0xfffffd94],EAX
FILD dword ptr [EBP + 0xfffffd94]
FDIV dword ptr [EBX + 0xffffe9e4]
FSTP qword ptr [ESP]
PUSH EAX
LEA EAX,[EBX + 0xffffe398]
PUSH EAX
PUSH 0x1
CALL 0x00011160
ADD ESP,0x20
JMP 0x00011796
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe154]
MOV EDI,0x1
PUSH EAX
CALL 0x000110d0
LEA EAX,[EBX + 0xffffdb24]
MOV dword ptr [ESP],EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x000117b2
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xffffe438]
PUSH EDX
PUSH EAX
CALL 0x00011090
LEA EAX,[EBX + 0xffffe470]
MOV dword ptr [ESP],EAX
CALL 0x00011090
ADD ESP,0x10
CMP dword ptr [EBP + 0xfffffd88],0x1
JG 0x00011796
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe5fc]
PUSH EAX
CALL 0x00011090
MOV dword ptr [ESP],ESI
CALL 0x00011070
ADD ESP,0x10
TEST EDI,EDI
JNZ 0x000117b2
JMP 0x000117a2
SUB ESP,0xc
PUSH ESI
CALL 0x00011190
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xffffe318]
PUSH dword ptr [EBP + 0xfffffdd8]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x000118dc
PUSH EAX
LEA EAX,[EBP + 0xfffffdac]
LEA EDI,[EBP + 0xfffffde0]
PUSH EAX
LEA EAX,[EBX + 0xffffd0d3]
PUSH EAX
PUSH EDI
MOV byte ptr [EBP + 0xfffffde1],CL
MOV byte ptr [EBP + 0xfffffde2],0x0
CALL 0x00011140
ADD ESP,0x10
SUB EAX,0x1
JNZ 0x0001232b
MOV EAX,dword ptr [EBP + 0xfffffdac]
MOV EDX,dword ptr [EBP + 0xfffffd8c]
SUB ESI,0x1
MOV ECX,dword ptr [EBP + 0xfffffd90]
MOV byte ptr [EDX + ECX*0x1 + -0x1],AL
LEA EAX,[EBP + 0xfffffde5]
MOV dword ptr [EBP + 0xfffffd94],EAX
JMP 0x00011ab3
PUSH EAX
MOV EDI,0x63
PUSH EAX
LEA EAX,[EBX + 0xffffd193]
PUSH dword ptr [EBP + 0xfffffdc4]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x000112e2
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe2e0]
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x00011662
LEA EAX,[EDI + 0x1]
MOV dword ptr [EBP + 0xfffffd90],EAX
CMP dword ptr [EBP + 0xfffffd84],EDI
JNZ 0x00011382
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe07c]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011955
MOV EDI,dword ptr [EBP + 0xfffffd94]
SUB EDI,dword ptr [EBP + 0xfffffd68]
PUSH EAX
LEA EAX,[EDI + 0x1]
PUSH EAX
MOV EAX,dword ptr [EBP + 0xfffffd6c]
ADD EAX,0x1
PUSH EAX
LEA EAX,[EBX + 0xffffe038]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011955
SUB ESI,dword ptr [EBP + 0xfffffd7c]
PUSH EAX
PUSH EAX
LEA EAX,[ESI + 0x1]
JMP 0x00011945
SUB ESI,dword ptr [EBP + 0xfffffd7c]
PUSH EDI
LEA EAX,[ESI + 0x1]
PUSH EDI
PUSH EAX
LEA EAX,[EBX + 0xffffe0f8]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011955
CMP byte ptr [EBP + 0xfffffdb5],0x0
MOVZX EAX,byte ptr [EBP + 0xfffffdb4]
JNZ 0x00012213
MOV EDX,dword ptr [EBP + 0xfffffdd0]
MOV EDI,dword ptr [EBP + 0xfffffdcc]
MOV dword ptr [EBP + 0xfffffd84],EDX
MOVZX EDX,byte ptr [EBP + 0xfffffdb6]
MOV dword ptr [EBP + 0xfffffd94],EDX
MOVZX EDX,byte ptr [EBP + 0xfffffdb1]
MOV dword ptr [EBP + 0xfffffd90],EDX
MOVZX EDX,byte ptr [EBP + 0xfffffdb0]
MOV dword ptr [EBP + 0xfffffd8c],EDX
XOR EDX,EDX
CMP byte ptr [EBP + 0xfffffdb0],0x0
JNZ 0x00011ffc
LEA ECX,[EDI + -0x5]
CMP ECX,0x1
JA 0x00011ffc
MOV ECX,dword ptr [EBP + 0xfffffd84]
MOV EDX,0x1
TEST ECX,ECX
CMOVG EDX,ECX
PUSH ECX
PUSH dword ptr [EBP + 0xfffffd88]
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH EDX
PUSH dword ptr [EBP + 0xfffffd94]
PUSH dword ptr [EBP + 0xfffffd90]
PUSH dword ptr [EBP + 0xfffffd8c]
PUSH EAX
PUSH EDI
PUSH ESI
CALL 0x000110b0
ADD ESP,0x30
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x00011cc5
MOV EAX,dword ptr [EBP + 0xfffffdcc]
SUB EAX,0x5
CMP EAX,0x1
JBE 0x00012314
CMP byte ptr [EBP + 0xfffffdb0],0x0
JZ 0x00011796
CMP byte ptr [EBP + 0xfffffdb1],0x0
JNZ 0x00011796
CMP byte ptr [EBP + 0xfffffdb6],0x0
JNZ 0x00011796
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe568]
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x00011796
PUSH EAX
MOV EDI,0x63
PUSH EAX
LEA EAX,[EBX + 0xffffe344]
PUSH dword ptr [EBP + 0xfffffdc4]
PUSH EAX
CALL 0x00011090
MOV dword ptr [ESP],ESI
CALL 0x00011070
ADD ESP,0x10
JMP 0x000117b2
LEA EDX,[EBP + 0xfffffde4]
PUSH dword ptr [EBP + 0xfffffd88]
PUSH EDX
PUSH 0x50
PUSH EAX
MOV dword ptr [EBP + 0xfffffd94],EDX
CALL 0x000111a0
MOV EDX,dword ptr [EBP + 0xfffffd94]
ADD ESP,0xc
LEA EAX,[EBX + 0xffffd1e6]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffffd1e9]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe404]
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x00011ce9
LEA EAX,[EBX + 0xc4]
LEA EDX,[EBX + 0x164]
TEST ECX,ECX
JLE 0x0001224b
CMP dword ptr [EAX],ECX
JZ 0x000121ce
JG 0x00012121
ADD EAX,0x8
CMP EAX,EDX
JNZ 0x00012110
PUSH EAX
LEA EAX,[EBX + 0xffffe4e8]
PUSH ECX
PUSH EAX
PUSH 0x1
CALL 0x00011160
ADD ESP,0x10
PUSH EAX
PUSH 0x1
PUSH dword ptr [EBP + 0xfffffd90]
PUSH dword ptr [EBP + 0xfffffd94]
CALL 0x000110a0
ADD ESP,0x10
JMP 0x00011796
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe510]
XOR EDI,EDI
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
CMP dword ptr [EBP + 0xfffffd88],0x1
JLE 0x00011e1d
JMP 0x00011796
MOV ESI,0x401
JMP 0x00011c1c
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe3d8]
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x00011796
CMP EDI,0x2
JNZ 0x00012376
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe5d8]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011ce9
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe590]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011ce9
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x00012121
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xffffe4bc]
PUSH EAX
PUSH 0x1
CALL 0x00011160
ADD ESP,0x10
JMP 0x00012134
PUSH EDX
MOV EDI,0x31
PUSH EAX
LEA EAX,[EBX + 0xffffe9d8]
PUSH EAX
LEA EAX,[EBX + 0xffffe368]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x000120e5
PUSH EDI
PUSH dword ptr [EBP + 0xfffffd88]
PUSH 0x1
PUSH dword ptr [EBP + 0xfffffd90]
PUSH dword ptr [EBP + 0xfffffd8c]
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH EAX
PUSH 0x0
PUSH ESI
CALL 0x000110b0
ADD ESP,0x30
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x00011cc5
JMP 0x00011796
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe494]
LEA EDI,[EBX + 0x164]
PUSH EAX
CALL 0x000110d0
MOV EAX,dword ptr [EBP + 0xfffffd90]
MOV ECX,dword ptr [EBP + 0xfffffdc0]
ADD ESP,0x10
SUB EAX,0x4
MOV dword ptr [EBP + 0xfffffd8c],EAX
TEST ECX,ECX
JNZ 0x00012134
MOV dword ptr [EBP + 0xfffffd90],ESI
MOV ESI,ECX
CMP dword ptr [EBP + 0xfffffd8c],ESI
JLE 0x000122e0
MOV EAX,dword ptr [EBP + 0xfffffd94]
MOVZX EDX,byte ptr [EAX + ESI*0x1 + 0x4]
LEA EAX,[EBX + 0xc4]
CMP EDX,dword ptr [EAX]
JZ 0x000122d7
JL 0x000122ae
ADD EAX,0x8
CMP EAX,EDI
JNZ 0x000122a1
LEA EAX,[EBX + 0xffffd0ff]
CMP EDX,0x7f
JLE 0x000122bf
LEA EAX,[EBX + 0xffffd109]
PUSH EAX
LEA EAX,[EBX + 0xffffd1fe]
ADD ESI,0x1
PUSH EDX
PUSH EAX
PUSH 0x1
CALL 0x00011160
ADD ESP,0x10
JMP 0x00012288
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JNZ 0x000122bf
JMP 0x000122ae
MOV ESI,dword ptr [EBP + 0xfffffd90]
JMP 0x00011796
CALL 0x00012b70
LEA EAX,[EDI + EAX*0x1 + 0x1]
PUSH ECX
PUSH EAX
MOV EAX,dword ptr [EBP + 0xfffffd6c]
ADD EAX,0x1
PUSH EAX
LEA EAX,[EBX + 0xffffe004]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011955
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe53c]
PUSH EAX
CALL 0x000110d0
ADD ESP,0x10
JMP 0x00011796
PUSH EAX
MOV EAX,dword ptr [EBP + 0xfffffd6c]
ADD EAX,0x1
PUSH EAX
LEA EAX,[EBX + 0xffffdfc8]
PUSH EDI
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011955
MOV EDI,EAX
SUB EDI,dword ptr [EBP + 0xfffffd68]
PUSH ESI
LEA EAX,[EDI + 0x1]
PUSH EAX
MOV EAX,dword ptr [EBP + 0xfffffd6c]
ADD EAX,0x1
PUSH EAX
LEA EAX,[EBX + 0xffffe0a4]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011955
SUB ESP,0xc
LEA EAX,[EBX + 0xffffe470]
PUSH EAX
CALL 0x00011090
ADD ESP,0x10
JMP 0x00011ce9
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_00011230(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}\n\n" comment (function_definition "int FUN_00011230(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}" primitive_type (function_declarator "FUN_00011230(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "void **ppvVar9;" primitive_type (pointer_declarator "**ppvVar9" * (pointer_declarator "*ppvVar9" * identifier)) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "ushort **ppuVar13;" type_identifier (pointer_declarator "**ppuVar13" * (pointer_declarator "*ppuVar13" * identifier)) ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "size_t sVar15;" primitive_type identifier ;) (declaration "undefined **ppuVar16;" type_identifier (pointer_declarator "**ppuVar16" * (pointer_declarator "*ppuVar16" * identifier)) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "void **ppvVar23;" primitive_type (pointer_declarator "**ppvVar23" * (pointer_declarator "*ppvVar23" * identifier)) ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "int local_29c;" primitive_type identifier ;) (declaration "void **local_280;" primitive_type (pointer_declarator "**local_280" * (pointer_declarator "*local_280" * identifier)) ;) (declaration "int local_27c;" primitive_type identifier ;) (declaration "int local_278;" primitive_type identifier ;) (declaration "char *local_274;" primitive_type (pointer_declarator "*local_274" * identifier) ;) (declaration "int local_268;" primitive_type identifier ;) (declaration "void *local_264;" primitive_type (pointer_declarator "*local_264" * identifier) ;) (declaration "void *local_260;" primitive_type (pointer_declarator "*local_260" * identifier) ;) (declaration "uint local_25c;" type_identifier identifier ;) (declaration "undefined4 local_258;" type_identifier identifier ;) (declaration "char local_254;" primitive_type identifier ;) (declaration "char local_253;" primitive_type identifier ;) (declaration "char local_252;" primitive_type identifier ;) (declaration "char local_251;" primitive_type identifier ;) (declaration "char local_250;" primitive_type identifier ;) (declaration "char local_24f;" primitive_type identifier ;) (declaration "int local_24c;" primitive_type identifier ;) (declaration "int local_248;" primitive_type identifier ;) (declaration "int local_244;" primitive_type identifier ;) (declaration "undefined *local_240;" type_identifier (pointer_declarator "*local_240" * identifier) ;) (declaration "int local_23c;" primitive_type identifier ;) (declaration "undefined *local_238;" type_identifier (pointer_declarator "*local_238" * identifier) ;) (declaration "void **local_234;" primitive_type (pointer_declarator "**local_234" * (pointer_declarator "*local_234" * identifier)) ;) (declaration "int local_230;" primitive_type identifier ;) (declaration "char *local_22c;" primitive_type (pointer_declarator "*local_22c" * identifier) ;) (declaration "char local_228;" primitive_type identifier ;) (declaration "char local_227;" primitive_type identifier ;) (declaration "char local_226 [514];" primitive_type (array_declarator "local_226 [514]" identifier [ number_literal ]) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 *local_18;" type_identifier (pointer_declarator "*local_18" * identifier) ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "local_18 = &param_1;" (assignment_expression "local_18 = &param_1" identifier = (pointer_expression "&param_1" & identifier)) ;) (expression_statement "local_24 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_264 = (void *)0x0;" (assignment_expression "local_264 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_260 = (void *)0x0;" (assignment_expression "local_260 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar20 = &local_258;" (assignment_expression "puVar20 = &local_258" identifier = (pointer_expression "&local_258" & identifier)) ;) (for_statement "for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }" for ( (assignment_expression "iVar17 = 0xc" identifier = number_literal) ; (binary_expression "iVar17 != 0" identifier != number_literal) ; (assignment_expression "iVar17 = iVar17 + -1" identifier = (binary_expression "iVar17 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }" { (expression_statement "*puVar20 = 0;" (assignment_expression "*puVar20 = 0" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) })) (expression_statement "local_244 = 0x1000;" (assignment_expression "local_244 = 0x1000" identifier = number_literal) ;) (expression_statement "local_240 = (undefined *)0xffffffff;" (assignment_expression "local_240 = (undefined *)0xffffffff" identifier = (cast_expression "(undefined *)0xffffffff" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar5 = getenv("SG3_UTILS_OLD_OPTS");" (assignment_expression "pcVar5 = getenv("SG3_UTILS_OLD_OPTS")" identifier = (call_expression "getenv("SG3_UTILS_OLD_OPTS")" identifier (argument_list "("SG3_UTILS_OLD_OPTS")" ( (string_literal ""SG3_UTILS_OLD_OPTS"" " string_content ") )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }" { (expression_statement "local_251 = '\x01';" (assignment_expression "local_251 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "iVar17 = FUN_00012510();" (assignment_expression "iVar17 = FUN_00012510()" identifier = (call_expression "FUN_00012510()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" { (if_statement "if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }" { (expression_statement "iVar17 = FUN_00012820();" (assignment_expression "iVar17 = FUN_00012820()" identifier = (call_expression "FUN_00012820()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000115cc;" goto statement_identifier ;) })) (if_statement "if (local_24c == 0) goto LAB_0001131a;" if (parenthesized_expression "(local_24c == 0)" ( (binary_expression "local_24c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001131a;" goto statement_identifier ;)) (labeled_statement "LAB_0001141a:\n      iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" else (compound_statement "{\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" { (expression_statement "local_251 = '\0';" (assignment_expression "local_251 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar17 = FUN_00012820();" (assignment_expression "iVar17 = FUN_00012820()" identifier = (call_expression "FUN_00012820()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (if_statement "if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }" { (if_statement "if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" if (parenthesized_expression "(local_24c != 0)" ( (binary_expression "local_24c != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" { (labeled_statement "LAB_000115ee:\n          iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (expression_statement "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );" (call_expression "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" identifier (argument_list "(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" else (compound_statement "{\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" { (expression_statement "iVar17 = FUN_00012510();" (assignment_expression "iVar17 = FUN_00012510()" identifier = (call_expression "FUN_00012510()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;" statement_identifier : (if_statement "if (iVar17 != 0) goto LAB_000112dd;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000112dd;" goto statement_identifier ;))) (if_statement "if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" if (parenthesized_expression "(local_24c != 0)" ( (binary_expression "local_24c != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" { (if_statement "if (local_251 != '\0') goto LAB_0001141a;" if (parenthesized_expression "(local_251 != '\0')" ( (binary_expression "local_251 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001141a;" goto statement_identifier ;)) (goto_statement "goto LAB_000115ee;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" statement_identifier : (if_statement "if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" if (parenthesized_expression "(local_250 == '\0')" ( (binary_expression "local_250 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }" { (labeled_statement "LAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" statement_identifier : (if_statement "if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" if (parenthesized_expression "(local_24f != '\0')" ( (binary_expression "local_24f != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) }))) }) (else_clause "else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" else (if_statement "if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" if (parenthesized_expression "(local_24f != '\0')" ( (binary_expression "local_24f != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pr2serr();\n        goto LAB_00011445;\n      }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011445;" goto statement_identifier ;) }))))) (expression_statement "iVar12 = local_244;" (assignment_expression "iVar12 = local_244" identifier = identifier) ;) (expression_statement "cVar3 = local_253;" (assignment_expression "cVar3 = local_253" identifier = identifier) ;) (if_statement "if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" if (parenthesized_expression "(local_230 != 0)" ( (binary_expression "local_230 != 0" identifier != number_literal) )) (compound_statement "{\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" { (expression_statement "local_280 = local_234;" (assignment_expression "local_280 = local_234" identifier = identifier) ;) (if_statement "if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" if (parenthesized_expression "(local_253 == '\0')" ( (binary_expression "local_253 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_278 = 0;\n          local_27c = 0;\n        }" { (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" identifier = number_literal) ;) (expression_statement "local_27c = 0;" (assignment_expression "local_27c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" else (compound_statement "{\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" { (expression_statement "local_27c = sg_memalign();" (assignment_expression "local_27c = sg_memalign()" identifier = (call_expression "sg_memalign()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar17 = local_244;" (assignment_expression "iVar17 = local_244" identifier = identifier) ;) (expression_statement "puVar19 = PTR_stdin_00015ff0;" (assignment_expression "puVar19 = PTR_stdin_00015ff0" identifier = identifier) ;) (if_statement "if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" if (parenthesized_expression "(local_27c == 0)" ( (binary_expression "local_27c == 0" identifier == number_literal) )) (compound_statement "{\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" { (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (if_statement "if (local_22c == (char *)0x0) goto LAB_00011955;" if (parenthesized_expression "(local_22c == (char *)0x0)" ( (binary_expression "local_22c == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00011955;" goto statement_identifier ;)) (if_statement "if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" if (parenthesized_expression "(*local_22c == '-')" ( (binary_expression "*local_22c == '-'" (pointer_expression "*local_22c" * identifier) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }" { (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_29c = 0;" (assignment_expression "local_29c = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = local_226 + 2;" (assignment_expression "pcVar5 = local_226 + 2" identifier = (binary_expression "local_226 + 2" identifier + number_literal)) ;) (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" identifier = number_literal) ;) (do_statement "do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);" do (compound_statement "{\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            }" { (expression_statement "pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);" (assignment_expression "pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19)" identifier = (call_expression "fgets(pcVar5,0x200,*(FILE **)puVar19)" identifier (argument_list "(pcVar5,0x200,*(FILE **)puVar19)" ( identifier , number_literal , (pointer_expression "*(FILE **)puVar19" * (cast_expression "(FILE **)puVar19" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) )))) ;) (if_statement "if (pcVar7 == (char *)0x0) break;" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar5;" (assignment_expression "pcVar7 = pcVar5" identifier = identifier) ;) (do_statement "do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');" do (compound_statement "{\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              }" { (if_statement "if (uVar18 == 0) break;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pcVar7 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar7 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar18 = ~uVar18;" (assignment_expression "uVar18 = ~uVar18" identifier = (unary_expression "~uVar18" ~ identifier)) ;) (if_statement "if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" if (parenthesized_expression "(uVar18 - 1 == 0)" ( (binary_expression "uVar18 - 1 == 0" (binary_expression "uVar18 - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\nLAB_00011c3f:\n                local_228 = '\0';\n              }" { (labeled_statement "LAB_00011c3f:\n                local_228 = '\0';" statement_identifier : (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }) (else_clause "else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" else (compound_statement "{\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" { (expression_statement "sVar6 = uVar18 - 1;" (assignment_expression "sVar6 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = cVar3;" (assignment_expression "cVar1 = cVar3" identifier = identifier) ;) (if_statement "if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }" if (parenthesized_expression "(local_226[uVar18] == '\n')" ( (binary_expression "local_226[uVar18] == '\n'" (subscript_expression "local_226[uVar18]" identifier [ identifier ]) == (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }" { (expression_statement "local_226[uVar18] = '\0';" (assignment_expression "local_226[uVar18] = '\0'" (subscript_expression "local_226[uVar18]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (uVar18 - 2 == 0) goto LAB_00011c3f;" if (parenthesized_expression "(uVar18 - 2 == 0)" ( (binary_expression "uVar18 - 2 == 0" (binary_expression "uVar18 - 2" identifier - number_literal) == number_literal) )) (goto_statement "goto LAB_00011c3f;" goto statement_identifier ;)) (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sVar6 = uVar18 - 2;" (assignment_expression "sVar6 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) })) (expression_statement "local_274 = pcVar5;" (assignment_expression "local_274 = pcVar5" identifier = identifier) ;) (if_statement "if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" if (parenthesized_expression "(local_228 != '\0')" ( (binary_expression "local_228 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" { (expression_statement "ppuVar13 = __ctype_b_loc();" (assignment_expression "ppuVar13 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" if (parenthesized_expression "((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0)" ( (binary_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10)" ( (binary_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10" (pointer_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" * (cast_expression "(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar13 + local_226[2] * 2 + 1)" ( (binary_expression "(int)*ppuVar13 + local_226[2] * 2 + 1" (binary_expression "(int)*ppuVar13 + local_226[2] * 2" (cast_expression "(int)*ppuVar13" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar13" * identifier)) + (binary_expression "local_226[2] * 2" (subscript_expression "local_226[2]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" { (expression_statement "local_227 = local_226[2];" (assignment_expression "local_227 = local_226[2]" identifier = (subscript_expression "local_226[2]" identifier [ number_literal ])) ;) (expression_statement "local_226[0] = '\0';" (assignment_expression "local_226[0] = '\0'" (subscript_expression "local_226[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar8 = __isoc99_sscanf();" (assignment_expression "iVar8 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" if (parenthesized_expression "(iVar8 != 1)" ( (binary_expression "iVar8 != 1" identifier != number_literal) )) (compound_statement "{\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "sVar6 = sVar6 - 1;" (assignment_expression "sVar6 = sVar6 - 1" identifier = (binary_expression "sVar6 - 1" identifier - number_literal)) ;) (expression_statement "*(char *)(local_27c + -1 + local_278) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + -1 + local_278) = (char)local_25c" (pointer_expression "*(char *)(local_27c + -1 + local_278)" * (cast_expression "(char *)(local_27c + -1 + local_278)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + -1 + local_278)" ( (binary_expression "local_27c + -1 + local_278" (binary_expression "local_27c + -1" identifier + number_literal) + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_274 = local_226 + 3;" (assignment_expression "local_274 = local_226 + 3" identifier = (binary_expression "local_226 + 3" identifier + number_literal)) ;) })) (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "sVar14 = strspn(local_274," \t");" (assignment_expression "sVar14 = strspn(local_274," \t")" identifier = (call_expression "strspn(local_274," \t")" identifier (argument_list "(local_274," \t")" ( identifier , (string_literal "" \t"" " string_content escape_sequence ") )))) ;) (if_statement "if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }" if (parenthesized_expression "(sVar14 != sVar6)" ( (binary_expression "sVar14 != sVar6" identifier != identifier) )) (compound_statement "{\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }" { (expression_statement "local_274 = local_274 + sVar14;" (assignment_expression "local_274 = local_274 + sVar14" identifier = (binary_expression "local_274 + sVar14" identifier + identifier)) ;) (if_statement "if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }" if (parenthesized_expression "(*local_274 != '#')" ( (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }" { (expression_statement "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");" (assignment_expression "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" identifier = (call_expression "strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" identifier (argument_list "(local_274,"0123456789aAbBcCdDeEfF ,\t")" ( identifier , (string_literal ""0123456789aAbBcCdDeEfF ,\t"" " string_content escape_sequence ") )))) ;) (if_statement "if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;" if (parenthesized_expression "(((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))" ( (binary_expression "((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#')" (parenthesized_expression "((int)sVar15 < (int)(sVar6 - sVar14))" ( (binary_expression "(int)sVar15 < (int)(sVar6 - sVar14)" (cast_expression "(int)sVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)(sVar6 - sVar14)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar6 - sVar14)" ( (binary_expression "sVar6 - sVar14" identifier - identifier) )))) )) && (parenthesized_expression "(local_274[sVar15] != '#')" ( (binary_expression "local_274[sVar15] != '#'" (subscript_expression "local_274[sVar15]" identifier [ identifier ]) != (char_literal "'#'" ' character ')) ))) )) (goto_statement "goto LAB_000122f0;" goto statement_identifier ;)) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);" do (compound_statement "{\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    }" { (expression_statement "iVar10 = __isoc99_sscanf();" (assignment_expression "iVar10 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" { (if_statement "if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" if (parenthesized_expression "(*local_274 != '#')" ( (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;) })) (if_statement "if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" if (parenthesized_expression "(0xff < local_25c)" ( (binary_expression "0xff < local_25c" number_literal < identifier) )) (compound_statement "{\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (if_statement "if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" { (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (expression_statement "pcVar7 = local_274;" (assignment_expression "pcVar7 = local_274" identifier = identifier) ;) (do_statement "do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');" do (compound_statement "{\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "cVar2 = *pcVar7;" (assignment_expression "cVar2 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pcVar7 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar7 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }" if (parenthesized_expression "(iVar10 == -3)" ( (binary_expression "iVar10 == -3" identifier == number_literal) )) (compound_statement "{\n                          local_228 = *local_274;\n                        }" { (expression_statement "local_228 = *local_274;" (assignment_expression "local_228 = *local_274" identifier = (pointer_expression "*local_274" * identifier)) ;) })) })) (if_statement "if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;" if (parenthesized_expression "(iVar17 <= local_278 + iVar8)" ( (binary_expression "iVar17 <= local_278 + iVar8" identifier <= (binary_expression "local_278 + iVar8" identifier + identifier)) )) (goto_statement "goto LAB_00011f16;" goto statement_identifier ;)) (expression_statement "*(char *)(local_27c + local_278 + iVar8) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + local_278 + iVar8) = (char)local_25c" (pointer_expression "*(char *)(local_27c + local_278 + iVar8)" * (cast_expression "(char *)(local_27c + local_278 + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + local_278 + iVar8)" ( (binary_expression "local_27c + local_278 + iVar8" (binary_expression "local_27c + local_278" identifier + identifier) + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "local_274 = strpbrk(local_274," ,\t");" (assignment_expression "local_274 = strpbrk(local_274," ,\t")" identifier = (call_expression "strpbrk(local_274," ,\t")" identifier (argument_list "(local_274," ,\t")" ( identifier , (string_literal "" ,\t"" " string_content escape_sequence ") )))) ;) (if_statement "if (local_274 == (char *)0x0) goto LAB_00011c1c;" if (parenthesized_expression "(local_274 == (char *)0x0)" ( (binary_expression "local_274 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;)) (expression_statement "sVar6 = strspn(local_274," ,\t");" (assignment_expression "sVar6 = strspn(local_274," ,\t")" identifier = (call_expression "strspn(local_274," ,\t")" identifier (argument_list "(local_274," ,\t")" ( identifier , (string_literal "" ,\t"" " string_content escape_sequence ") )))) ;) (expression_statement "local_274 = local_274 + sVar6;" (assignment_expression "local_274 = local_274 + sVar6" identifier = (binary_expression "local_274 + sVar6" identifier + identifier)) ;) (if_statement "if (*local_274 == '\0') goto LAB_00011c1c;" if (parenthesized_expression "(*local_274 == '\0')" ( (binary_expression "*local_274 == '\0'" (pointer_expression "*local_274" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar8 != 0x400)" ( (binary_expression "iVar8 != 0x400" identifier != number_literal) )) ;) (expression_statement "iVar8 = 0x401;" (assignment_expression "iVar8 = 0x401" identifier = number_literal) ;) (labeled_statement "LAB_00011c1c:\n                    local_278 = local_278 + iVar8;" statement_identifier : (expression_statement "local_278 = local_278 + iVar8;" (assignment_expression "local_278 = local_278 + iVar8" identifier = (binary_expression "local_278 + iVar8" identifier + identifier)) ;)) })) })) }))) (expression_statement "local_29c = local_29c + 1;" (assignment_expression "local_29c = local_29c + 1" identifier = (binary_expression "local_29c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_29c != 0x200)" ( (binary_expression "local_29c != 0x200" identifier != number_literal) )) ;) }) (else_clause "else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" else (compound_statement "{\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" { (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar5 = local_22c;" (assignment_expression "pcVar5 = local_22c" identifier = identifier) ;) (do_statement "do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');" do (compound_statement "{\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            }" { (if_statement "if (uVar18 == 0) break;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (expression_statement "cVar3 = *pcVar5;" (assignment_expression "cVar3 = *pcVar5" identifier = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");" (assignment_expression "sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ")" identifier = (call_expression "strspn(local_22c,"0123456789aAbBcCdDeEfF, ")" identifier (argument_list "(local_22c,"0123456789aAbBcCdDeEfF, ")" ( identifier , (string_literal ""0123456789aAbBcCdDeEfF, "" " string_content ") )))) ;) (if_statement "if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" if (parenthesized_expression "(~uVar18 - 1 != sVar6)" ( (binary_expression "~uVar18 - 1 != sVar6" (binary_expression "~uVar18 - 1" (unary_expression "~uVar18" ~ identifier) - number_literal) != identifier) )) (compound_statement "{\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" { (labeled_statement "LAB_00011945:\n              pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "pcVar5 = local_22c;" (assignment_expression "pcVar5 = local_22c" identifier = identifier) ;) (for_statement "for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" for ( (assignment_expression "iVar8 = 0" identifier = number_literal) ; (binary_expression "iVar8 < iVar17" identifier < identifier) ; (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ) (compound_statement "{\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" { (expression_statement "iVar10 = __isoc99_sscanf();" (assignment_expression "iVar10 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 1) goto LAB_00011945;" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00011945;" goto statement_identifier ;)) (if_statement "if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }" if (parenthesized_expression "(0xff < local_25c)" ( (binary_expression "0xff < local_25c" number_literal < identifier) )) (compound_statement "{\n                pr2serr();\n                goto LAB_00011955;\n              }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "*(char *)(local_27c + iVar8) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + iVar8) = (char)local_25c" (pointer_expression "*(char *)(local_27c + iVar8)" * (cast_expression "(char *)(local_27c + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + iVar8)" ( (binary_expression "local_27c + iVar8" identifier + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar7 = strchr(pcVar5,0x2c);" (assignment_expression "pcVar7 = strchr(pcVar5,0x2c)" identifier = (call_expression "strchr(pcVar5,0x2c)" identifier (argument_list "(pcVar5,0x2c)" ( identifier , number_literal )))) ;) (expression_statement "pcVar5 = strchr(pcVar5,0x20);" (assignment_expression "pcVar5 = strchr(pcVar5,0x20)" identifier = (call_expression "strchr(pcVar5,0x20)" identifier (argument_list "(pcVar5,0x20)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }" { (if_statement "if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }" { (expression_statement "local_278 = iVar8 + 1;" (assignment_expression "local_278 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00011382;" goto statement_identifier ;) })) }) (else_clause "else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" else (if_statement "if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" if (parenthesized_expression "((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5))" ( (binary_expression "(pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)" (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) ))) )) (compound_statement "{\n                pcVar5 = pcVar7;\n              }" { (expression_statement "pcVar5 = pcVar7;" (assignment_expression "pcVar5 = pcVar7" identifier = identifier) ;) })))) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "local_278 = iVar8 + 1;" (assignment_expression "local_278 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" if (parenthesized_expression "(iVar17 == iVar8)" ( (binary_expression "iVar17 == iVar8" identifier == identifier) )) (compound_statement "{\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" { (labeled_statement "LAB_00011f16:\n              pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) }))) }))) (labeled_statement "LAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" statement_identifier : (if_statement "if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" if (parenthesized_expression "((local_258._1_1_ == '\0') && (local_252 == '\0'))" ( (binary_expression "(local_258._1_1_ == '\0') && (local_252 == '\0')" (parenthesized_expression "(local_258._1_1_ == '\0')" ( (binary_expression "local_258._1_1_ == '\0'" (field_expression "local_258._1_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_252 == '\0')" ( (binary_expression "local_252 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }" { (if_statement "if (local_23c < 1) goto LAB_00011621;" if (parenthesized_expression "(local_23c < 1)" ( (binary_expression "local_23c < 1" identifier < number_literal) )) (goto_statement "goto LAB_00011621;" goto statement_identifier ;)) (if_statement "if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" if (parenthesized_expression "((char)local_258 != '\0')" ( (binary_expression "(char)local_258 != '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" { (labeled_statement "LAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" statement_identifier : (if_statement "if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" { (expression_statement "pcVar5 = "either set -s=SF or -t (not both)";" (assignment_expression "pcVar5 = "either set -s=SF or -t (not both)"" identifier = (string_literal ""either set -s=SF or -t (not both)"" " string_content ")) ;) (goto_statement "goto LAB_000118f8;" goto statement_identifier ;) }))) (expression_statement "pcVar5 = "either set --selftest=SF or --test (not both)";" (assignment_expression "pcVar5 = "either set --selftest=SF or --test (not both)"" identifier = (string_literal ""either set --selftest=SF or --test (not both)"" " string_content ")) ;) (goto_statement "goto LAB_0001187f;" goto statement_identifier ;) })) (if_statement "if (local_253 != '\0') goto LAB_000113c3;" if (parenthesized_expression "(local_253 != '\0')" ( (binary_expression "local_253 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000113c3;" goto statement_identifier ;)) }) (else_clause "else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" else (compound_statement "{\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" { (if_statement "if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" if (parenthesized_expression "((char)local_258 == '\0')" ( (binary_expression "(char)local_258 == '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" { (if_statement "if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" { (expression_statement "pcVar5 = "setting -doff or -uoff only useful when -t is set";" (assignment_expression "pcVar5 = "setting -doff or -uoff only useful when -t is set"" identifier = (string_literal ""setting -doff or -uoff only useful when -t is set"" " string_content ")) ;) (goto_statement "goto LAB_000118f8;" goto statement_identifier ;) })) (expression_statement "pcVar5 = "setting --doff or --uoff only useful when -t is set";" (assignment_expression "pcVar5 = "setting --doff or --uoff only useful when -t is set"" identifier = (string_literal ""setting --doff or --uoff only useful when -t is set"" " string_content ")) ;) (goto_statement "goto LAB_0001187f;" goto statement_identifier ;) })) (if_statement "if (0 < local_23c) goto LAB_000119dc;" if (parenthesized_expression "(0 < local_23c)" ( (binary_expression "0 < local_23c" number_literal < identifier) )) (goto_statement "goto LAB_000119dc;" goto statement_identifier ;)) (labeled_statement "LAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" statement_identifier : (if_statement "if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" if (parenthesized_expression "(local_253 != '\0')" ( (binary_expression "local_253 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" { (if_statement "if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" if (parenthesized_expression "((local_258 & 0xffff00ff) != 0)" ( (binary_expression "(local_258 & 0xffff00ff) != 0" (parenthesized_expression "(local_258 & 0xffff00ff)" ( (binary_expression "local_258 & 0xffff00ff" identifier & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" { (labeled_statement "LAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" statement_identifier : (if_statement "if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" { (expression_statement "pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" identifier = (string_literal ""\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_000118f8:\n                iVar17 = 0x1f;" statement_identifier : (expression_statement "iVar17 = 0x1f;" (assignment_expression "iVar17 = 0x1f" identifier = number_literal) ;)) (expression_statement "puts(pcVar5);" (call_expression "puts(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );" (call_expression "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" identifier (argument_list "(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) }))) (expression_statement "pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" identifier = (string_literal ""\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_0001187f:\n              iVar17 = 0x1f;" statement_identifier : (expression_statement "iVar17 = 0x1f;" (assignment_expression "iVar17 = 0x1f" identifier = number_literal) ;)) (expression_statement "puts(pcVar5);" (call_expression "puts(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );" (call_expression "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" identifier (argument_list "(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" if (parenthesized_expression "(local_254 == '\0')" ( (binary_expression "local_254 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" { (if_statement "if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }" { (expression_statement "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");" (call_expression "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" identifier (argument_list "(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" ( (string_literal "">>> warning, \'-pf\' probably should be used with \'-raw=\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }) (else_clause "else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" else (compound_statement "{\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" { (expression_statement "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");" (call_expression "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" identifier (argument_list "(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" ( (string_literal "">>> warning, \'--pf\' probably should be used with \'--raw=\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }))) })) }))) })))) (expression_statement "iVar8 = sg_cmds_open_device();" (assignment_expression "iVar8 = sg_cmds_open_device()" identifier = (call_expression "sg_cmds_open_device()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (compound_statement "{\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" { (if_statement "if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }" if (parenthesized_expression "(local_234 != (void **)0x0)" ( (binary_expression "local_234 != (void **)0x0" identifier != (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            safe_strerror();\n            pr2serr();\n          }" { (expression_statement "safe_strerror();" (call_expression "safe_strerror()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar17 = sg_convert_errno();" (assignment_expression "iVar17 = sg_convert_errno()" identifier = (call_expression "sg_convert_errno()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (expression_statement "ppvVar9 = (void **)(uint)(3 < (int)local_234);" (assignment_expression "ppvVar9 = (void **)(uint)(3 < (int)local_234)" identifier = (cast_expression "(void **)(uint)(3 < (int)local_234)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(uint)(3 < (int)local_234)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < (int)local_234)" ( (binary_expression "3 < (int)local_234" number_literal < (cast_expression "(int)local_234" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "ppvVar23 = &local_264;" (assignment_expression "ppvVar23 = &local_264" identifier = (pointer_expression "&local_264" & identifier)) ;) (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (expression_statement "iVar10 = sg_memalign();" (assignment_expression "iVar10 = sg_memalign()" identifier = (call_expression "sg_memalign()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar19 = local_240;" (assignment_expression "puVar19 = local_240" identifier = identifier) ;) (if_statement "if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" { (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" if (parenthesized_expression "(local_258._2_1_ == '\0')" ( (binary_expression "local_258._2_1_ == '\0'" (field_expression "local_258._2_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }" { (if_statement "if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" if (parenthesized_expression "(local_258._3_1_ == '\0')" ( (binary_expression "local_258._3_1_ == '\0'" (field_expression "local_258._3_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" { (if_statement "if (-1 < (int)local_240) goto LAB_000116de;" if (parenthesized_expression "(-1 < (int)local_240)" ( (binary_expression "-1 < (int)local_240" number_literal < (cast_expression "(int)local_240" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000116de;" goto statement_identifier ;)) (if_statement "if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" if (parenthesized_expression "(local_253 == '\0')" ( (binary_expression "local_253 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }" { (expression_statement "puVar11 = (undefined *)0x0;" (assignment_expression "puVar11 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }" if (parenthesized_expression "((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238))" ( (binary_expression "(((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)" (parenthesized_expression "(((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2))" ( (binary_expression "((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)" (parenthesized_expression "((char)local_258 == '\0')" ( (binary_expression "(char)local_258 == '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)" ( (comma_expression "puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2" (assignment_expression "puVar19 = (undefined *)(local_23c - 5)" identifier = (cast_expression "(undefined *)(local_23c - 5)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_23c - 5)" ( (binary_expression "local_23c - 5" identifier - number_literal) )))) , (binary_expression "puVar19 < (undefined *)0x2" identifier < (cast_expression "(undefined *)0x2" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)" ( (comma_expression "puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238" (assignment_expression "puVar19 = local_238" identifier = identifier) , (comma_expression "puVar11 = (undefined *)0x1, 0 < (int)local_238" (assignment_expression "puVar11 = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "0 < (int)local_238" number_literal < (cast_expression "(int)local_238" ( (type_descriptor "int" primitive_type) ) identifier)))) ))) )) (compound_statement "{\n                puVar11 = local_238;\n              }" { (expression_statement "puVar11 = local_238;" (assignment_expression "puVar11 = local_238" identifier = identifier) ;) })) (expression_statement "iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" identifier = (call_expression "sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" identifier (argument_list "(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" ( identifier , identifier , identifier , (binary_expression "local_258 & 0xff" identifier & number_literal) , (binary_expression "local_258 >> 8 & 0xff" (binary_expression "local_258 >> 8" identifier >> number_literal) & number_literal) , identifier , identifier , number_literal , number_literal , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" { (labeled_statement "LAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" statement_identifier : (if_statement "if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar17 == 6)" ( (binary_expression "iVar17 == 6" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" else (if_statement "if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar17 == 0xb)" ( (binary_expression "iVar17 == 0xb" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" else (if_statement "if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar17 == 2)" ( (binary_expression "iVar17 == 2" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n                  pr2serr();\n                }" else (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })))))))) (goto_statement "goto LAB_00011ce9;" goto statement_identifier ;) })) (if_statement "if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" if (parenthesized_expression "(local_23c - 5U < 2)" ( (binary_expression "local_23c - 5U < 2" (binary_expression "local_23c - 5U" identifier - number_literal) < number_literal) )) (compound_statement "{\n                puts("Foreground self-test returned GOOD status");\n              }" { (expression_statement "puts("Foreground self-test returned GOOD status");" (call_expression "puts("Foreground self-test returned GOOD status")" identifier (argument_list "("Foreground self-test returned GOOD status")" ( (string_literal ""Foreground self-test returned GOOD status"" " string_content ") ))) ;) }) (else_clause "else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" else (if_statement "if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" if (parenthesized_expression "((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0'))" ( (binary_expression "(((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')" (parenthesized_expression "(((char)local_258 != '\0') && (local_258._1_1_ == '\0'))" ( (binary_expression "((char)local_258 != '\0') && (local_258._1_1_ == '\0')" (parenthesized_expression "((char)local_258 != '\0')" ( (binary_expression "(char)local_258 != '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_258._1_1_ == '\0')" ( (binary_expression "local_258._1_1_ == '\0'" (field_expression "local_258._1_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_252 == '\0')" ( (binary_expression "local_252 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                puts("Default self-test returned GOOD status");\n              }" { (expression_statement "puts("Default self-test returned GOOD status");" (call_expression "puts("Default self-test returned GOOD status")" identifier (argument_list "("Default self-test returned GOOD status")" ( (string_literal ""Default self-test returned GOOD status"" " string_content ") ))) ;) })))) }) (else_clause "else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" else (compound_statement "{\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" { (expression_statement "iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" identifier = (call_expression "sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" identifier (argument_list "(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" ( identifier , number_literal , identifier , number_literal , number_literal , number_literal , number_literal , identifier , identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar17 != 0) goto LAB_00011cc5;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00011cc5;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) (if_statement "if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }" if (parenthesized_expression "((int)local_240 < 0)" ( (binary_expression "(int)local_240 < 0" (cast_expression "(int)local_240" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }" { (expression_statement "uVar22 = 1;" (assignment_expression "uVar22 = 1" identifier = number_literal) ;) (expression_statement "ppvVar23 = local_234;" (assignment_expression "ppvVar23 = local_234" identifier = identifier) ;) (expression_statement "ppvVar9 = local_234;" (assignment_expression "ppvVar9 = local_234" identifier = identifier) ;) (expression_statement "iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" identifier = (call_expression "sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" identifier (argument_list "(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar17 != 0) goto LAB_00011cc5;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00011cc5;" goto statement_identifier ;)) })) (labeled_statement "LAB_000116de:\n          puVar11 = (undefined *)0x0;" statement_identifier : (expression_statement "puVar11 = (undefined *)0x0;" (assignment_expression "puVar11 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }" if (parenthesized_expression "(-1 < (int)puVar19)" ( (binary_expression "-1 < (int)puVar19" number_literal < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            puVar11 = puVar19;\n          }" { (expression_statement "puVar11 = puVar19;" (assignment_expression "puVar11 = puVar19" identifier = identifier) ;) })) (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" identifier = number_literal) ;) (expression_statement "iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);" (assignment_expression "iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" identifier = (call_expression "sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" identifier (argument_list "(iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" ( identifier , (binary_expression "~(uint)puVar19 >> 0x1f" (unary_expression "~(uint)puVar19" ~ (cast_expression "(uint)puVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal) , identifier , identifier , identifier , number_literal , (pointer_expression "&local_25c" & identifier) , number_literal , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }" { (expression_statement "iVar12 = iVar12 - local_25c;" (assignment_expression "iVar12 = iVar12 - local_25c" identifier = (binary_expression "iVar12 - local_25c" identifier - identifier)) ;) (if_statement "if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" if (parenthesized_expression "(iVar12 < 4)" ( (binary_expression "iVar12 < 4" identifier < number_literal) )) (compound_statement "{\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto joined_r0x0001216b;" goto statement_identifier ;) })) (expression_statement "iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;" (assignment_expression "iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4" identifier = (binary_expression "(ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4" (call_expression "(ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8)" ( (binary_expression "*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8" (binary_expression "*(ushort *)(iVar10 + 2) << 8" (pointer_expression "*(ushort *)(iVar10 + 2)" * (cast_expression "(ushort *)(iVar10 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 2)" ( (binary_expression "iVar10 + 2" identifier + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(iVar10 + 2) >> 8" (pointer_expression "*(ushort *)(iVar10 + 2)" * (cast_expression "(ushort *)(iVar10 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 2)" ( (binary_expression "iVar10 + 2" identifier + number_literal) )))) >> number_literal)) ))) + number_literal)) ;) (if_statement "if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }" if (parenthesized_expression "(iVar12 <= iVar17)" ( (binary_expression "iVar12 <= iVar17" identifier <= identifier) )) (compound_statement "{\n              iVar17 = iVar12;\n            }" { (expression_statement "iVar17 = iVar12;" (assignment_expression "iVar17 = iVar12" identifier = identifier) ;) })) (if_statement "if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }" if (parenthesized_expression "(local_248 < 2)" ( (binary_expression "local_248 < 2" identifier < number_literal) )) (compound_statement "{\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }" { (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" identifier = (cast_expression "(undefined **)&DAT_00016020" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00016020" & identifier))) ;) (if_statement "if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" if (parenthesized_expression "((int)puVar19 < 1)" ( (binary_expression "(int)puVar19 < 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }" { (expression_statement "puts("Supported diagnostic pages response:");" (call_expression "puts("Supported diagnostic pages response:")" identifier (argument_list "("Supported diagnostic pages response:")" ( (string_literal ""Supported diagnostic pages response:"" " string_content ") ))) ;) (if_statement "if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" if (parenthesized_expression "(local_248 == 0)" ( (binary_expression "local_248 == 0" identifier == number_literal) )) (compound_statement "{\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" { (for_statement "for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }" for ( (assignment_expression "iVar12 = 0" identifier = number_literal) ; (binary_expression "iVar12 < iVar17 + -4" identifier < (binary_expression "iVar17 + -4" identifier + number_literal)) ; (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ) (compound_statement "{\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }" { (expression_statement "puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);" (assignment_expression "puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12)" identifier = (binary_expression "(undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12)" (cast_expression "(undefined *)(uint)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar10 + 4 + iVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 4 + iVar12)" ( (binary_expression "iVar10 + 4 + iVar12" (binary_expression "iVar10 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" identifier = (cast_expression "(undefined **)&DAT_00016020" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00016020" & identifier))) ;) (do_statement "do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);" do (compound_statement "{\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    }" { (if_statement "if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;" if (parenthesized_expression "((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16))" ( (binary_expression "(puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)" (parenthesized_expression "(puVar19 == *ppuVar16)" ( (binary_expression "puVar19 == *ppuVar16" identifier == (pointer_expression "*ppuVar16" * identifier)) )) || (parenthesized_expression "((int)puVar19 < (int)*ppuVar16)" ( (binary_expression "(int)puVar19 < (int)*ppuVar16" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*ppuVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar16" * identifier))) ))) )) (break_statement "break;" break ;)) (expression_statement "ppuVar16 = ppuVar16 + 2;" (assignment_expression "ppuVar16 = ppuVar16 + 2" identifier = (binary_expression "ppuVar16 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(ppuVar16 != &PTR_DAT_000160c0)" ( (binary_expression "ppuVar16 != &PTR_DAT_000160c0" identifier != (pointer_expression "&PTR_DAT_000160c0" & identifier)) )) ;) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) }) (else_clause "else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" else (compound_statement "{\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" { (while_statement "while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }" { (expression_statement "puVar11 = *ppuVar16;" (assignment_expression "puVar11 = *ppuVar16" identifier = (pointer_expression "*ppuVar16" * identifier)) ;) (if_statement "if (puVar11 == puVar19) break;" if (parenthesized_expression "(puVar11 == puVar19)" ( (binary_expression "puVar11 == puVar19" identifier == identifier) )) (break_statement "break;" break ;)) (if_statement "if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;" if (parenthesized_expression "((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0))" ( (binary_expression "(puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)" (parenthesized_expression "(puVar11 != puVar19 && (int)puVar19 <= (int)puVar11)" ( (binary_expression "puVar11 != puVar19 && (int)puVar19 <= (int)puVar11" (binary_expression "puVar11 != puVar19" identifier != identifier) && (binary_expression "(int)puVar19 <= (int)puVar11" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier))) )) || (parenthesized_expression "(ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)" ( (comma_expression "ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0" (assignment_expression "ppuVar16 = ppuVar16 + 2" identifier = (binary_expression "ppuVar16 + 2" identifier + number_literal)) , (binary_expression "ppuVar16 == &PTR_DAT_000160c0" identifier == (pointer_expression "&PTR_DAT_000160c0" & identifier))) ))) )) (goto_statement "goto LAB_00012121;" goto statement_identifier ;)) })) (if_statement "if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" if (parenthesized_expression "(ppuVar16[1] != (undefined *)0x0)" ( (binary_expression "ppuVar16[1] != (undefined *)0x0" (subscript_expression "ppuVar16[1]" identifier [ number_literal ]) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" { (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00012134;" goto statement_identifier ;) })) (labeled_statement "LAB_00012121:\n                __printf_chk();" statement_identifier : (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;)) }))) (labeled_statement "LAB_00012134:\n              hex2stdout();" statement_identifier : (expression_statement "hex2stdout();" (call_expression "hex2stdout()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n              hex2stdout();\n            }" else (compound_statement "{\n              hex2stdout();\n            }" { (expression_statement "hex2stdout();" (call_expression "hex2stdout()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" else (compound_statement "{\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (labeled_statement "joined_r0x0001216b:\n            iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (if_statement "if ((int)local_234 < 2) goto LAB_00011e1d;" if (parenthesized_expression "((int)local_234 < 2)" ( (binary_expression "(int)local_234 < 2" (cast_expression "(int)local_234" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00011e1d;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00011796:\n          sg_cmds_close_device();" statement_identifier : (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" else (compound_statement "{\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" { (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" identifier = number_literal) ;) (expression_statement "iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);" (assignment_expression "iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" identifier = (call_expression "sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" identifier (argument_list "(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , (pointer_expression "&local_25c" & identifier) , number_literal , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }" { (if_statement "if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }" if (parenthesized_expression "(3 < (int)(0x20 - local_25c))" ( (binary_expression "3 < (int)(0x20 - local_25c)" number_literal < (cast_expression "(int)(0x20 - local_25c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x20 - local_25c)" ( (binary_expression "0x20 - local_25c" number_literal - identifier) )))) )) (compound_statement "{\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }" { (expression_statement "piVar25 = &local_268;" (assignment_expression "piVar25 = &local_268" identifier = (pointer_expression "&local_268" & identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = 0x20;" (assignment_expression "uVar22 = 0x20" identifier = number_literal) ;) (expression_statement "iVar17 = sg_msense_calc_length();" (assignment_expression "iVar17 = sg_msense_calc_length()" identifier = (call_expression "sg_msense_calc_length()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" if (parenthesized_expression "(iVar17 - (local_268 + 8) < 0xc)" ( (binary_expression "iVar17 - (local_268 + 8) < 0xc" (binary_expression "iVar17 - (local_268 + 8)" identifier - (parenthesized_expression "(local_268 + 8)" ( (binary_expression "local_268 + 8" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n                puts("Extended self-test duration not available");\n              }" { (expression_statement "puts("Extended self-test duration not available");" (call_expression "puts("Extended self-test duration not available")" identifier (argument_list "("Extended self-test duration not available")" ( (string_literal ""Extended self-test duration not available"" " string_content ") ))) ;) }) (else_clause "else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" else (compound_statement "{\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" { (expression_statement "uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);" (assignment_expression "uVar4 = *(ushort *)(iVar10 + 0x12 + local_268)" identifier = (pointer_expression "*(ushort *)(iVar10 + 0x12 + local_268)" * (cast_expression "(ushort *)(iVar10 + 0x12 + local_268)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x12 + local_268)" ( (binary_expression "iVar10 + 0x12 + local_268" (binary_expression "iVar10 + 0x12" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar4 = uVar4 << 8 | uVar4 >> 8;" (assignment_expression "uVar4 = uVar4 << 8 | uVar4 >> 8" identifier = (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal))) ;) (expression_statement "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);" (call_expression "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25)" identifier (argument_list "(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25)" ( number_literal , (string_literal ""Expected extended self-test duration=%d seconds (%.2f minutes)\n"" " string_content escape_sequence ") , identifier , (cast_expression "(double)((float)uVar4 / DAT_00014940)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)uVar4 / DAT_00014940)" ( (binary_expression "(float)uVar4 / DAT_00014940" (cast_expression "(float)uVar4" ( (type_descriptor "float" primitive_type) ) identifier) / identifier) ))) , identifier , identifier , identifier ))) ;) }))) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) (expression_statement "iVar17 = 0x31;" (assignment_expression "iVar17 = 0x31" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" else (compound_statement "{\n            sg_get_category_sense_str();\n            pr2serr();\n          }" { (expression_statement "sg_get_category_sense_str();" (call_expression "sg_get_category_sense_str()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puts("Extended self-test duration (mode page 0xa) failed");" (call_expression "puts("Extended self-test duration (mode page 0xa) failed")" identifier (argument_list "("Extended self-test duration (mode page 0xa) failed")" ( (string_literal ""Extended self-test duration (mode page 0xa) failed"" " string_content ") ))) ;) (labeled_statement "LAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" statement_identifier : (if_statement "if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" if (parenthesized_expression "(1 < (int)local_234)" ( (binary_expression "1 < (int)local_234" number_literal < (cast_expression "(int)local_234" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" { (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) }))) (labeled_statement "LAB_00011e1d:\n          pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iVar17 != 0) goto LAB_000117b2;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;)) }))) (expression_statement "iVar17 = sg_convert_errno();" (assignment_expression "iVar17 = sg_convert_errno()" identifier = (call_expression "sg_convert_errno()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }" if (parenthesized_expression "(local_258._3_1_ != '\0')" ( (binary_expression "local_258._3_1_ != '\0'" (field_expression "local_258._3_1_" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }" { (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" identifier = (cast_expression "(undefined **)&DAT_00016020" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00016020" & identifier))) ;) (expression_statement "puts("Page_Code  Description");" (call_expression "puts("Page_Code  Description")" identifier (argument_list "("Page_Code  Description")" ( (string_literal ""Page_Code  Description"" " string_content ") ))) ;) (do_statement "do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);" do (compound_statement "{\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        }" { (expression_statement "ppuVar16 = ppuVar16 + 2;" (assignment_expression "ppuVar16 = ppuVar16 + 2" identifier = (binary_expression "ppuVar16 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(ppuVar16 != &PTR_DAT_000160c0)" ( (binary_expression "ppuVar16 != &PTR_DAT_000160c0" identifier != (pointer_expression "&PTR_DAT_000160c0" & identifier)) )) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );" (call_expression "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" identifier (argument_list "(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) })) }))) (labeled_statement "LAB_000112dd:\n  iVar17 = 1;" statement_identifier : (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" statement_identifier : (while_statement "while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" while (parenthesized_expression "(local_24 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_24 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" { (expression_statement "FUN_00012b70();" (call_expression "FUN_00012b70()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000122f0:\n    pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" statement_identifier : (if_statement "if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puts("Bad sequence after \'-raw=\' option");" (call_expression "puts("Bad sequence after \'-raw=\' option")" identifier (argument_list "("Bad sequence after \'-raw=\' option")" ( (string_literal ""Bad sequence after \'-raw=\' option"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) }) (else_clause "else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" else (compound_statement "{\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puts("Bad sequence after \'--raw=\' option");" (call_expression "puts("Bad sequence after \'--raw=\' option")" identifier (argument_list "("Bad sequence after \'--raw=\' option")" ( (string_literal ""Bad sequence after \'--raw=\' option"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) })))) (labeled_statement "LAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" statement_identifier : (if_statement "if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" if (parenthesized_expression "(local_260 != (void *)0x0)" ( (binary_expression "local_260 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(local_260);\n    }" { (expression_statement "free(local_260);" (call_expression "free(local_260)" identifier (argument_list "(local_260)" ( identifier ))) ;) }))) (if_statement "if (local_264 != (void *)0x0) {\n      free(local_264);\n    }" if (parenthesized_expression "(local_264 != (void *)0x0)" ( (binary_expression "local_264 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(local_264);\n    }" { (expression_statement "free(local_264);" (call_expression "free(local_264)" identifier (argument_list "(local_264)" ( identifier ))) ;) })) (if_statement "if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }" if (parenthesized_expression "((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0'))" ( (binary_expression "(local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')" (parenthesized_expression "(local_280 == (void **)0x0)" ( (binary_expression "local_280 == (void **)0x0" identifier == (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(cVar3 = sg_if_can2stderr(), cVar3 == '\0')" ( (comma_expression "cVar3 = sg_if_can2stderr(), cVar3 == '\0'" (assignment_expression "cVar3 = sg_if_can2stderr()" identifier = (call_expression "sg_if_can2stderr()" identifier (argument_list "()" ( )))) , (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      pr2serr();\n    }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar17 < 0) {\n      iVar17 = 99;\n    }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar17 = 99;\n    }" { (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" identifier = number_literal) ;) })) }))) (return_statement "return iVar17;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint main(int argc,char **argv)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  char **argv_00;\n  _Bool _Var3;\n  char cVar4;\n  ushort uVar5;\n  char *pcVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  void **ppvVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  page_code_desc *ppVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  opts_t *poVar20;\n  int iVar21;\n  int in_GS_OFFSET;\n  byte bVar22;\n  undefined4 uVar23;\n  void **ppvVar24;\n  undefined4 uVar25;\n  int *piVar26;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  opts_t local_258;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  int *local_18;\n  \n  argv_00 = argv;\n  iVar21 = argc;\n  bVar22 = 0;\n  local_18 = &argc;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  poVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    poVar20->do_deftest = false;\n    poVar20->do_doff = false;\n    poVar20->do_extdur = false;\n    poVar20->do_list = false;\n    poVar20 = (opts_t *)&poVar20->do_pf;\n  }\n  local_258.maxlen = 0x1000;\n  local_258.page_code = 0xffffffff;\n  pcVar6 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar6 == (char *)0x0) {\n    local_258.opt_new = true;\n    iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }\n      if (local_258.do_help == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar21 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_258.opt_new = false;\n    iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar21 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {\n      pr2serr();\n    }\n    if (iVar21 < 0) {\n      iVar21 = 99;\n    }\n  }\n  return iVar21;\n}\n\n" comment (function_definition "int main(int argc,char **argv)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  char **argv_00;\n  _Bool _Var3;\n  char cVar4;\n  ushort uVar5;\n  char *pcVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  void **ppvVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  page_code_desc *ppVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  opts_t *poVar20;\n  int iVar21;\n  int in_GS_OFFSET;\n  byte bVar22;\n  undefined4 uVar23;\n  void **ppvVar24;\n  undefined4 uVar25;\n  int *piVar26;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  opts_t local_258;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  int *local_18;\n  \n  argv_00 = argv;\n  iVar21 = argc;\n  bVar22 = 0;\n  local_18 = &argc;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  poVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    poVar20->do_deftest = false;\n    poVar20->do_doff = false;\n    poVar20->do_extdur = false;\n    poVar20->do_list = false;\n    poVar20 = (opts_t *)&poVar20->do_pf;\n  }\n  local_258.maxlen = 0x1000;\n  local_258.page_code = 0xffffffff;\n  pcVar6 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar6 == (char *)0x0) {\n    local_258.opt_new = true;\n    iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }\n      if (local_258.do_help == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar21 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_258.opt_new = false;\n    iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar21 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {\n      pr2serr();\n    }\n    if (iVar21 < 0) {\n      iVar21 = 99;\n    }\n  }\n  return iVar21;\n}" primitive_type (function_declarator "main(int argc,char **argv)" identifier (parameter_list "(int argc,char **argv)" ( (parameter_declaration "int argc" primitive_type identifier) , (parameter_declaration "char **argv" primitive_type (pointer_declarator "**argv" * (pointer_declarator "*argv" * identifier))) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  char **argv_00;\n  _Bool _Var3;\n  char cVar4;\n  ushort uVar5;\n  char *pcVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  void **ppvVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  page_code_desc *ppVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  opts_t *poVar20;\n  int iVar21;\n  int in_GS_OFFSET;\n  byte bVar22;\n  undefined4 uVar23;\n  void **ppvVar24;\n  undefined4 uVar25;\n  int *piVar26;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  opts_t local_258;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  int *local_18;\n  \n  argv_00 = argv;\n  iVar21 = argc;\n  bVar22 = 0;\n  local_18 = &argc;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  poVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    poVar20->do_deftest = false;\n    poVar20->do_doff = false;\n    poVar20->do_extdur = false;\n    poVar20->do_list = false;\n    poVar20 = (opts_t *)&poVar20->do_pf;\n  }\n  local_258.maxlen = 0x1000;\n  local_258.page_code = 0xffffffff;\n  pcVar6 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar6 == (char *)0x0) {\n    local_258.opt_new = true;\n    iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }\n      if (local_258.do_help == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar21 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_258.opt_new = false;\n    iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar21 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {\n      pr2serr();\n    }\n    if (iVar21 < 0) {\n      iVar21 = 99;\n    }\n  }\n  return iVar21;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char **argv_00;" primitive_type (pointer_declarator "**argv_00" * (pointer_declarator "*argv_00" * identifier)) ;) (declaration "_Bool _Var3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "void **ppvVar11;" primitive_type (pointer_declarator "**ppvVar11" * (pointer_declarator "*ppvVar11" * identifier)) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "ushort **ppuVar13;" type_identifier (pointer_declarator "**ppuVar13" * (pointer_declarator "*ppuVar13" * identifier)) ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "size_t sVar15;" primitive_type identifier ;) (declaration "page_code_desc *ppVar16;" type_identifier (pointer_declarator "*ppVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "opts_t *poVar20;" type_identifier (pointer_declarator "*poVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar22;" type_identifier identifier ;) (declaration "undefined4 uVar23;" type_identifier identifier ;) (declaration "void **ppvVar24;" primitive_type (pointer_declarator "**ppvVar24" * (pointer_declarator "*ppvVar24" * identifier)) ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * identifier) ;) (declaration "int local_29c;" primitive_type identifier ;) (declaration "void **local_280;" primitive_type (pointer_declarator "**local_280" * (pointer_declarator "*local_280" * identifier)) ;) (declaration "int local_27c;" primitive_type identifier ;) (declaration "int local_278;" primitive_type identifier ;) (declaration "char *local_274;" primitive_type (pointer_declarator "*local_274" * identifier) ;) (declaration "int local_268;" primitive_type identifier ;) (declaration "void *local_264;" primitive_type (pointer_declarator "*local_264" * identifier) ;) (declaration "void *local_260;" primitive_type (pointer_declarator "*local_260" * identifier) ;) (declaration "uint local_25c;" type_identifier identifier ;) (declaration "opts_t local_258;" type_identifier identifier ;) (declaration "char local_228;" primitive_type identifier ;) (declaration "char local_227;" primitive_type identifier ;) (declaration "char local_226 [514];" primitive_type (array_declarator "local_226 [514]" identifier [ number_literal ]) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int *local_18;" primitive_type (pointer_declarator "*local_18" * identifier) ;) (expression_statement "argv_00 = argv;" (assignment_expression "argv_00 = argv" identifier = identifier) ;) (expression_statement "iVar21 = argc;" (assignment_expression "iVar21 = argc" identifier = identifier) ;) (expression_statement "bVar22 = 0;" (assignment_expression "bVar22 = 0" identifier = number_literal) ;) (expression_statement "local_18 = &argc;" (assignment_expression "local_18 = &argc" identifier = (pointer_expression "&argc" & identifier)) ;) (expression_statement "local_24 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_264 = (void *)0x0;" (assignment_expression "local_264 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_260 = (void *)0x0;" (assignment_expression "local_260 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "poVar20 = &local_258;" (assignment_expression "poVar20 = &local_258" identifier = (pointer_expression "&local_258" & identifier)) ;) (for_statement "for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    poVar20->do_deftest = false;\n    poVar20->do_doff = false;\n    poVar20->do_extdur = false;\n    poVar20->do_list = false;\n    poVar20 = (opts_t *)&poVar20->do_pf;\n  }" for ( (assignment_expression "iVar17 = 0xc" identifier = number_literal) ; (binary_expression "iVar17 != 0" identifier != number_literal) ; (assignment_expression "iVar17 = iVar17 + -1" identifier = (binary_expression "iVar17 + -1" identifier + number_literal)) ) (compound_statement "{\n    poVar20->do_deftest = false;\n    poVar20->do_doff = false;\n    poVar20->do_extdur = false;\n    poVar20->do_list = false;\n    poVar20 = (opts_t *)&poVar20->do_pf;\n  }" { (expression_statement "poVar20->do_deftest = false;" (assignment_expression "poVar20->do_deftest = false" (field_expression "poVar20->do_deftest" identifier -> field_identifier) = false) ;) (expression_statement "poVar20->do_doff = false;" (assignment_expression "poVar20->do_doff = false" (field_expression "poVar20->do_doff" identifier -> field_identifier) = false) ;) (expression_statement "poVar20->do_extdur = false;" (assignment_expression "poVar20->do_extdur = false" (field_expression "poVar20->do_extdur" identifier -> field_identifier) = false) ;) (expression_statement "poVar20->do_list = false;" (assignment_expression "poVar20->do_list = false" (field_expression "poVar20->do_list" identifier -> field_identifier) = false) ;) (expression_statement "poVar20 = (opts_t *)&poVar20->do_pf;" (assignment_expression "poVar20 = (opts_t *)&poVar20->do_pf" identifier = (cast_expression "(opts_t *)&poVar20->do_pf" ( (type_descriptor "opts_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&poVar20->do_pf" & (field_expression "poVar20->do_pf" identifier -> field_identifier)))) ;) })) (expression_statement "local_258.maxlen = 0x1000;" (assignment_expression "local_258.maxlen = 0x1000" (field_expression "local_258.maxlen" identifier . field_identifier) = number_literal) ;) (expression_statement "local_258.page_code = 0xffffffff;" (assignment_expression "local_258.page_code = 0xffffffff" (field_expression "local_258.page_code" identifier . field_identifier) = number_literal) ;) (expression_statement "pcVar6 = getenv("SG3_UTILS_OLD_OPTS");" (assignment_expression "pcVar6 = getenv("SG3_UTILS_OLD_OPTS")" identifier = (call_expression "getenv("SG3_UTILS_OLD_OPTS")" identifier (argument_list "("SG3_UTILS_OLD_OPTS")" ( (string_literal ""SG3_UTILS_OLD_OPTS"" " string_content ") )))) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n    local_258.opt_new = true;\n    iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }\n      if (local_258.do_help == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar21 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_258.opt_new = false;\n    iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_258.opt_new = true;\n    iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }\n      if (local_258.do_help == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar21 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }" { (expression_statement "local_258.opt_new = true;" (assignment_expression "local_258.opt_new = true" (field_expression "local_258.opt_new" identifier . field_identifier) = true) ;) (expression_statement "iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00);" (assignment_expression "iVar17 = new_parse_cmd_line(&local_258,iVar21,argv_00)" identifier = (call_expression "new_parse_cmd_line(&local_258,iVar21,argv_00)" identifier (argument_list "(&local_258,iVar21,argv_00)" ( (pointer_expression "&local_258" & identifier) , identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }\n      if (local_258.do_help == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar21 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }\n      if (local_258.do_help == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar21 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" { (if_statement "if (local_258.opt_new == false) {\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n        iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n        goto LAB_000115cc;\n      }" { (expression_statement "iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00);" (assignment_expression "iVar21 = old_parse_cmd_line(&local_258,iVar21,argv_00)" identifier = (call_expression "old_parse_cmd_line(&local_258,iVar21,argv_00)" identifier (argument_list "(&local_258,iVar21,argv_00)" ( (pointer_expression "&local_258" & identifier) , identifier , identifier )))) ;) (goto_statement "goto LAB_000115cc;" goto statement_identifier ;) })) (if_statement "if (local_258.do_help == 0) goto LAB_0001131a;" if (parenthesized_expression "(local_258.do_help == 0)" ( (binary_expression "local_258.do_help == 0" (field_expression "local_258.do_help" identifier . field_identifier) == number_literal) )) (goto_statement "goto LAB_0001131a;" goto statement_identifier ;)) (labeled_statement "LAB_0001141a:\n      iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_258.opt_new = false;\n    iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" else (compound_statement "{\n    local_258.opt_new = false;\n    iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);\n    if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" { (expression_statement "local_258.opt_new = false;" (assignment_expression "local_258.opt_new = false" (field_expression "local_258.opt_new" identifier . field_identifier) = false) ;) (expression_statement "iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00);" (assignment_expression "iVar17 = old_parse_cmd_line(&local_258,iVar21,argv_00)" identifier = (call_expression "old_parse_cmd_line(&local_258,iVar21,argv_00)" identifier (argument_list "(&local_258,iVar21,argv_00)" ( (pointer_expression "&local_258" & identifier) , identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar17 = local_258.maxlen;\n      _Var3 = local_258.do_raw;\n      if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (if_statement "if (local_258.opt_new == false) {\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n        if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }" { (if_statement "if (local_258.do_help != 0) {\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" if (parenthesized_expression "(local_258.do_help != 0)" ( (binary_expression "local_258.do_help != 0" (field_expression "local_258.do_help" identifier . field_identifier) != number_literal) )) (compound_statement "{\nLAB_000115ee:\n          iVar21 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" { (labeled_statement "LAB_000115ee:\n          iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (expression_statement "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );" (call_expression "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" identifier (argument_list "(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" else (compound_statement "{\n        iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);\nLAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;\n        if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" { (expression_statement "iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00);" (assignment_expression "iVar21 = new_parse_cmd_line(&local_258,iVar21,argv_00)" identifier = (call_expression "new_parse_cmd_line(&local_258,iVar21,argv_00)" identifier (argument_list "(&local_258,iVar21,argv_00)" ( (pointer_expression "&local_258" & identifier) , identifier , identifier )))) ;) (labeled_statement "LAB_000115cc:\n        if (iVar21 != 0) goto LAB_000112dd;" statement_identifier : (if_statement "if (iVar21 != 0) goto LAB_000112dd;" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000112dd;" goto statement_identifier ;))) (if_statement "if (local_258.do_help != 0) {\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" if (parenthesized_expression "(local_258.do_help != 0)" ( (binary_expression "local_258.do_help != 0" (field_expression "local_258.do_help" identifier . field_identifier) != number_literal) )) (compound_statement "{\n          if (local_258.opt_new != false) goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" { (if_statement "if (local_258.opt_new != false) goto LAB_0001141a;" if (parenthesized_expression "(local_258.opt_new != false)" ( (binary_expression "local_258.opt_new != false" (field_expression "local_258.opt_new" identifier . field_identifier) != false) )) (goto_statement "goto LAB_0001141a;" goto statement_identifier ;)) (goto_statement "goto LAB_000115ee;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0001131a:\n      if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }" statement_identifier : (if_statement "if (local_258.verbose_given == false) {\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }" if (parenthesized_expression "(local_258.verbose_given == false)" ( (binary_expression "local_258.verbose_given == false" (field_expression "local_258.verbose_given" identifier . field_identifier) == false) )) (compound_statement "{\nLAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }" { (labeled_statement "LAB_00011445:\n        if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" statement_identifier : (if_statement "if (local_258.version_given != false) {\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" if (parenthesized_expression "(local_258.version_given != false)" ( (binary_expression "local_258.version_given != false" (field_expression "local_258.version_given" identifier . field_identifier) != false) )) (compound_statement "{\n          iVar21 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" { (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) }))) }) (else_clause "else if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }" else (if_statement "if (local_258.version_given != false) {\n        pr2serr();\n        goto LAB_00011445;\n      }" if (parenthesized_expression "(local_258.version_given != false)" ( (binary_expression "local_258.version_given != false" (field_expression "local_258.version_given" identifier . field_identifier) != false) )) (compound_statement "{\n        pr2serr();\n        goto LAB_00011445;\n      }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011445;" goto statement_identifier ;) }))))) (expression_statement "iVar17 = local_258.maxlen;" (assignment_expression "iVar17 = local_258.maxlen" identifier = (field_expression "local_258.maxlen" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_258.do_raw;" (assignment_expression "_Var3 = local_258.do_raw" identifier = (field_expression "local_258.do_raw" identifier . field_identifier)) ;) (if_statement "if (local_258.device_name != (char *)0x0) {\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" if (parenthesized_expression "(local_258.device_name != (char *)0x0)" ( (binary_expression "local_258.device_name != (char *)0x0" (field_expression "local_258.device_name" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_280 = (void **)local_258.verbose;\n        if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar10 = sg_cmds_open_device();\n        if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar11 = (void **)(uint)(3 < local_258.verbose);\n        ppvVar24 = &local_264;\n        uVar23 = 0;\n        iVar12 = sg_memalign();\n        iVar8 = local_258.page_code;\n        if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }\n        iVar21 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" { (expression_statement "local_280 = (void **)local_258.verbose;" (assignment_expression "local_280 = (void **)local_258.verbose" identifier = (cast_expression "(void **)local_258.verbose" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "local_258.verbose" identifier . field_identifier))) ;) (if_statement "if (local_258.do_raw == false) {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" if (parenthesized_expression "(local_258.do_raw == false)" ( (binary_expression "local_258.do_raw == false" (field_expression "local_258.do_raw" identifier . field_identifier) == false) )) (compound_statement "{\n          local_278 = 0;\n          local_27c = 0;\n        }" { (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" identifier = number_literal) ;) (expression_statement "local_27c = 0;" (assignment_expression "local_27c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" else (compound_statement "{\n          local_27c = sg_memalign();\n          iVar21 = local_258.maxlen;\n          puVar2 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;\n          if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" { (expression_statement "local_27c = sg_memalign();" (assignment_expression "local_27c = sg_memalign()" identifier = (call_expression "sg_memalign()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar21 = local_258.maxlen;" (assignment_expression "iVar21 = local_258.maxlen" identifier = (field_expression "local_258.maxlen" identifier . field_identifier)) ;) (expression_statement "puVar2 = PTR_stdin_00015ff0;" (assignment_expression "puVar2 = PTR_stdin_00015ff0" identifier = identifier) ;) (if_statement "if (local_27c == 0) {\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" if (parenthesized_expression "(local_27c == 0)" ( (binary_expression "local_27c == 0" identifier == number_literal) )) (compound_statement "{\n            iVar21 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" { (expression_statement "iVar21 = 99;" (assignment_expression "iVar21 = 99" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (if_statement "if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;" if (parenthesized_expression "(local_258.raw_arg == (char *)0x0)" ( (binary_expression "local_258.raw_arg == (char *)0x0" (field_expression "local_258.raw_arg" identifier . field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00011955;" goto statement_identifier ;)) (if_statement "if (*local_258.raw_arg == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" if (parenthesized_expression "(*local_258.raw_arg == '-')" ( (binary_expression "*local_258.raw_arg == '-'" (pointer_expression "*local_258.raw_arg" * (field_expression "local_258.raw_arg" identifier . field_identifier)) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar6 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }" { (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_29c = 0;" (assignment_expression "local_29c = 0" identifier = number_literal) ;) (expression_statement "pcVar6 = local_226 + 2;" (assignment_expression "pcVar6 = local_226 + 2" identifier = (binary_expression "local_226 + 2" identifier + number_literal)) ;) (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" identifier = number_literal) ;) (do_statement "do {\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);" do (compound_statement "{\n              pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);\n              if (pcVar9 == (char *)0x0) break;\n              uVar19 = 0xffffffff;\n              pcVar9 = pcVar6;\n              do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');\n              uVar19 = ~uVar19;\n              if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            }" { (expression_statement "pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2);" (assignment_expression "pcVar9 = fgets(pcVar6,0x200,*(FILE **)puVar2)" identifier = (call_expression "fgets(pcVar6,0x200,*(FILE **)puVar2)" identifier (argument_list "(pcVar6,0x200,*(FILE **)puVar2)" ( identifier , number_literal , (pointer_expression "*(FILE **)puVar2" * (cast_expression "(FILE **)puVar2" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) )))) ;) (if_statement "if (pcVar9 == (char *)0x0) break;" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = 0xffffffff;" (assignment_expression "uVar19 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar9 = pcVar6;" (assignment_expression "pcVar9 = pcVar6" identifier = identifier) ;) (do_statement "do {\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              } while (cVar4 != '\0');" do (compound_statement "{\n                if (uVar19 == 0) break;\n                uVar19 = uVar19 - 1;\n                cVar4 = *pcVar9;\n                pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n              }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar19 - 1;" (assignment_expression "uVar19 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "cVar4 = *pcVar9;" (assignment_expression "cVar4 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (expression_statement "pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;" (assignment_expression "pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1" identifier = (binary_expression "pcVar9 + (uint)bVar22 * -2 + 1" (binary_expression "pcVar9 + (uint)bVar22 * -2" identifier + (binary_expression "(uint)bVar22 * -2" (cast_expression "(uint)bVar22" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar19 = ~uVar19;" (assignment_expression "uVar19 = ~uVar19" identifier = (unary_expression "~uVar19" ~ identifier)) ;) (if_statement "if (uVar19 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }" if (parenthesized_expression "(uVar19 - 1 == 0)" ( (binary_expression "uVar19 - 1 == 0" (binary_expression "uVar19 - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\nLAB_00011c3f:\n                local_228 = '\0';\n              }" { (labeled_statement "LAB_00011c3f:\n                local_228 = '\0';" statement_identifier : (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }) (else_clause "else {\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }" else (compound_statement "{\n                sVar7 = uVar19 - 1;\n                cVar4 = _Var3;\n                if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }\n                local_274 = pcVar6;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }\n              }" { (expression_statement "sVar7 = uVar19 - 1;" (assignment_expression "sVar7 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "cVar4 = _Var3;" (assignment_expression "cVar4 = _Var3" identifier = identifier) ;) (if_statement "if (local_226[uVar19] == '\n') {\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }" if (parenthesized_expression "(local_226[uVar19] == '\n')" ( (binary_expression "local_226[uVar19] == '\n'" (subscript_expression "local_226[uVar19]" identifier [ identifier ]) == (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                  local_226[uVar19] = '\0';\n                  if (uVar19 - 2 == 0) goto LAB_00011c3f;\n                  cVar4 = '\0';\n                  sVar7 = uVar19 - 2;\n                }" { (expression_statement "local_226[uVar19] = '\0';" (assignment_expression "local_226[uVar19] = '\0'" (subscript_expression "local_226[uVar19]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (uVar19 - 2 == 0) goto LAB_00011c3f;" if (parenthesized_expression "(uVar19 - 2 == 0)" ( (binary_expression "uVar19 - 2 == 0" (binary_expression "uVar19 - 2" identifier - number_literal) == number_literal) )) (goto_statement "goto LAB_00011c3f;" goto statement_identifier ;)) (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sVar7 = uVar19 - 2;" (assignment_expression "sVar7 = uVar19 - 2" identifier = (binary_expression "uVar19 - 2" identifier - number_literal)) ;) })) (expression_statement "local_274 = pcVar6;" (assignment_expression "local_274 = pcVar6" identifier = identifier) ;) (if_statement "if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" if (parenthesized_expression "(local_228 != '\0')" ( (binary_expression "local_228 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" { (expression_statement "ppuVar13 = __ctype_b_loc();" (assignment_expression "ppuVar13 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" if (parenthesized_expression "((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0)" ( (binary_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10)" ( (binary_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10" (pointer_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" * (cast_expression "(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar13 + local_226[2] * 2 + 1)" ( (binary_expression "(int)*ppuVar13 + local_226[2] * 2 + 1" (binary_expression "(int)*ppuVar13 + local_226[2] * 2" (cast_expression "(int)*ppuVar13" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar13" * identifier)) + (binary_expression "local_226[2] * 2" (subscript_expression "local_226[2]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar10 = __isoc99_sscanf();\n                    if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar7 = sVar7 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" { (expression_statement "local_227 = local_226[2];" (assignment_expression "local_227 = local_226[2]" identifier = (subscript_expression "local_226[2]" identifier [ number_literal ])) ;) (expression_statement "local_226[0] = '\0';" (assignment_expression "local_226[0] = '\0'" (subscript_expression "local_226[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar10 = __isoc99_sscanf();" (assignment_expression "iVar10 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "sVar7 = sVar7 - 1;" (assignment_expression "sVar7 = sVar7 - 1" identifier = (binary_expression "sVar7 - 1" identifier - number_literal)) ;) (expression_statement "*(char *)(local_27c + -1 + local_278) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + -1 + local_278) = (char)local_25c" (pointer_expression "*(char *)(local_27c + -1 + local_278)" * (cast_expression "(char *)(local_27c + -1 + local_278)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + -1 + local_278)" ( (binary_expression "local_27c + -1 + local_278" (binary_expression "local_27c + -1" identifier + number_literal) + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_274 = local_226 + 3;" (assignment_expression "local_274 = local_226 + 3" identifier = (binary_expression "local_226 + 3" identifier + number_literal)) ;) })) (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "sVar14 = strspn(local_274," \t");" (assignment_expression "sVar14 = strspn(local_274," \t")" identifier = (call_expression "strspn(local_274," \t")" identifier (argument_list "(local_274," \t")" ( identifier , (string_literal "" \t"" " string_content escape_sequence ") )))) ;) (if_statement "if (sVar14 != sVar7) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }" if (parenthesized_expression "(sVar14 != sVar7)" ( (binary_expression "sVar14 != sVar7" identifier != identifier) )) (compound_statement "{\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }\n                }" { (expression_statement "local_274 = local_274 + sVar14;" (assignment_expression "local_274 = local_274 + sVar14" identifier = (binary_expression "local_274 + sVar14" identifier + identifier)) ;) (if_statement "if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }" if (parenthesized_expression "(*local_274 != '#')" ( (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar10 = 0;\n                    do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);\n                    iVar10 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar10;\n                  }" { (expression_statement "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");" (assignment_expression "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" identifier = (call_expression "strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" identifier (argument_list "(local_274,"0123456789aAbBcCdDeEfF ,\t")" ( identifier , (string_literal ""0123456789aAbBcCdDeEfF ,\t"" " string_content escape_sequence ") )))) ;) (if_statement "if (((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;" if (parenthesized_expression "(((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#'))" ( (binary_expression "((int)sVar15 < (int)(sVar7 - sVar14)) && (local_274[sVar15] != '#')" (parenthesized_expression "((int)sVar15 < (int)(sVar7 - sVar14))" ( (binary_expression "(int)sVar15 < (int)(sVar7 - sVar14)" (cast_expression "(int)sVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)(sVar7 - sVar14)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar7 - sVar14)" ( (binary_expression "sVar7 - sVar14" identifier - identifier) )))) )) && (parenthesized_expression "(local_274[sVar15] != '#')" ( (binary_expression "local_274[sVar15] != '#'" (subscript_expression "local_274[sVar15]" identifier [ identifier ]) != (char_literal "'#'" ' character ')) ))) )) (goto_statement "goto LAB_000122f0;" goto statement_identifier ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar10 != 0x400);" do (compound_statement "{\n                      iVar8 = __isoc99_sscanf();\n                      if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar10) = (char)local_25c;\n                      iVar10 = iVar10 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar7 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar7;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    }" { (expression_statement "iVar8 = __isoc99_sscanf();" (assignment_expression "iVar8 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" if (parenthesized_expression "(iVar8 != 1)" ( (binary_expression "iVar8 != 1" identifier != number_literal) )) (compound_statement "{\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" { (if_statement "if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" if (parenthesized_expression "(*local_274 != '#')" ( (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;) })) (if_statement "if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" if (parenthesized_expression "(0xff < local_25c)" ( (binary_expression "0xff < local_25c" number_literal < identifier) )) (compound_statement "{\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (if_statement "if (cVar4 != '\0') {\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar8 = -1;\n                        pcVar9 = local_274;\n                        do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');\n                        if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" { (expression_statement "iVar8 = -1;" (assignment_expression "iVar8 = -1" identifier = number_literal) ;) (expression_statement "pcVar9 = local_274;" (assignment_expression "pcVar9 = local_274" identifier = identifier) ;) (do_statement "do {\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        } while (cVar1 != '\0');" do (compound_statement "{\n                          if (iVar8 == 0) break;\n                          iVar8 = iVar8 + -1;\n                          cVar1 = *pcVar9;\n                          pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;\n                        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar9;" (assignment_expression "cVar1 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (expression_statement "pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1;" (assignment_expression "pcVar9 = pcVar9 + (uint)bVar22 * -2 + 1" identifier = (binary_expression "pcVar9 + (uint)bVar22 * -2 + 1" (binary_expression "pcVar9 + (uint)bVar22 * -2" identifier + (binary_expression "(uint)bVar22 * -2" (cast_expression "(uint)bVar22" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (iVar8 == -3) {\n                          local_228 = *local_274;\n                        }" if (parenthesized_expression "(iVar8 == -3)" ( (binary_expression "iVar8 == -3" identifier == number_literal) )) (compound_statement "{\n                          local_228 = *local_274;\n                        }" { (expression_statement "local_228 = *local_274;" (assignment_expression "local_228 = *local_274" identifier = (pointer_expression "*local_274" * identifier)) ;) })) })) (if_statement "if (iVar21 <= local_278 + iVar10) goto LAB_00011f16;" if (parenthesized_expression "(iVar21 <= local_278 + iVar10)" ( (binary_expression "iVar21 <= local_278 + iVar10" identifier <= (binary_expression "local_278 + iVar10" identifier + identifier)) )) (goto_statement "goto LAB_00011f16;" goto statement_identifier ;)) (expression_statement "*(char *)(local_27c + local_278 + iVar10) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + local_278 + iVar10) = (char)local_25c" (pointer_expression "*(char *)(local_27c + local_278 + iVar10)" * (cast_expression "(char *)(local_27c + local_278 + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + local_278 + iVar10)" ( (binary_expression "local_27c + local_278 + iVar10" (binary_expression "local_27c + local_278" identifier + identifier) + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_274 = strpbrk(local_274," ,\t");" (assignment_expression "local_274 = strpbrk(local_274," ,\t")" identifier = (call_expression "strpbrk(local_274," ,\t")" identifier (argument_list "(local_274," ,\t")" ( identifier , (string_literal "" ,\t"" " string_content escape_sequence ") )))) ;) (if_statement "if (local_274 == (char *)0x0) goto LAB_00011c1c;" if (parenthesized_expression "(local_274 == (char *)0x0)" ( (binary_expression "local_274 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;)) (expression_statement "sVar7 = strspn(local_274," ,\t");" (assignment_expression "sVar7 = strspn(local_274," ,\t")" identifier = (call_expression "strspn(local_274," ,\t")" identifier (argument_list "(local_274," ,\t")" ( identifier , (string_literal "" ,\t"" " string_content escape_sequence ") )))) ;) (expression_statement "local_274 = local_274 + sVar7;" (assignment_expression "local_274 = local_274 + sVar7" identifier = (binary_expression "local_274 + sVar7" identifier + identifier)) ;) (if_statement "if (*local_274 == '\0') goto LAB_00011c1c;" if (parenthesized_expression "(*local_274 == '\0')" ( (binary_expression "*local_274 == '\0'" (pointer_expression "*local_274" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar10 != 0x400)" ( (binary_expression "iVar10 != 0x400" identifier != number_literal) )) ;) (expression_statement "iVar10 = 0x401;" (assignment_expression "iVar10 = 0x401" identifier = number_literal) ;) (labeled_statement "LAB_00011c1c:\n                    local_278 = local_278 + iVar10;" statement_identifier : (expression_statement "local_278 = local_278 + iVar10;" (assignment_expression "local_278 = local_278 + iVar10" identifier = (binary_expression "local_278 + iVar10" identifier + identifier)) ;)) })) })) }))) (expression_statement "local_29c = local_29c + 1;" (assignment_expression "local_29c = local_29c + 1" identifier = (binary_expression "local_29c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_29c != 0x200)" ( (binary_expression "local_29c != 0x200" identifier != number_literal) )) ;) }) (else_clause "else {\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" else (compound_statement "{\n            uVar19 = 0xffffffff;\n            pcVar6 = local_258.raw_arg;\n            do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');\n            sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar6 = local_258.raw_arg;\n            for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }\n            local_278 = iVar10 + 1;\n            if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" { (expression_statement "uVar19 = 0xffffffff;" (assignment_expression "uVar19 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar6 = local_258.raw_arg;" (assignment_expression "pcVar6 = local_258.raw_arg" identifier = (field_expression "local_258.raw_arg" identifier . field_identifier)) ;) (do_statement "do {\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            } while (cVar4 != '\0');" do (compound_statement "{\n              if (uVar19 == 0) break;\n              uVar19 = uVar19 - 1;\n              cVar4 = *pcVar6;\n              pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;\n            }" { (if_statement "if (uVar19 == 0) break;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar19 - 1;" (assignment_expression "uVar19 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "cVar4 = *pcVar6;" (assignment_expression "cVar4 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar22 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar22 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar22 * -2" identifier + (binary_expression "(uint)bVar22 * -2" (cast_expression "(uint)bVar22" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");" (assignment_expression "sVar7 = strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ")" identifier = (call_expression "strspn(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ")" identifier (argument_list "(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ")" ( (field_expression "local_258.raw_arg" identifier . field_identifier) , (string_literal ""0123456789aAbBcCdDeEfF, "" " string_content ") )))) ;) (if_statement "if (~uVar19 - 1 != sVar7) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" if (parenthesized_expression "(~uVar19 - 1 != sVar7)" ( (binary_expression "~uVar19 - 1 != sVar7" (binary_expression "~uVar19 - 1" (unary_expression "~uVar19" ~ identifier) - number_literal) != identifier) )) (compound_statement "{\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" { (labeled_statement "LAB_00011945:\n              pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "pcVar6 = local_258.raw_arg;" (assignment_expression "pcVar6 = local_258.raw_arg" identifier = (field_expression "local_258.raw_arg" identifier . field_identifier)) ;) (for_statement "for (iVar10 = 0; iVar10 < iVar21; iVar10 = iVar10 + 1) {\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }" for ( (assignment_expression "iVar10 = 0" identifier = number_literal) ; (binary_expression "iVar10 < iVar21" identifier < identifier) ; (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ) (compound_statement "{\n              iVar8 = __isoc99_sscanf();\n              if (iVar8 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar10) = (char)local_25c;\n              pcVar9 = strchr(pcVar6,0x2c);\n              pcVar6 = strchr(pcVar6,0x20);\n              if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }\n              pcVar6 = pcVar6 + 1;\n            }" { (expression_statement "iVar8 = __isoc99_sscanf();" (assignment_expression "iVar8 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 1) goto LAB_00011945;" if (parenthesized_expression "(iVar8 != 1)" ( (binary_expression "iVar8 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00011945;" goto statement_identifier ;)) (if_statement "if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }" if (parenthesized_expression "(0xff < local_25c)" ( (binary_expression "0xff < local_25c" number_literal < identifier) )) (compound_statement "{\n                pr2serr();\n                goto LAB_00011955;\n              }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "*(char *)(local_27c + iVar10) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + iVar10) = (char)local_25c" (pointer_expression "*(char *)(local_27c + iVar10)" * (cast_expression "(char *)(local_27c + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + iVar10)" ( (binary_expression "local_27c + iVar10" identifier + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar9 = strchr(pcVar6,0x2c);" (assignment_expression "pcVar9 = strchr(pcVar6,0x2c)" identifier = (call_expression "strchr(pcVar6,0x2c)" identifier (argument_list "(pcVar6,0x2c)" ( identifier , number_literal )))) ;) (expression_statement "pcVar6 = strchr(pcVar6,0x20);" (assignment_expression "pcVar6 = strchr(pcVar6,0x20)" identifier = (call_expression "strchr(pcVar6,0x20)" identifier (argument_list "(pcVar6,0x20)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar9 == (char *)0x0) {\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }\n              }" { (if_statement "if (pcVar6 == (char *)0x0) {\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_278 = iVar10 + 1;\n                  goto LAB_00011382;\n                }" { (expression_statement "local_278 = iVar10 + 1;" (assignment_expression "local_278 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00011382;" goto statement_identifier ;) })) }) (else_clause "else if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }" else (if_statement "if ((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)) {\n                pcVar6 = pcVar9;\n              }" if (parenthesized_expression "((pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6))" ( (binary_expression "(pcVar6 == (char *)0x0) || (pcVar9 <= pcVar6)" (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar9 <= pcVar6)" ( (binary_expression "pcVar9 <= pcVar6" identifier <= identifier) ))) )) (compound_statement "{\n                pcVar6 = pcVar9;\n              }" { (expression_statement "pcVar6 = pcVar9;" (assignment_expression "pcVar6 = pcVar9" identifier = identifier) ;) })))) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "local_278 = iVar10 + 1;" (assignment_expression "local_278 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (if_statement "if (iVar21 == iVar10) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" if (parenthesized_expression "(iVar21 == iVar10)" ( (binary_expression "iVar21 == iVar10" identifier == identifier) )) (compound_statement "{\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" { (labeled_statement "LAB_00011f16:\n              pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) }))) }))) (labeled_statement "LAB_00011382:\n        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" statement_identifier : (if_statement "if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }\n        else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" if (parenthesized_expression "((local_258.do_doff == false) && (local_258.do_uoff == false))" ( (binary_expression "(local_258.do_doff == false) && (local_258.do_uoff == false)" (parenthesized_expression "(local_258.do_doff == false)" ( (binary_expression "local_258.do_doff == false" (field_expression "local_258.do_doff" identifier . field_identifier) == false) )) && (parenthesized_expression "(local_258.do_uoff == false)" ( (binary_expression "local_258.do_uoff == false" (field_expression "local_258.do_uoff" identifier . field_identifier) == false) ))) )) (compound_statement "{\n          if (local_258.do_selftest < 1) goto LAB_00011621;\n          if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_258.do_raw != false) goto LAB_000113c3;\n        }" { (if_statement "if (local_258.do_selftest < 1) goto LAB_00011621;" if (parenthesized_expression "(local_258.do_selftest < 1)" ( (binary_expression "local_258.do_selftest < 1" (field_expression "local_258.do_selftest" identifier . field_identifier) < number_literal) )) (goto_statement "goto LAB_00011621;" goto statement_identifier ;)) (if_statement "if (local_258.do_deftest != false) {\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" if (parenthesized_expression "(local_258.do_deftest != false)" ( (binary_expression "local_258.do_deftest != false" (field_expression "local_258.do_deftest" identifier . field_identifier) != false) )) (compound_statement "{\nLAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" { (labeled_statement "LAB_000119dc:\n            if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" statement_identifier : (if_statement "if (local_258.opt_new == false) {\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n              pcVar6 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" { (expression_statement "pcVar6 = "either set -s=SF or -t (not both)";" (assignment_expression "pcVar6 = "either set -s=SF or -t (not both)"" identifier = (string_literal ""either set -s=SF or -t (not both)"" " string_content ")) ;) (goto_statement "goto LAB_000118f8;" goto statement_identifier ;) }))) (expression_statement "pcVar6 = "either set --selftest=SF or --test (not both)";" (assignment_expression "pcVar6 = "either set --selftest=SF or --test (not both)"" identifier = (string_literal ""either set --selftest=SF or --test (not both)"" " string_content ")) ;) (goto_statement "goto LAB_0001187f;" goto statement_identifier ;) })) (if_statement "if (local_258.do_raw != false) goto LAB_000113c3;" if (parenthesized_expression "(local_258.do_raw != false)" ( (binary_expression "local_258.do_raw != false" (field_expression "local_258.do_raw" identifier . field_identifier) != false) )) (goto_statement "goto LAB_000113c3;" goto statement_identifier ;)) }) (else_clause "else {\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" else (compound_statement "{\n          if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_258.do_selftest) goto LAB_000119dc;\nLAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" { (if_statement "if (local_258.do_deftest == false) {\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" if (parenthesized_expression "(local_258.do_deftest == false)" ( (binary_expression "local_258.do_deftest == false" (field_expression "local_258.do_deftest" identifier . field_identifier) == false) )) (compound_statement "{\n            if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar6 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" { (if_statement "if (local_258.opt_new == false) {\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n              pcVar6 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" { (expression_statement "pcVar6 = "setting -doff or -uoff only useful when -t is set";" (assignment_expression "pcVar6 = "setting -doff or -uoff only useful when -t is set"" identifier = (string_literal ""setting -doff or -uoff only useful when -t is set"" " string_content ")) ;) (goto_statement "goto LAB_000118f8;" goto statement_identifier ;) })) (expression_statement "pcVar6 = "setting --doff or --uoff only useful when -t is set";" (assignment_expression "pcVar6 = "setting --doff or --uoff only useful when -t is set"" identifier = (string_literal ""setting --doff or --uoff only useful when -t is set"" " string_content ")) ;) (goto_statement "goto LAB_0001187f;" goto statement_identifier ;) })) (if_statement "if (0 < local_258.do_selftest) goto LAB_000119dc;" if (parenthesized_expression "(0 < local_258.do_selftest)" ( (binary_expression "0 < local_258.do_selftest" number_literal < (field_expression "local_258.do_selftest" identifier . field_identifier)) )) (goto_statement "goto LAB_000119dc;" goto statement_identifier ;)) (labeled_statement "LAB_00011621:\n          if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" statement_identifier : (if_statement "if (local_258.do_raw != false) {\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" if (parenthesized_expression "(local_258.do_raw != false)" ( (binary_expression "local_258.do_raw != false" (field_expression "local_258.do_raw" identifier . field_identifier) != false) )) (compound_statement "{\n            if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" { (if_statement "if ((local_258._0_4_ & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" if (parenthesized_expression "((local_258._0_4_ & 0xffff00ff) != 0)" ( (binary_expression "(local_258._0_4_ & 0xffff00ff) != 0" (parenthesized_expression "(local_258._0_4_ & 0xffff00ff)" ( (binary_expression "local_258._0_4_ & 0xffff00ff" (field_expression "local_258._0_4_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar21 = 0x1f;\n              puts(pcVar6);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" { (labeled_statement "LAB_000113c3:\n              if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" statement_identifier : (if_statement "if (local_258.opt_new == false) {\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n                pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar21 = 0x1f;\n                puts(pcVar6);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" { (expression_statement "pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar6 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" identifier = (string_literal ""\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_000118f8:\n                iVar21 = 0x1f;" statement_identifier : (expression_statement "iVar21 = 0x1f;" (assignment_expression "iVar21 = 0x1f" identifier = number_literal) ;)) (expression_statement "puts(pcVar6);" (call_expression "puts(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );" (call_expression "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" identifier (argument_list "(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) }))) (expression_statement "pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar6 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" identifier = (string_literal ""\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_0001187f:\n              iVar21 = 0x1f;" statement_identifier : (expression_statement "iVar21 = 0x1f;" (assignment_expression "iVar21 = 0x1f" identifier = number_literal) ;)) (expression_statement "puts(pcVar6);" (call_expression "puts(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );" (call_expression "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" identifier (argument_list "(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_258.do_pf == false) {\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" if (parenthesized_expression "(local_258.do_pf == false)" ( (binary_expression "local_258.do_pf == false" (field_expression "local_258.do_pf" identifier . field_identifier) == false) )) (compound_statement "{\n              if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" { (if_statement "if (local_258.opt_new == false) {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }" { (expression_statement "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");" (call_expression "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" identifier (argument_list "(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" ( (string_literal "">>> warning, \'-pf\' probably should be used with \'-raw=\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }) (else_clause "else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" else (compound_statement "{\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" { (expression_statement "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");" (call_expression "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" identifier (argument_list "(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" ( (string_literal "">>> warning, \'--pf\' probably should be used with \'--raw=\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }))) })) }))) })))) (expression_statement "iVar10 = sg_cmds_open_device();" (assignment_expression "iVar10 = sg_cmds_open_device()" identifier = (call_expression "sg_cmds_open_device()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 < 0) {\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n          if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar21 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" { (if_statement "if ((void **)local_258.verbose != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }" if (parenthesized_expression "((void **)local_258.verbose != (void **)0x0)" ( (binary_expression "(void **)local_258.verbose != (void **)0x0" (cast_expression "(void **)local_258.verbose" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "local_258.verbose" identifier . field_identifier)) != (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            safe_strerror();\n            pr2serr();\n          }" { (expression_statement "safe_strerror();" (call_expression "safe_strerror()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar21 = sg_convert_errno();" (assignment_expression "iVar21 = sg_convert_errno()" identifier = (call_expression "sg_convert_errno()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (expression_statement "ppvVar11 = (void **)(uint)(3 < local_258.verbose);" (assignment_expression "ppvVar11 = (void **)(uint)(3 < local_258.verbose)" identifier = (cast_expression "(void **)(uint)(3 < local_258.verbose)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(uint)(3 < local_258.verbose)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < local_258.verbose)" ( (binary_expression "3 < local_258.verbose" number_literal < (field_expression "local_258.verbose" identifier . field_identifier)) ))))) ;) (expression_statement "ppvVar24 = &local_264;" (assignment_expression "ppvVar24 = &local_264" identifier = (pointer_expression "&local_264" & identifier)) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "iVar12 = sg_memalign();" (assignment_expression "iVar12 = sg_memalign()" identifier = (call_expression "sg_memalign()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar8 = local_258.page_code;" (assignment_expression "iVar8 = local_258.page_code" identifier = (field_expression "local_258.page_code" identifier . field_identifier)) ;) (if_statement "if (iVar12 == 0) {\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar21 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" { (expression_statement "iVar21 = 99;" (assignment_expression "iVar21 = 99" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_258.do_extdur == false) {\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }" if (parenthesized_expression "(local_258.do_extdur == false)" ( (binary_expression "local_258.do_extdur == false" (field_expression "local_258.do_extdur" identifier . field_identifier) == false) )) (compound_statement "{\n          if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          uVar19 = 0;\n          if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }\n          local_25c = 0;\n          iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);\n          if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }" { (if_statement "if (local_258.do_list == false) {\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" if (parenthesized_expression "(local_258.do_list == false)" ( (binary_expression "local_258.do_list == false" (field_expression "local_258.do_list" identifier . field_identifier) == false) )) (compound_statement "{\n            if (-1 < local_258.page_code) goto LAB_000116de;\n            if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" { (if_statement "if (-1 < local_258.page_code) goto LAB_000116de;" if (parenthesized_expression "(-1 < local_258.page_code)" ( (binary_expression "-1 < local_258.page_code" number_literal < (field_expression "local_258.page_code" identifier . field_identifier)) )) (goto_statement "goto LAB_000116de;" goto statement_identifier ;)) (if_statement "if (local_258.do_raw == false) {\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }" if (parenthesized_expression "(local_258.do_raw == false)" ( (binary_expression "local_258.do_raw == false" (field_expression "local_258.do_raw" identifier . field_identifier) == false) )) (compound_statement "{\n              uVar19 = local_258.page_code;\n              uVar18 = 0;\n              if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }\n              iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);\n              if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }\n            }" { (expression_statement "uVar19 = local_258.page_code;" (assignment_expression "uVar19 = local_258.page_code" identifier = (field_expression "local_258.page_code" identifier . field_identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {\n                uVar18 = local_258.timeout;\n              }" if (parenthesized_expression "(((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout))" ( (binary_expression "((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)) &&\n                 (uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)" (parenthesized_expression "((local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2))" ( (binary_expression "(local_258.do_deftest == false) &&\n                  (uVar19 = local_258.do_selftest - 5, uVar19 < 2)" (parenthesized_expression "(local_258.do_deftest == false)" ( (binary_expression "local_258.do_deftest == false" (field_expression "local_258.do_deftest" identifier . field_identifier) == false) )) && (parenthesized_expression "(uVar19 = local_258.do_selftest - 5, uVar19 < 2)" ( (comma_expression "uVar19 = local_258.do_selftest - 5, uVar19 < 2" (assignment_expression "uVar19 = local_258.do_selftest - 5" identifier = (binary_expression "local_258.do_selftest - 5" (field_expression "local_258.do_selftest" identifier . field_identifier) - number_literal)) , (binary_expression "uVar19 < 2" identifier < number_literal)) ))) )) && (parenthesized_expression "(uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)" ( (comma_expression "uVar19 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout" (assignment_expression "uVar19 = local_258.timeout" identifier = (field_expression "local_258.timeout" identifier . field_identifier)) , (comma_expression "uVar18 = 1, 0 < local_258.timeout" (assignment_expression "uVar18 = 1" identifier = number_literal) , (binary_expression "0 < local_258.timeout" number_literal < (field_expression "local_258.timeout" identifier . field_identifier)))) ))) )) (compound_statement "{\n                uVar18 = local_258.timeout;\n              }" { (expression_statement "uVar18 = local_258.timeout;" (assignment_expression "uVar18 = local_258.timeout" identifier = (field_expression "local_258.timeout" identifier . field_identifier)) ;) })) (expression_statement "iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19);" (assignment_expression "iVar21 = sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19)" identifier = (call_expression "sg_ll_send_diag(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19)" identifier (argument_list "(iVar10,local_258.do_selftest,local_258.do_pf,\n                                       local_258._0_4_ & 0xff,(uint)local_258._0_4_ >> 8 & 0xff,\n                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,uVar19)" ( identifier , (field_expression "local_258.do_selftest" identifier . field_identifier) , (field_expression "local_258.do_pf" identifier . field_identifier) , (binary_expression "local_258._0_4_ & 0xff" (field_expression "local_258._0_4_" identifier . field_identifier) & number_literal) , (binary_expression "(uint)local_258._0_4_ >> 8 & 0xff" (binary_expression "(uint)local_258._0_4_ >> 8" (cast_expression "(uint)local_258._0_4_" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_258._0_4_" identifier . field_identifier)) >> number_literal) & number_literal) , (field_expression "local_258.do_uoff" identifier . field_identifier) , identifier , number_literal , number_literal , number_literal , (field_expression "local_258.verbose" identifier . field_identifier) , identifier )))) ;) (if_statement "if (iVar21 != 0) {\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" { (labeled_statement "LAB_00011cc5:\n                if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" statement_identifier : (if_statement "if (iVar21 == 6) {\n                  pr2serr();\n                }\n                else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar21 == 6)" ( (binary_expression "iVar21 == 6" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" else (if_statement "if (iVar21 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar21 == 0xb)" ( (binary_expression "iVar21 == 0xb" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" else (if_statement "if (iVar21 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar21 == 2)" ( (binary_expression "iVar21 == 2" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n                  pr2serr();\n                }" else (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })))))))) (goto_statement "goto LAB_00011ce9;" goto statement_identifier ;) })) (if_statement "if (local_258.do_selftest - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }" if (parenthesized_expression "(local_258.do_selftest - 5U < 2)" ( (binary_expression "local_258.do_selftest - 5U < 2" (binary_expression "local_258.do_selftest - 5U" (field_expression "local_258.do_selftest" identifier . field_identifier) - number_literal) < number_literal) )) (compound_statement "{\n                puts("Foreground self-test returned GOOD status");\n              }" { (expression_statement "puts("Foreground self-test returned GOOD status");" (call_expression "puts("Foreground self-test returned GOOD status")" identifier (argument_list "("Foreground self-test returned GOOD status")" ( (string_literal ""Foreground self-test returned GOOD status"" " string_content ") ))) ;) }) (else_clause "else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }" else (if_statement "if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)) {\n                puts("Default self-test returned GOOD status");\n              }" if (parenthesized_expression "(((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false))" ( (binary_expression "((local_258.do_deftest != false) && (local_258.do_doff == false)) &&\n                      (local_258.do_uoff == false)" (parenthesized_expression "((local_258.do_deftest != false) && (local_258.do_doff == false))" ( (binary_expression "(local_258.do_deftest != false) && (local_258.do_doff == false)" (parenthesized_expression "(local_258.do_deftest != false)" ( (binary_expression "local_258.do_deftest != false" (field_expression "local_258.do_deftest" identifier . field_identifier) != false) )) && (parenthesized_expression "(local_258.do_doff == false)" ( (binary_expression "local_258.do_doff == false" (field_expression "local_258.do_doff" identifier . field_identifier) == false) ))) )) && (parenthesized_expression "(local_258.do_uoff == false)" ( (binary_expression "local_258.do_uoff == false" (field_expression "local_258.do_uoff" identifier . field_identifier) == false) ))) )) (compound_statement "{\n                puts("Default self-test returned GOOD status");\n              }" { (expression_statement "puts("Default self-test returned GOOD status");" (call_expression "puts("Default self-test returned GOOD status")" identifier (argument_list "("Default self-test returned GOOD status")" ( (string_literal ""Default self-test returned GOOD status"" " string_content ") ))) ;) })))) }) (else_clause "else {\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }" else (compound_statement "{\n              iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);\n              if (iVar21 != 0) goto LAB_00011cc5;\n            }" { (expression_statement "iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose);" (assignment_expression "iVar21 = sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose)" identifier = (call_expression "sg_ll_send_diag(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose)" identifier (argument_list "(iVar10,0,local_258.do_pf,0,0,0,0,local_27c,local_278,1,\n                                       local_258.verbose,local_258.verbose)" ( identifier , number_literal , (field_expression "local_258.do_pf" identifier . field_identifier) , number_literal , number_literal , number_literal , number_literal , identifier , identifier , number_literal , (field_expression "local_258.verbose" identifier . field_identifier) , (field_expression "local_258.verbose" identifier . field_identifier) )))) ;) (if_statement "if (iVar21 != 0) goto LAB_00011cc5;" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00011cc5;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) (if_statement "if (local_258.page_code < 0) {\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }" if (parenthesized_expression "(local_258.page_code < 0)" ( (binary_expression "local_258.page_code < 0" (field_expression "local_258.page_code" identifier . field_identifier) < number_literal) )) (compound_statement "{\n            uVar23 = 1;\n            ppvVar24 = (void **)local_258.verbose;\n            ppvVar11 = (void **)local_258.verbose;\n            iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);\n            if (iVar21 != 0) goto LAB_00011cc5;\n          }" { (expression_statement "uVar23 = 1;" (assignment_expression "uVar23 = 1" identifier = number_literal) ;) (expression_statement "ppvVar24 = (void **)local_258.verbose;" (assignment_expression "ppvVar24 = (void **)local_258.verbose" identifier = (cast_expression "(void **)local_258.verbose" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "local_258.verbose" identifier . field_identifier))) ;) (expression_statement "ppvVar11 = (void **)local_258.verbose;" (assignment_expression "ppvVar11 = (void **)local_258.verbose" identifier = (cast_expression "(void **)local_258.verbose" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "local_258.verbose" identifier . field_identifier))) ;) (expression_statement "iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose);" (assignment_expression "iVar21 = sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose)" identifier = (call_expression "sg_ll_send_diag(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose)" identifier (argument_list "(iVar10,0,1,0,0,0,0,iVar12,4,1,local_258.verbose,\n                                     local_258.verbose)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , (field_expression "local_258.verbose" identifier . field_identifier) , (field_expression "local_258.verbose" identifier . field_identifier) )))) ;) (if_statement "if (iVar21 != 0) goto LAB_00011cc5;" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00011cc5;" goto statement_identifier ;)) })) (labeled_statement "LAB_000116de:\n          uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (if_statement "if (-1 < iVar8) {\n            uVar19 = iVar8;\n          }" if (parenthesized_expression "(-1 < iVar8)" ( (binary_expression "-1 < iVar8" number_literal < identifier) )) (compound_statement "{\n            uVar19 = iVar8;\n          }" { (expression_statement "uVar19 = iVar8;" (assignment_expression "uVar19 = iVar8" identifier = identifier) ;) })) (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" identifier = number_literal) ;) (expression_statement "iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11);" (assignment_expression "iVar21 = sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11)" identifier = (call_expression "sg_ll_receive_diag_v2\n                             (iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11)" identifier (argument_list "(iVar10,(uint)~iVar8 >> 0x1f,uVar19,iVar12,iVar17,0,&local_25c,1,\n                              local_258.verbose,uVar23,ppvVar24,ppvVar11)" ( identifier , (binary_expression "(uint)~iVar8 >> 0x1f" (cast_expression "(uint)~iVar8" ( (type_descriptor "uint" type_identifier) ) (unary_expression "~iVar8" ~ identifier)) >> number_literal) , identifier , identifier , identifier , number_literal , (pointer_expression "&local_25c" & identifier) , number_literal , (field_expression "local_258.verbose" identifier . field_identifier) , identifier , identifier , identifier )))) ;) (if_statement "if (iVar21 == 0) {\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar17 = iVar17 - local_25c;\n            if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;\n            if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }\n            if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }" { (expression_statement "iVar17 = iVar17 - local_25c;" (assignment_expression "iVar17 = iVar17 - local_25c" identifier = (binary_expression "iVar17 - local_25c" identifier - identifier)) ;) (if_statement "if (iVar17 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" if (parenthesized_expression "(iVar17 < 4)" ( (binary_expression "iVar17 < 4" identifier < number_literal) )) (compound_statement "{\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto joined_r0x0001216b;" goto statement_identifier ;) })) (expression_statement "iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4;" (assignment_expression "iVar21 = (ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4" identifier = (binary_expression "(ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8) + 4" (call_expression "(ushort)(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8)" ( (binary_expression "*(ushort *)(iVar12 + 2) << 8 | *(ushort *)(iVar12 + 2) >> 8" (binary_expression "*(ushort *)(iVar12 + 2) << 8" (pointer_expression "*(ushort *)(iVar12 + 2)" * (cast_expression "(ushort *)(iVar12 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 2)" ( (binary_expression "iVar12 + 2" identifier + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(iVar12 + 2) >> 8" (pointer_expression "*(ushort *)(iVar12 + 2)" * (cast_expression "(ushort *)(iVar12 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 2)" ( (binary_expression "iVar12 + 2" identifier + number_literal) )))) >> number_literal)) ))) + number_literal)) ;) (if_statement "if (iVar17 <= iVar21) {\n              iVar21 = iVar17;\n            }" if (parenthesized_expression "(iVar17 <= iVar21)" ( (binary_expression "iVar17 <= iVar21" identifier <= identifier) )) (compound_statement "{\n              iVar21 = iVar17;\n            }" { (expression_statement "iVar21 = iVar17;" (assignment_expression "iVar21 = iVar17" identifier = identifier) ;) })) (if_statement "if (local_258.do_hex < 2) {\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }" if (parenthesized_expression "(local_258.do_hex < 2)" ( (binary_expression "local_258.do_hex < 2" (field_expression "local_258.do_hex" identifier . field_identifier) < number_literal) )) (compound_statement "{\n              ppVar16 = pc_desc_arr;\n              if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }" { (expression_statement "ppVar16 = pc_desc_arr;" (assignment_expression "ppVar16 = pc_desc_arr" identifier = identifier) ;) (if_statement "if (iVar8 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" if (parenthesized_expression "(iVar8 < 1)" ( (binary_expression "iVar8 < 1" identifier < number_literal) )) (compound_statement "{\n                puts("Supported diagnostic pages response:");\n                if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }" { (expression_statement "puts("Supported diagnostic pages response:");" (call_expression "puts("Supported diagnostic pages response:")" identifier (argument_list "("Supported diagnostic pages response:")" ( (string_literal ""Supported diagnostic pages response:"" " string_content ") ))) ;) (if_statement "if (local_258.do_hex == 0) {\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" if (parenthesized_expression "(local_258.do_hex == 0)" ( (binary_expression "local_258.do_hex == 0" (field_expression "local_258.do_hex" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                  for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" { (for_statement "for (iVar17 = 0; iVar17 < iVar21 + -4; iVar17 = iVar17 + 1) {\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }" for ( (assignment_expression "iVar17 = 0" identifier = number_literal) ; (binary_expression "iVar17 < iVar21 + -4" identifier < (binary_expression "iVar21 + -4" identifier + number_literal)) ; (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ) (compound_statement "{\n                    uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);\n                    ppVar16 = pc_desc_arr;\n                    do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);\n                    __printf_chk();\n                  }" { (expression_statement "uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17);" (assignment_expression "uVar19 = (uint)*(byte *)(iVar12 + 4 + iVar17)" identifier = (binary_expression "(uint)*(byte *)(iVar12 + 4 + iVar17)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar12 + 4 + iVar17)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 4 + iVar17)" ( (binary_expression "iVar12 + 4 + iVar17" (binary_expression "iVar12 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "ppVar16 = pc_desc_arr;" (assignment_expression "ppVar16 = pc_desc_arr" identifier = identifier) ;) (do_statement "do {\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    } while ((option *)ppVar16 != long_options);" do (compound_statement "{\n                      if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;\n                      ppVar16 = ppVar16 + 1;\n                    }" { (if_statement "if ((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))\n                      break;" if (parenthesized_expression "((uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code))" ( (binary_expression "(uVar19 == ppVar16->page_code) || ((int)uVar19 < ppVar16->page_code)" (parenthesized_expression "(uVar19 == ppVar16->page_code)" ( (binary_expression "uVar19 == ppVar16->page_code" identifier == (field_expression "ppVar16->page_code" identifier -> field_identifier)) )) || (parenthesized_expression "((int)uVar19 < ppVar16->page_code)" ( (binary_expression "(int)uVar19 < ppVar16->page_code" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "ppVar16->page_code" identifier -> field_identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "ppVar16 = ppVar16 + 1;" (assignment_expression "ppVar16 = ppVar16 + 1" identifier = (binary_expression "ppVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((option *)ppVar16 != long_options)" ( (binary_expression "(option *)ppVar16 != long_options" (cast_expression "(option *)ppVar16" ( (type_descriptor "option *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) }) (else_clause "else {\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" else (compound_statement "{\n                while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }\n                if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" { (while_statement "while( true ) {\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  uVar19 = ppVar16->page_code;\n                  if (uVar19 == iVar8) break;\n                  if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;\n                }" { (expression_statement "uVar19 = ppVar16->page_code;" (assignment_expression "uVar19 = ppVar16->page_code" identifier = (field_expression "ppVar16->page_code" identifier -> field_identifier)) ;) (if_statement "if (uVar19 == iVar8) break;" if (parenthesized_expression "(uVar19 == iVar8)" ( (binary_expression "uVar19 == iVar8" identifier == identifier) )) (break_statement "break;" break ;)) (if_statement "if ((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)) goto LAB_00012121;" if (parenthesized_expression "((uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options))" ( (binary_expression "(uVar19 != iVar8 && iVar8 <= (int)uVar19) ||\n                     (ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)" (parenthesized_expression "(uVar19 != iVar8 && iVar8 <= (int)uVar19)" ( (binary_expression "uVar19 != iVar8 && iVar8 <= (int)uVar19" (binary_expression "uVar19 != iVar8" identifier != identifier) && (binary_expression "iVar8 <= (int)uVar19" identifier <= (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier))) )) || (parenthesized_expression "(ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options)" ( (comma_expression "ppVar16 = ppVar16 + 1, (option *)ppVar16 == long_options" (assignment_expression "ppVar16 = ppVar16 + 1" identifier = (binary_expression "ppVar16 + 1" identifier + number_literal)) , (binary_expression "(option *)ppVar16 == long_options" (cast_expression "(option *)ppVar16" ( (type_descriptor "option *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier)) ))) )) (goto_statement "goto LAB_00012121;" goto statement_identifier ;)) })) (if_statement "if (ppVar16->desc != (char *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" if (parenthesized_expression "(ppVar16->desc != (char *)0x0)" ( (binary_expression "ppVar16->desc != (char *)0x0" (field_expression "ppVar16->desc" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" { (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00012134;" goto statement_identifier ;) })) (labeled_statement "LAB_00012121:\n                __printf_chk();" statement_identifier : (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;)) }))) (labeled_statement "LAB_00012134:\n              hex2stdout();" statement_identifier : (expression_statement "hex2stdout();" (call_expression "hex2stdout()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n              hex2stdout();\n            }" else (compound_statement "{\n              hex2stdout();\n            }" { (expression_statement "hex2stdout();" (call_expression "hex2stdout()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }" else (compound_statement "{\n            pr2serr();\njoined_r0x0001216b:\n            iVar21 = 0;\n            if (local_258.verbose < 2) goto LAB_00011e1d;\n          }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (labeled_statement "joined_r0x0001216b:\n            iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (if_statement "if (local_258.verbose < 2) goto LAB_00011e1d;" if (parenthesized_expression "(local_258.verbose < 2)" ( (binary_expression "local_258.verbose < 2" (field_expression "local_258.verbose" identifier . field_identifier) < number_literal) )) (goto_statement "goto LAB_00011e1d;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00011796:\n          sg_cmds_close_device();" statement_identifier : (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }" else (compound_statement "{\n          local_25c = 0;\n          iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);\n          if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar21 != 0) goto LAB_000117b2;\n        }" { (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" identifier = number_literal) ;) (expression_statement "iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose);" (assignment_expression "iVar21 = sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose)" identifier = (call_expression "sg_ll_mode_sense10_v2\n                             (iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose)" identifier (argument_list "(iVar10,0,1,0,10,0,iVar12,0x20,0,&local_25c,1,local_258.verbose)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , (pointer_expression "&local_25c" & identifier) , number_literal , (field_expression "local_258.verbose" identifier . field_identifier) )))) ;) (if_statement "if (iVar21 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }\n            iVar21 = 0x31;\n            pr2serr();\n          }" { (if_statement "if (3 < (int)(0x20 - local_25c)) {\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }" if (parenthesized_expression "(3 < (int)(0x20 - local_25c))" ( (binary_expression "3 < (int)(0x20 - local_25c)" number_literal < (cast_expression "(int)(0x20 - local_25c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x20 - local_25c)" ( (binary_expression "0x20 - local_25c" number_literal - identifier) )))) )) (compound_statement "{\n              piVar26 = &local_268;\n              uVar25 = 0;\n              uVar23 = 0x20;\n              iVar21 = sg_msense_calc_length();\n              if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }\n              goto LAB_00011796;\n            }" { (expression_statement "piVar26 = &local_268;" (assignment_expression "piVar26 = &local_268" identifier = (pointer_expression "&local_268" & identifier)) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = 0x20;" (assignment_expression "uVar23 = 0x20" identifier = number_literal) ;) (expression_statement "iVar21 = sg_msense_calc_length();" (assignment_expression "iVar21 = sg_msense_calc_length()" identifier = (call_expression "sg_msense_calc_length()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar21 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }" if (parenthesized_expression "(iVar21 - (local_268 + 8) < 0xc)" ( (binary_expression "iVar21 - (local_268 + 8) < 0xc" (binary_expression "iVar21 - (local_268 + 8)" identifier - (parenthesized_expression "(local_268 + 8)" ( (binary_expression "local_268 + 8" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n                puts("Extended self-test duration not available");\n              }" { (expression_statement "puts("Extended self-test duration not available");" (call_expression "puts("Extended self-test duration not available")" identifier (argument_list "("Extended self-test duration not available")" ( (string_literal ""Extended self-test duration not available"" " string_content ") ))) ;) }) (else_clause "else {\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }" else (compound_statement "{\n                uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);\n                uVar5 = uVar5 << 8 | uVar5 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);\n              }" { (expression_statement "uVar5 = *(ushort *)(iVar12 + 0x12 + local_268);" (assignment_expression "uVar5 = *(ushort *)(iVar12 + 0x12 + local_268)" identifier = (pointer_expression "*(ushort *)(iVar12 + 0x12 + local_268)" * (cast_expression "(ushort *)(iVar12 + 0x12 + local_268)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x12 + local_268)" ( (binary_expression "iVar12 + 0x12 + local_268" (binary_expression "iVar12 + 0x12" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar5 = uVar5 << 8 | uVar5 >> 8;" (assignment_expression "uVar5 = uVar5 << 8 | uVar5 >> 8" identifier = (binary_expression "uVar5 << 8 | uVar5 >> 8" (binary_expression "uVar5 << 8" identifier << number_literal) | (binary_expression "uVar5 >> 8" identifier >> number_literal))) ;) (expression_statement "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26);" (call_expression "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26)" identifier (argument_list "(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar5,(double)((float)uVar5 / DAT_00014940),uVar23,uVar25,piVar26)" ( number_literal , (string_literal ""Expected extended self-test duration=%d seconds (%.2f minutes)\n"" " string_content escape_sequence ") , identifier , (cast_expression "(double)((float)uVar5 / DAT_00014940)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)uVar5 / DAT_00014940)" ( (binary_expression "(float)uVar5 / DAT_00014940" (cast_expression "(float)uVar5" ( (type_descriptor "float" primitive_type) ) identifier) / identifier) ))) , identifier , identifier , identifier ))) ;) }))) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) (expression_statement "iVar21 = 0x31;" (assignment_expression "iVar21 = 0x31" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" else (compound_statement "{\n            sg_get_category_sense_str();\n            pr2serr();\n          }" { (expression_statement "sg_get_category_sense_str();" (call_expression "sg_get_category_sense_str()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puts("Extended self-test duration (mode page 0xa) failed");" (call_expression "puts("Extended self-test duration (mode page 0xa) failed")" identifier (argument_list "("Extended self-test duration (mode page 0xa) failed")" ( (string_literal ""Extended self-test duration (mode page 0xa) failed"" " string_content ") ))) ;) (labeled_statement "LAB_00011ce9:\n          if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" statement_identifier : (if_statement "if (1 < local_258.verbose) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" if (parenthesized_expression "(1 < local_258.verbose)" ( (binary_expression "1 < local_258.verbose" number_literal < (field_expression "local_258.verbose" identifier . field_identifier)) )) (compound_statement "{\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" { (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) }))) (labeled_statement "LAB_00011e1d:\n          pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iVar21 != 0) goto LAB_000117b2;" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;)) }))) (expression_statement "iVar21 = sg_convert_errno();" (assignment_expression "iVar21 = sg_convert_errno()" identifier = (call_expression "sg_convert_errno()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_258.do_list != false) {\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }" if (parenthesized_expression "(local_258.do_list != false)" ( (binary_expression "local_258.do_list != false" (field_expression "local_258.do_list" identifier . field_identifier) != false) )) (compound_statement "{\n        ppVar16 = pc_desc_arr;\n        puts("Page_Code  Description");\n        do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);\n        iVar21 = 0;\n        goto LAB_000112e2;\n      }" { (expression_statement "ppVar16 = pc_desc_arr;" (assignment_expression "ppVar16 = pc_desc_arr" identifier = identifier) ;) (expression_statement "puts("Page_Code  Description");" (call_expression "puts("Page_Code  Description")" identifier (argument_list "("Page_Code  Description")" ( (string_literal ""Page_Code  Description"" " string_content ") ))) ;) (do_statement "do {\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        } while ((option *)ppVar16 != long_options);" do (compound_statement "{\n          ppVar16 = ppVar16 + 1;\n          __printf_chk();\n        }" { (expression_statement "ppVar16 = ppVar16 + 1;" (assignment_expression "ppVar16 = ppVar16 + 1" identifier = (binary_expression "ppVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "((option *)ppVar16 != long_options)" ( (binary_expression "(option *)ppVar16 != long_options" (cast_expression "(option *)ppVar16" ( (type_descriptor "option *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_258.opt_new == false) {\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n        iVar21 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" { (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) (expression_statement "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );" (call_expression "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" identifier (argument_list "(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) })) }))) (labeled_statement "LAB_000112dd:\n  iVar21 = 1;" statement_identifier : (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {\n      pr2serr();\n    }\n    if (iVar21 < 0) {\n      iVar21 = 99;\n    }\n  }" statement_identifier : (while_statement "while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {\n      pr2serr();\n    }\n    if (iVar21 < 0) {\n      iVar21 = 99;\n    }\n  }" while (parenthesized_expression "(local_24 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_24 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    __stack_chk_fail_local();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {\n      pr2serr();\n    }\n    if (iVar21 < 0) {\n      iVar21 = 99;\n    }\n  }" { (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000122f0:\n    pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00011955:\n    if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" statement_identifier : (if_statement "if (local_258.opt_new == false) {\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" if (parenthesized_expression "(local_258.opt_new == false)" ( (binary_expression "local_258.opt_new == false" (field_expression "local_258.opt_new" identifier . field_identifier) == false) )) (compound_statement "{\n      iVar21 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) (expression_statement "puts("Bad sequence after \'-raw=\' option");" (call_expression "puts("Bad sequence after \'-raw=\' option")" identifier (argument_list "("Bad sequence after \'-raw=\' option")" ( (string_literal ""Bad sequence after \'-raw=\' option"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) }) (else_clause "else {\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" else (compound_statement "{\n      iVar21 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) (expression_statement "puts("Bad sequence after \'--raw=\' option");" (call_expression "puts("Bad sequence after \'--raw=\' option")" identifier (argument_list "("Bad sequence after \'--raw=\' option")" ( (string_literal ""Bad sequence after \'--raw=\' option"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) })))) (labeled_statement "LAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" statement_identifier : (if_statement "if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" if (parenthesized_expression "(local_260 != (void *)0x0)" ( (binary_expression "local_260 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(local_260);\n    }" { (expression_statement "free(local_260);" (call_expression "free(local_260)" identifier (argument_list "(local_260)" ( identifier ))) ;) }))) (if_statement "if (local_264 != (void *)0x0) {\n      free(local_264);\n    }" if (parenthesized_expression "(local_264 != (void *)0x0)" ( (binary_expression "local_264 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(local_264);\n    }" { (expression_statement "free(local_264);" (call_expression "free(local_264)" identifier (argument_list "(local_264)" ( identifier ))) ;) })) (if_statement "if ((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')) {\n      pr2serr();\n    }" if (parenthesized_expression "((local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0'))" ( (binary_expression "(local_280 == (void **)0x0) && (cVar4 = sg_if_can2stderr(), cVar4 == '\0')" (parenthesized_expression "(local_280 == (void **)0x0)" ( (binary_expression "local_280 == (void **)0x0" identifier == (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(cVar4 = sg_if_can2stderr(), cVar4 == '\0')" ( (comma_expression "cVar4 = sg_if_can2stderr(), cVar4 == '\0'" (assignment_expression "cVar4 = sg_if_can2stderr()" identifier = (call_expression "sg_if_can2stderr()" identifier (argument_list "()" ( )))) , (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      pr2serr();\n    }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar21 < 0) {\n      iVar21 = 99;\n    }" if (parenthesized_expression "(iVar21 < 0)" ( (binary_expression "iVar21 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar21 = 99;\n    }" { (expression_statement "iVar21 = 99;" (assignment_expression "iVar21 = 99" identifier = number_literal) ;) })) }))) (return_statement "return iVar21;" return identifier ;) })))
(translation_unit "int FUN_00011230(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}\n\n" (function_definition "int FUN_00011230(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}" primitive_type (function_declarator "FUN_00011230(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "void **ppvVar9;" primitive_type (pointer_declarator "**ppvVar9" * (pointer_declarator "*ppvVar9" * identifier)) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "ushort **ppuVar13;" type_identifier (pointer_declarator "**ppuVar13" * (pointer_declarator "*ppuVar13" * identifier)) ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "size_t sVar15;" primitive_type identifier ;) (declaration "undefined **ppuVar16;" type_identifier (pointer_declarator "**ppuVar16" * (pointer_declarator "*ppuVar16" * identifier)) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "void **ppvVar23;" primitive_type (pointer_declarator "**ppvVar23" * (pointer_declarator "*ppvVar23" * identifier)) ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "int local_29c;" primitive_type identifier ;) (declaration "void **local_280;" primitive_type (pointer_declarator "**local_280" * (pointer_declarator "*local_280" * identifier)) ;) (declaration "int local_27c;" primitive_type identifier ;) (declaration "int local_278;" primitive_type identifier ;) (declaration "char *local_274;" primitive_type (pointer_declarator "*local_274" * identifier) ;) (declaration "int local_268;" primitive_type identifier ;) (declaration "void *local_264;" primitive_type (pointer_declarator "*local_264" * identifier) ;) (declaration "void *local_260;" primitive_type (pointer_declarator "*local_260" * identifier) ;) (declaration "uint local_25c;" type_identifier identifier ;) (declaration "undefined4 local_258;" type_identifier identifier ;) (declaration "char local_254;" primitive_type identifier ;) (declaration "char local_253;" primitive_type identifier ;) (declaration "char local_252;" primitive_type identifier ;) (declaration "char local_251;" primitive_type identifier ;) (declaration "char local_250;" primitive_type identifier ;) (declaration "char local_24f;" primitive_type identifier ;) (declaration "int local_24c;" primitive_type identifier ;) (declaration "int local_248;" primitive_type identifier ;) (declaration "int local_244;" primitive_type identifier ;) (declaration "undefined *local_240;" type_identifier (pointer_declarator "*local_240" * identifier) ;) (declaration "int local_23c;" primitive_type identifier ;) (declaration "undefined *local_238;" type_identifier (pointer_declarator "*local_238" * identifier) ;) (declaration "void **local_234;" primitive_type (pointer_declarator "**local_234" * (pointer_declarator "*local_234" * identifier)) ;) (declaration "int local_230;" primitive_type identifier ;) (declaration "char *local_22c;" primitive_type (pointer_declarator "*local_22c" * identifier) ;) (declaration "char local_228;" primitive_type identifier ;) (declaration "char local_227;" primitive_type identifier ;) (declaration "char local_226 [514];" primitive_type (array_declarator "local_226 [514]" identifier [ number_literal ]) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 *local_18;" type_identifier (pointer_declarator "*local_18" * identifier) ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "local_18 = &param_1;" (assignment_expression "local_18 = &param_1" identifier = (pointer_expression "&param_1" & identifier)) ;) (expression_statement "local_24 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_264 = (void *)0x0;" (assignment_expression "local_264 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_260 = (void *)0x0;" (assignment_expression "local_260 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar20 = &local_258;" (assignment_expression "puVar20 = &local_258" identifier = (pointer_expression "&local_258" & identifier)) ;) (for_statement "for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }" for ( (assignment_expression "iVar17 = 0xc" identifier = number_literal) ; (binary_expression "iVar17 != 0" identifier != number_literal) ; (assignment_expression "iVar17 = iVar17 + -1" identifier = (binary_expression "iVar17 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }" { (expression_statement "*puVar20 = 0;" (assignment_expression "*puVar20 = 0" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) })) (expression_statement "local_244 = 0x1000;" (assignment_expression "local_244 = 0x1000" identifier = number_literal) ;) (expression_statement "local_240 = (undefined *)0xffffffff;" (assignment_expression "local_240 = (undefined *)0xffffffff" identifier = (cast_expression "(undefined *)0xffffffff" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar5 = getenv("SG3_UTILS_OLD_OPTS");" (assignment_expression "pcVar5 = getenv("SG3_UTILS_OLD_OPTS")" identifier = (call_expression "getenv("SG3_UTILS_OLD_OPTS")" identifier (argument_list "("SG3_UTILS_OLD_OPTS")" ( (string_literal ""SG3_UTILS_OLD_OPTS"" " string_content ") )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }" { (expression_statement "local_251 = '\x01';" (assignment_expression "local_251 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "iVar17 = FUN_00012510();" (assignment_expression "iVar17 = FUN_00012510()" identifier = (call_expression "FUN_00012510()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" { (if_statement "if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }" { (expression_statement "iVar17 = FUN_00012820();" (assignment_expression "iVar17 = FUN_00012820()" identifier = (call_expression "FUN_00012820()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000115cc;" goto statement_identifier ;) })) (if_statement "if (local_24c == 0) goto LAB_0001131a;" if (parenthesized_expression "(local_24c == 0)" ( (binary_expression "local_24c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001131a;" goto statement_identifier ;)) (labeled_statement "LAB_0001141a:\n      iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" else (compound_statement "{\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" { (expression_statement "local_251 = '\0';" (assignment_expression "local_251 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar17 = FUN_00012820();" (assignment_expression "iVar17 = FUN_00012820()" identifier = (call_expression "FUN_00012820()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (if_statement "if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }" { (if_statement "if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" if (parenthesized_expression "(local_24c != 0)" ( (binary_expression "local_24c != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" { (labeled_statement "LAB_000115ee:\n          iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (expression_statement "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );" (call_expression "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" identifier (argument_list "(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" else (compound_statement "{\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" { (expression_statement "iVar17 = FUN_00012510();" (assignment_expression "iVar17 = FUN_00012510()" identifier = (call_expression "FUN_00012510()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;" statement_identifier : (if_statement "if (iVar17 != 0) goto LAB_000112dd;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000112dd;" goto statement_identifier ;))) (if_statement "if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" if (parenthesized_expression "(local_24c != 0)" ( (binary_expression "local_24c != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" { (if_statement "if (local_251 != '\0') goto LAB_0001141a;" if (parenthesized_expression "(local_251 != '\0')" ( (binary_expression "local_251 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001141a;" goto statement_identifier ;)) (goto_statement "goto LAB_000115ee;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" statement_identifier : (if_statement "if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" if (parenthesized_expression "(local_250 == '\0')" ( (binary_expression "local_250 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }" { (labeled_statement "LAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" statement_identifier : (if_statement "if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" if (parenthesized_expression "(local_24f != '\0')" ( (binary_expression "local_24f != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) }))) }) (else_clause "else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" else (if_statement "if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" if (parenthesized_expression "(local_24f != '\0')" ( (binary_expression "local_24f != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pr2serr();\n        goto LAB_00011445;\n      }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011445;" goto statement_identifier ;) }))))) (expression_statement "iVar12 = local_244;" (assignment_expression "iVar12 = local_244" identifier = identifier) ;) (expression_statement "cVar3 = local_253;" (assignment_expression "cVar3 = local_253" identifier = identifier) ;) (if_statement "if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" if (parenthesized_expression "(local_230 != 0)" ( (binary_expression "local_230 != 0" identifier != number_literal) )) (compound_statement "{\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" { (expression_statement "local_280 = local_234;" (assignment_expression "local_280 = local_234" identifier = identifier) ;) (if_statement "if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" if (parenthesized_expression "(local_253 == '\0')" ( (binary_expression "local_253 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          local_278 = 0;\n          local_27c = 0;\n        }" { (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" identifier = number_literal) ;) (expression_statement "local_27c = 0;" (assignment_expression "local_27c = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" else (compound_statement "{\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" { (expression_statement "local_27c = sg_memalign();" (assignment_expression "local_27c = sg_memalign()" identifier = (call_expression "sg_memalign()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar17 = local_244;" (assignment_expression "iVar17 = local_244" identifier = identifier) ;) (expression_statement "puVar19 = PTR_stdin_00015ff0;" (assignment_expression "puVar19 = PTR_stdin_00015ff0" identifier = identifier) ;) (if_statement "if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" if (parenthesized_expression "(local_27c == 0)" ( (binary_expression "local_27c == 0" identifier == number_literal) )) (compound_statement "{\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" { (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (if_statement "if (local_22c == (char *)0x0) goto LAB_00011955;" if (parenthesized_expression "(local_22c == (char *)0x0)" ( (binary_expression "local_22c == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00011955;" goto statement_identifier ;)) (if_statement "if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" if (parenthesized_expression "(*local_22c == '-')" ( (binary_expression "*local_22c == '-'" (pointer_expression "*local_22c" * identifier) == (char_literal "'-'" ' character ')) )) (compound_statement "{\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }" { (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_29c = 0;" (assignment_expression "local_29c = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = local_226 + 2;" (assignment_expression "pcVar5 = local_226 + 2" identifier = (binary_expression "local_226 + 2" identifier + number_literal)) ;) (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" identifier = number_literal) ;) (do_statement "do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);" do (compound_statement "{\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            }" { (expression_statement "pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);" (assignment_expression "pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19)" identifier = (call_expression "fgets(pcVar5,0x200,*(FILE **)puVar19)" identifier (argument_list "(pcVar5,0x200,*(FILE **)puVar19)" ( identifier , number_literal , (pointer_expression "*(FILE **)puVar19" * (cast_expression "(FILE **)puVar19" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) )))) ;) (if_statement "if (pcVar7 == (char *)0x0) break;" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar5;" (assignment_expression "pcVar7 = pcVar5" identifier = identifier) ;) (do_statement "do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');" do (compound_statement "{\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              }" { (if_statement "if (uVar18 == 0) break;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pcVar7 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar7 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar18 = ~uVar18;" (assignment_expression "uVar18 = ~uVar18" identifier = (unary_expression "~uVar18" ~ identifier)) ;) (if_statement "if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" if (parenthesized_expression "(uVar18 - 1 == 0)" ( (binary_expression "uVar18 - 1 == 0" (binary_expression "uVar18 - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\nLAB_00011c3f:\n                local_228 = '\0';\n              }" { (labeled_statement "LAB_00011c3f:\n                local_228 = '\0';" statement_identifier : (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }) (else_clause "else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" else (compound_statement "{\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" { (expression_statement "sVar6 = uVar18 - 1;" (assignment_expression "sVar6 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = cVar3;" (assignment_expression "cVar1 = cVar3" identifier = identifier) ;) (if_statement "if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }" if (parenthesized_expression "(local_226[uVar18] == '\n')" ( (binary_expression "local_226[uVar18] == '\n'" (subscript_expression "local_226[uVar18]" identifier [ identifier ]) == (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }" { (expression_statement "local_226[uVar18] = '\0';" (assignment_expression "local_226[uVar18] = '\0'" (subscript_expression "local_226[uVar18]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (uVar18 - 2 == 0) goto LAB_00011c3f;" if (parenthesized_expression "(uVar18 - 2 == 0)" ( (binary_expression "uVar18 - 2 == 0" (binary_expression "uVar18 - 2" identifier - number_literal) == number_literal) )) (goto_statement "goto LAB_00011c3f;" goto statement_identifier ;)) (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sVar6 = uVar18 - 2;" (assignment_expression "sVar6 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) })) (expression_statement "local_274 = pcVar5;" (assignment_expression "local_274 = pcVar5" identifier = identifier) ;) (if_statement "if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" if (parenthesized_expression "(local_228 != '\0')" ( (binary_expression "local_228 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" { (expression_statement "ppuVar13 = __ctype_b_loc();" (assignment_expression "ppuVar13 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" if (parenthesized_expression "((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0)" ( (binary_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10)" ( (binary_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10" (pointer_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" * (cast_expression "(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar13 + local_226[2] * 2 + 1)" ( (binary_expression "(int)*ppuVar13 + local_226[2] * 2 + 1" (binary_expression "(int)*ppuVar13 + local_226[2] * 2" (cast_expression "(int)*ppuVar13" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar13" * identifier)) + (binary_expression "local_226[2] * 2" (subscript_expression "local_226[2]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" { (expression_statement "local_227 = local_226[2];" (assignment_expression "local_227 = local_226[2]" identifier = (subscript_expression "local_226[2]" identifier [ number_literal ])) ;) (expression_statement "local_226[0] = '\0';" (assignment_expression "local_226[0] = '\0'" (subscript_expression "local_226[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar8 = __isoc99_sscanf();" (assignment_expression "iVar8 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" if (parenthesized_expression "(iVar8 != 1)" ( (binary_expression "iVar8 != 1" identifier != number_literal) )) (compound_statement "{\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "sVar6 = sVar6 - 1;" (assignment_expression "sVar6 = sVar6 - 1" identifier = (binary_expression "sVar6 - 1" identifier - number_literal)) ;) (expression_statement "*(char *)(local_27c + -1 + local_278) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + -1 + local_278) = (char)local_25c" (pointer_expression "*(char *)(local_27c + -1 + local_278)" * (cast_expression "(char *)(local_27c + -1 + local_278)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + -1 + local_278)" ( (binary_expression "local_27c + -1 + local_278" (binary_expression "local_27c + -1" identifier + number_literal) + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_274 = local_226 + 3;" (assignment_expression "local_274 = local_226 + 3" identifier = (binary_expression "local_226 + 3" identifier + number_literal)) ;) })) (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "sVar14 = strspn(local_274," \t");" (assignment_expression "sVar14 = strspn(local_274," \t")" identifier = (call_expression "strspn(local_274," \t")" identifier (argument_list "(local_274," \t")" ( identifier , (string_literal "" \t"" " string_content escape_sequence ") )))) ;) (if_statement "if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }" if (parenthesized_expression "(sVar14 != sVar6)" ( (binary_expression "sVar14 != sVar6" identifier != identifier) )) (compound_statement "{\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }" { (expression_statement "local_274 = local_274 + sVar14;" (assignment_expression "local_274 = local_274 + sVar14" identifier = (binary_expression "local_274 + sVar14" identifier + identifier)) ;) (if_statement "if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }" if (parenthesized_expression "(*local_274 != '#')" ( (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }" { (expression_statement "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");" (assignment_expression "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" identifier = (call_expression "strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" identifier (argument_list "(local_274,"0123456789aAbBcCdDeEfF ,\t")" ( identifier , (string_literal ""0123456789aAbBcCdDeEfF ,\t"" " string_content escape_sequence ") )))) ;) (if_statement "if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;" if (parenthesized_expression "(((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))" ( (binary_expression "((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#')" (parenthesized_expression "((int)sVar15 < (int)(sVar6 - sVar14))" ( (binary_expression "(int)sVar15 < (int)(sVar6 - sVar14)" (cast_expression "(int)sVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)(sVar6 - sVar14)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar6 - sVar14)" ( (binary_expression "sVar6 - sVar14" identifier - identifier) )))) )) && (parenthesized_expression "(local_274[sVar15] != '#')" ( (binary_expression "local_274[sVar15] != '#'" (subscript_expression "local_274[sVar15]" identifier [ identifier ]) != (char_literal "'#'" ' character ')) ))) )) (goto_statement "goto LAB_000122f0;" goto statement_identifier ;)) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);" do (compound_statement "{\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    }" { (expression_statement "iVar10 = __isoc99_sscanf();" (assignment_expression "iVar10 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" { (if_statement "if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" if (parenthesized_expression "(*local_274 != '#')" ( (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;) })) (if_statement "if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" if (parenthesized_expression "(0xff < local_25c)" ( (binary_expression "0xff < local_25c" number_literal < identifier) )) (compound_statement "{\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (if_statement "if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" { (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (expression_statement "pcVar7 = local_274;" (assignment_expression "pcVar7 = local_274" identifier = identifier) ;) (do_statement "do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');" do (compound_statement "{\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "cVar2 = *pcVar7;" (assignment_expression "cVar2 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pcVar7 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar7 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }" if (parenthesized_expression "(iVar10 == -3)" ( (binary_expression "iVar10 == -3" identifier == number_literal) )) (compound_statement "{\n                          local_228 = *local_274;\n                        }" { (expression_statement "local_228 = *local_274;" (assignment_expression "local_228 = *local_274" identifier = (pointer_expression "*local_274" * identifier)) ;) })) })) (if_statement "if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;" if (parenthesized_expression "(iVar17 <= local_278 + iVar8)" ( (binary_expression "iVar17 <= local_278 + iVar8" identifier <= (binary_expression "local_278 + iVar8" identifier + identifier)) )) (goto_statement "goto LAB_00011f16;" goto statement_identifier ;)) (expression_statement "*(char *)(local_27c + local_278 + iVar8) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + local_278 + iVar8) = (char)local_25c" (pointer_expression "*(char *)(local_27c + local_278 + iVar8)" * (cast_expression "(char *)(local_27c + local_278 + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + local_278 + iVar8)" ( (binary_expression "local_27c + local_278 + iVar8" (binary_expression "local_27c + local_278" identifier + identifier) + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "local_274 = strpbrk(local_274," ,\t");" (assignment_expression "local_274 = strpbrk(local_274," ,\t")" identifier = (call_expression "strpbrk(local_274," ,\t")" identifier (argument_list "(local_274," ,\t")" ( identifier , (string_literal "" ,\t"" " string_content escape_sequence ") )))) ;) (if_statement "if (local_274 == (char *)0x0) goto LAB_00011c1c;" if (parenthesized_expression "(local_274 == (char *)0x0)" ( (binary_expression "local_274 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;)) (expression_statement "sVar6 = strspn(local_274," ,\t");" (assignment_expression "sVar6 = strspn(local_274," ,\t")" identifier = (call_expression "strspn(local_274," ,\t")" identifier (argument_list "(local_274," ,\t")" ( identifier , (string_literal "" ,\t"" " string_content escape_sequence ") )))) ;) (expression_statement "local_274 = local_274 + sVar6;" (assignment_expression "local_274 = local_274 + sVar6" identifier = (binary_expression "local_274 + sVar6" identifier + identifier)) ;) (if_statement "if (*local_274 == '\0') goto LAB_00011c1c;" if (parenthesized_expression "(*local_274 == '\0')" ( (binary_expression "*local_274 == '\0'" (pointer_expression "*local_274" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00011c1c;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar8 != 0x400)" ( (binary_expression "iVar8 != 0x400" identifier != number_literal) )) ;) (expression_statement "iVar8 = 0x401;" (assignment_expression "iVar8 = 0x401" identifier = number_literal) ;) (labeled_statement "LAB_00011c1c:\n                    local_278 = local_278 + iVar8;" statement_identifier : (expression_statement "local_278 = local_278 + iVar8;" (assignment_expression "local_278 = local_278 + iVar8" identifier = (binary_expression "local_278 + iVar8" identifier + identifier)) ;)) })) })) }))) (expression_statement "local_29c = local_29c + 1;" (assignment_expression "local_29c = local_29c + 1" identifier = (binary_expression "local_29c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_29c != 0x200)" ( (binary_expression "local_29c != 0x200" identifier != number_literal) )) ;) }) (else_clause "else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" else (compound_statement "{\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" { (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar5 = local_22c;" (assignment_expression "pcVar5 = local_22c" identifier = identifier) ;) (do_statement "do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');" do (compound_statement "{\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            }" { (if_statement "if (uVar18 == 0) break;" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (expression_statement "cVar3 = *pcVar5;" (assignment_expression "cVar3 = *pcVar5" identifier = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");" (assignment_expression "sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ")" identifier = (call_expression "strspn(local_22c,"0123456789aAbBcCdDeEfF, ")" identifier (argument_list "(local_22c,"0123456789aAbBcCdDeEfF, ")" ( identifier , (string_literal ""0123456789aAbBcCdDeEfF, "" " string_content ") )))) ;) (if_statement "if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" if (parenthesized_expression "(~uVar18 - 1 != sVar6)" ( (binary_expression "~uVar18 - 1 != sVar6" (binary_expression "~uVar18 - 1" (unary_expression "~uVar18" ~ identifier) - number_literal) != identifier) )) (compound_statement "{\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" { (labeled_statement "LAB_00011945:\n              pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "pcVar5 = local_22c;" (assignment_expression "pcVar5 = local_22c" identifier = identifier) ;) (for_statement "for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" for ( (assignment_expression "iVar8 = 0" identifier = number_literal) ; (binary_expression "iVar8 < iVar17" identifier < identifier) ; (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ) (compound_statement "{\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" { (expression_statement "iVar10 = __isoc99_sscanf();" (assignment_expression "iVar10 = __isoc99_sscanf()" identifier = (call_expression "__isoc99_sscanf()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 1) goto LAB_00011945;" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00011945;" goto statement_identifier ;)) (if_statement "if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }" if (parenthesized_expression "(0xff < local_25c)" ( (binary_expression "0xff < local_25c" number_literal < identifier) )) (compound_statement "{\n                pr2serr();\n                goto LAB_00011955;\n              }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) (expression_statement "*(char *)(local_27c + iVar8) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + iVar8) = (char)local_25c" (pointer_expression "*(char *)(local_27c + iVar8)" * (cast_expression "(char *)(local_27c + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_27c + iVar8)" ( (binary_expression "local_27c + iVar8" identifier + identifier) )))) = (cast_expression "(char)local_25c" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar7 = strchr(pcVar5,0x2c);" (assignment_expression "pcVar7 = strchr(pcVar5,0x2c)" identifier = (call_expression "strchr(pcVar5,0x2c)" identifier (argument_list "(pcVar5,0x2c)" ( identifier , number_literal )))) ;) (expression_statement "pcVar5 = strchr(pcVar5,0x20);" (assignment_expression "pcVar5 = strchr(pcVar5,0x20)" identifier = (call_expression "strchr(pcVar5,0x20)" identifier (argument_list "(pcVar5,0x20)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }" { (if_statement "if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }" { (expression_statement "local_278 = iVar8 + 1;" (assignment_expression "local_278 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00011382;" goto statement_identifier ;) })) }) (else_clause "else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" else (if_statement "if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" if (parenthesized_expression "((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5))" ( (binary_expression "(pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)" (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) ))) )) (compound_statement "{\n                pcVar5 = pcVar7;\n              }" { (expression_statement "pcVar5 = pcVar7;" (assignment_expression "pcVar5 = pcVar7" identifier = identifier) ;) })))) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "local_278 = iVar8 + 1;" (assignment_expression "local_278 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" if (parenthesized_expression "(iVar17 == iVar8)" ( (binary_expression "iVar17 == iVar8" identifier == identifier) )) (compound_statement "{\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" { (labeled_statement "LAB_00011f16:\n              pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00011955;" goto statement_identifier ;) })) }))) }))) (labeled_statement "LAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" statement_identifier : (if_statement "if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" if (parenthesized_expression "((local_258._1_1_ == '\0') && (local_252 == '\0'))" ( (binary_expression "(local_258._1_1_ == '\0') && (local_252 == '\0')" (parenthesized_expression "(local_258._1_1_ == '\0')" ( (binary_expression "local_258._1_1_ == '\0'" (field_expression "local_258._1_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_252 == '\0')" ( (binary_expression "local_252 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }" { (if_statement "if (local_23c < 1) goto LAB_00011621;" if (parenthesized_expression "(local_23c < 1)" ( (binary_expression "local_23c < 1" identifier < number_literal) )) (goto_statement "goto LAB_00011621;" goto statement_identifier ;)) (if_statement "if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" if (parenthesized_expression "((char)local_258 != '\0')" ( (binary_expression "(char)local_258 != '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" { (labeled_statement "LAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" statement_identifier : (if_statement "if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" { (expression_statement "pcVar5 = "either set -s=SF or -t (not both)";" (assignment_expression "pcVar5 = "either set -s=SF or -t (not both)"" identifier = (string_literal ""either set -s=SF or -t (not both)"" " string_content ")) ;) (goto_statement "goto LAB_000118f8;" goto statement_identifier ;) }))) (expression_statement "pcVar5 = "either set --selftest=SF or --test (not both)";" (assignment_expression "pcVar5 = "either set --selftest=SF or --test (not both)"" identifier = (string_literal ""either set --selftest=SF or --test (not both)"" " string_content ")) ;) (goto_statement "goto LAB_0001187f;" goto statement_identifier ;) })) (if_statement "if (local_253 != '\0') goto LAB_000113c3;" if (parenthesized_expression "(local_253 != '\0')" ( (binary_expression "local_253 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000113c3;" goto statement_identifier ;)) }) (else_clause "else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" else (compound_statement "{\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" { (if_statement "if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" if (parenthesized_expression "((char)local_258 == '\0')" ( (binary_expression "(char)local_258 == '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" { (if_statement "if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" { (expression_statement "pcVar5 = "setting -doff or -uoff only useful when -t is set";" (assignment_expression "pcVar5 = "setting -doff or -uoff only useful when -t is set"" identifier = (string_literal ""setting -doff or -uoff only useful when -t is set"" " string_content ")) ;) (goto_statement "goto LAB_000118f8;" goto statement_identifier ;) })) (expression_statement "pcVar5 = "setting --doff or --uoff only useful when -t is set";" (assignment_expression "pcVar5 = "setting --doff or --uoff only useful when -t is set"" identifier = (string_literal ""setting --doff or --uoff only useful when -t is set"" " string_content ")) ;) (goto_statement "goto LAB_0001187f;" goto statement_identifier ;) })) (if_statement "if (0 < local_23c) goto LAB_000119dc;" if (parenthesized_expression "(0 < local_23c)" ( (binary_expression "0 < local_23c" number_literal < identifier) )) (goto_statement "goto LAB_000119dc;" goto statement_identifier ;)) (labeled_statement "LAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" statement_identifier : (if_statement "if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" if (parenthesized_expression "(local_253 != '\0')" ( (binary_expression "local_253 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" { (if_statement "if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" if (parenthesized_expression "((local_258 & 0xffff00ff) != 0)" ( (binary_expression "(local_258 & 0xffff00ff) != 0" (parenthesized_expression "(local_258 & 0xffff00ff)" ( (binary_expression "local_258 & 0xffff00ff" identifier & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" { (labeled_statement "LAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" statement_identifier : (if_statement "if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" { (expression_statement "pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" identifier = (string_literal ""\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_000118f8:\n                iVar17 = 0x1f;" statement_identifier : (expression_statement "iVar17 = 0x1f;" (assignment_expression "iVar17 = 0x1f" identifier = number_literal) ;)) (expression_statement "puts(pcVar5);" (call_expression "puts(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );" (call_expression "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" identifier (argument_list "(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) }))) (expression_statement "pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" identifier = (string_literal ""\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_0001187f:\n              iVar17 = 0x1f;" statement_identifier : (expression_statement "iVar17 = 0x1f;" (assignment_expression "iVar17 = 0x1f" identifier = number_literal) ;)) (expression_statement "puts(pcVar5);" (call_expression "puts(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );" (call_expression "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" identifier (argument_list "(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" if (parenthesized_expression "(local_254 == '\0')" ( (binary_expression "local_254 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" { (if_statement "if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }" { (expression_statement "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");" (call_expression "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" identifier (argument_list "(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" ( (string_literal "">>> warning, \'-pf\' probably should be used with \'-raw=\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }) (else_clause "else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" else (compound_statement "{\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" { (expression_statement "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");" (call_expression "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" identifier (argument_list "(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" ( (string_literal "">>> warning, \'--pf\' probably should be used with \'--raw=\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }))) })) }))) })))) (expression_statement "iVar8 = sg_cmds_open_device();" (assignment_expression "iVar8 = sg_cmds_open_device()" identifier = (call_expression "sg_cmds_open_device()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (compound_statement "{\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" { (if_statement "if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }" if (parenthesized_expression "(local_234 != (void **)0x0)" ( (binary_expression "local_234 != (void **)0x0" identifier != (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            safe_strerror();\n            pr2serr();\n          }" { (expression_statement "safe_strerror();" (call_expression "safe_strerror()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar17 = sg_convert_errno();" (assignment_expression "iVar17 = sg_convert_errno()" identifier = (call_expression "sg_convert_errno()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (expression_statement "ppvVar9 = (void **)(uint)(3 < (int)local_234);" (assignment_expression "ppvVar9 = (void **)(uint)(3 < (int)local_234)" identifier = (cast_expression "(void **)(uint)(3 < (int)local_234)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(uint)(3 < (int)local_234)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < (int)local_234)" ( (binary_expression "3 < (int)local_234" number_literal < (cast_expression "(int)local_234" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "ppvVar23 = &local_264;" (assignment_expression "ppvVar23 = &local_264" identifier = (pointer_expression "&local_264" & identifier)) ;) (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (expression_statement "iVar10 = sg_memalign();" (assignment_expression "iVar10 = sg_memalign()" identifier = (call_expression "sg_memalign()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar19 = local_240;" (assignment_expression "puVar19 = local_240" identifier = identifier) ;) (if_statement "if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" { (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" if (parenthesized_expression "(local_258._2_1_ == '\0')" ( (binary_expression "local_258._2_1_ == '\0'" (field_expression "local_258._2_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }" { (if_statement "if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" if (parenthesized_expression "(local_258._3_1_ == '\0')" ( (binary_expression "local_258._3_1_ == '\0'" (field_expression "local_258._3_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" { (if_statement "if (-1 < (int)local_240) goto LAB_000116de;" if (parenthesized_expression "(-1 < (int)local_240)" ( (binary_expression "-1 < (int)local_240" number_literal < (cast_expression "(int)local_240" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000116de;" goto statement_identifier ;)) (if_statement "if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" if (parenthesized_expression "(local_253 == '\0')" ( (binary_expression "local_253 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }" { (expression_statement "puVar11 = (undefined *)0x0;" (assignment_expression "puVar11 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }" if (parenthesized_expression "((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238))" ( (binary_expression "(((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)" (parenthesized_expression "(((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2))" ( (binary_expression "((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)" (parenthesized_expression "((char)local_258 == '\0')" ( (binary_expression "(char)local_258 == '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)" ( (comma_expression "puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2" (assignment_expression "puVar19 = (undefined *)(local_23c - 5)" identifier = (cast_expression "(undefined *)(local_23c - 5)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_23c - 5)" ( (binary_expression "local_23c - 5" identifier - number_literal) )))) , (binary_expression "puVar19 < (undefined *)0x2" identifier < (cast_expression "(undefined *)0x2" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)" ( (comma_expression "puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238" (assignment_expression "puVar19 = local_238" identifier = identifier) , (comma_expression "puVar11 = (undefined *)0x1, 0 < (int)local_238" (assignment_expression "puVar11 = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "0 < (int)local_238" number_literal < (cast_expression "(int)local_238" ( (type_descriptor "int" primitive_type) ) identifier)))) ))) )) (compound_statement "{\n                puVar11 = local_238;\n              }" { (expression_statement "puVar11 = local_238;" (assignment_expression "puVar11 = local_238" identifier = identifier) ;) })) (expression_statement "iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" identifier = (call_expression "sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" identifier (argument_list "(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" ( identifier , identifier , identifier , (binary_expression "local_258 & 0xff" identifier & number_literal) , (binary_expression "local_258 >> 8 & 0xff" (binary_expression "local_258 >> 8" identifier >> number_literal) & number_literal) , identifier , identifier , number_literal , number_literal , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" { (labeled_statement "LAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" statement_identifier : (if_statement "if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar17 == 6)" ( (binary_expression "iVar17 == 6" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" else (if_statement "if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar17 == 0xb)" ( (binary_expression "iVar17 == 0xb" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" else (if_statement "if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" if (parenthesized_expression "(iVar17 == 2)" ( (binary_expression "iVar17 == 2" identifier == number_literal) )) (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n                  pr2serr();\n                }" else (compound_statement "{\n                  pr2serr();\n                }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })))))))) (goto_statement "goto LAB_00011ce9;" goto statement_identifier ;) })) (if_statement "if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" if (parenthesized_expression "(local_23c - 5U < 2)" ( (binary_expression "local_23c - 5U < 2" (binary_expression "local_23c - 5U" identifier - number_literal) < number_literal) )) (compound_statement "{\n                puts("Foreground self-test returned GOOD status");\n              }" { (expression_statement "puts("Foreground self-test returned GOOD status");" (call_expression "puts("Foreground self-test returned GOOD status")" identifier (argument_list "("Foreground self-test returned GOOD status")" ( (string_literal ""Foreground self-test returned GOOD status"" " string_content ") ))) ;) }) (else_clause "else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" else (if_statement "if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" if (parenthesized_expression "((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0'))" ( (binary_expression "(((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')" (parenthesized_expression "(((char)local_258 != '\0') && (local_258._1_1_ == '\0'))" ( (binary_expression "((char)local_258 != '\0') && (local_258._1_1_ == '\0')" (parenthesized_expression "((char)local_258 != '\0')" ( (binary_expression "(char)local_258 != '\0'" (cast_expression "(char)local_258" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_258._1_1_ == '\0')" ( (binary_expression "local_258._1_1_ == '\0'" (field_expression "local_258._1_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_252 == '\0')" ( (binary_expression "local_252 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                puts("Default self-test returned GOOD status");\n              }" { (expression_statement "puts("Default self-test returned GOOD status");" (call_expression "puts("Default self-test returned GOOD status")" identifier (argument_list "("Default self-test returned GOOD status")" ( (string_literal ""Default self-test returned GOOD status"" " string_content ") ))) ;) })))) }) (else_clause "else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" else (compound_statement "{\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" { (expression_statement "iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" identifier = (call_expression "sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" identifier (argument_list "(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" ( identifier , number_literal , identifier , number_literal , number_literal , number_literal , number_literal , identifier , identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar17 != 0) goto LAB_00011cc5;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00011cc5;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) (if_statement "if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }" if (parenthesized_expression "((int)local_240 < 0)" ( (binary_expression "(int)local_240 < 0" (cast_expression "(int)local_240" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }" { (expression_statement "uVar22 = 1;" (assignment_expression "uVar22 = 1" identifier = number_literal) ;) (expression_statement "ppvVar23 = local_234;" (assignment_expression "ppvVar23 = local_234" identifier = identifier) ;) (expression_statement "ppvVar9 = local_234;" (assignment_expression "ppvVar9 = local_234" identifier = identifier) ;) (expression_statement "iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" identifier = (call_expression "sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" identifier (argument_list "(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar17 != 0) goto LAB_00011cc5;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00011cc5;" goto statement_identifier ;)) })) (labeled_statement "LAB_000116de:\n          puVar11 = (undefined *)0x0;" statement_identifier : (expression_statement "puVar11 = (undefined *)0x0;" (assignment_expression "puVar11 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }" if (parenthesized_expression "(-1 < (int)puVar19)" ( (binary_expression "-1 < (int)puVar19" number_literal < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            puVar11 = puVar19;\n          }" { (expression_statement "puVar11 = puVar19;" (assignment_expression "puVar11 = puVar19" identifier = identifier) ;) })) (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" identifier = number_literal) ;) (expression_statement "iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);" (assignment_expression "iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" identifier = (call_expression "sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" identifier (argument_list "(iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" ( identifier , (binary_expression "~(uint)puVar19 >> 0x1f" (unary_expression "~(uint)puVar19" ~ (cast_expression "(uint)puVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal) , identifier , identifier , identifier , number_literal , (pointer_expression "&local_25c" & identifier) , number_literal , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }" { (expression_statement "iVar12 = iVar12 - local_25c;" (assignment_expression "iVar12 = iVar12 - local_25c" identifier = (binary_expression "iVar12 - local_25c" identifier - identifier)) ;) (if_statement "if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" if (parenthesized_expression "(iVar12 < 4)" ( (binary_expression "iVar12 < 4" identifier < number_literal) )) (compound_statement "{\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto joined_r0x0001216b;" goto statement_identifier ;) })) (expression_statement "iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;" (assignment_expression "iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4" identifier = (binary_expression "(ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4" (call_expression "(ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8)" ( (binary_expression "*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8" (binary_expression "*(ushort *)(iVar10 + 2) << 8" (pointer_expression "*(ushort *)(iVar10 + 2)" * (cast_expression "(ushort *)(iVar10 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 2)" ( (binary_expression "iVar10 + 2" identifier + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(iVar10 + 2) >> 8" (pointer_expression "*(ushort *)(iVar10 + 2)" * (cast_expression "(ushort *)(iVar10 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 2)" ( (binary_expression "iVar10 + 2" identifier + number_literal) )))) >> number_literal)) ))) + number_literal)) ;) (if_statement "if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }" if (parenthesized_expression "(iVar12 <= iVar17)" ( (binary_expression "iVar12 <= iVar17" identifier <= identifier) )) (compound_statement "{\n              iVar17 = iVar12;\n            }" { (expression_statement "iVar17 = iVar12;" (assignment_expression "iVar17 = iVar12" identifier = identifier) ;) })) (if_statement "if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }" if (parenthesized_expression "(local_248 < 2)" ( (binary_expression "local_248 < 2" identifier < number_literal) )) (compound_statement "{\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }" { (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" identifier = (cast_expression "(undefined **)&DAT_00016020" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00016020" & identifier))) ;) (if_statement "if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" if (parenthesized_expression "((int)puVar19 < 1)" ( (binary_expression "(int)puVar19 < 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }" { (expression_statement "puts("Supported diagnostic pages response:");" (call_expression "puts("Supported diagnostic pages response:")" identifier (argument_list "("Supported diagnostic pages response:")" ( (string_literal ""Supported diagnostic pages response:"" " string_content ") ))) ;) (if_statement "if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" if (parenthesized_expression "(local_248 == 0)" ( (binary_expression "local_248 == 0" identifier == number_literal) )) (compound_statement "{\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" { (for_statement "for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }" for ( (assignment_expression "iVar12 = 0" identifier = number_literal) ; (binary_expression "iVar12 < iVar17 + -4" identifier < (binary_expression "iVar17 + -4" identifier + number_literal)) ; (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ) (compound_statement "{\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }" { (expression_statement "puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);" (assignment_expression "puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12)" identifier = (binary_expression "(undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12)" (cast_expression "(undefined *)(uint)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar10 + 4 + iVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 4 + iVar12)" ( (binary_expression "iVar10 + 4 + iVar12" (binary_expression "iVar10 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" identifier = (cast_expression "(undefined **)&DAT_00016020" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00016020" & identifier))) ;) (do_statement "do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);" do (compound_statement "{\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    }" { (if_statement "if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;" if (parenthesized_expression "((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16))" ( (binary_expression "(puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)" (parenthesized_expression "(puVar19 == *ppuVar16)" ( (binary_expression "puVar19 == *ppuVar16" identifier == (pointer_expression "*ppuVar16" * identifier)) )) || (parenthesized_expression "((int)puVar19 < (int)*ppuVar16)" ( (binary_expression "(int)puVar19 < (int)*ppuVar16" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*ppuVar16" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar16" * identifier))) ))) )) (break_statement "break;" break ;)) (expression_statement "ppuVar16 = ppuVar16 + 2;" (assignment_expression "ppuVar16 = ppuVar16 + 2" identifier = (binary_expression "ppuVar16 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(ppuVar16 != &PTR_DAT_000160c0)" ( (binary_expression "ppuVar16 != &PTR_DAT_000160c0" identifier != (pointer_expression "&PTR_DAT_000160c0" & identifier)) )) ;) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) }) (else_clause "else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" else (compound_statement "{\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" { (while_statement "while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }" { (expression_statement "puVar11 = *ppuVar16;" (assignment_expression "puVar11 = *ppuVar16" identifier = (pointer_expression "*ppuVar16" * identifier)) ;) (if_statement "if (puVar11 == puVar19) break;" if (parenthesized_expression "(puVar11 == puVar19)" ( (binary_expression "puVar11 == puVar19" identifier == identifier) )) (break_statement "break;" break ;)) (if_statement "if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;" if (parenthesized_expression "((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0))" ( (binary_expression "(puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)" (parenthesized_expression "(puVar11 != puVar19 && (int)puVar19 <= (int)puVar11)" ( (binary_expression "puVar11 != puVar19 && (int)puVar19 <= (int)puVar11" (binary_expression "puVar11 != puVar19" identifier != identifier) && (binary_expression "(int)puVar19 <= (int)puVar11" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier))) )) || (parenthesized_expression "(ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)" ( (comma_expression "ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0" (assignment_expression "ppuVar16 = ppuVar16 + 2" identifier = (binary_expression "ppuVar16 + 2" identifier + number_literal)) , (binary_expression "ppuVar16 == &PTR_DAT_000160c0" identifier == (pointer_expression "&PTR_DAT_000160c0" & identifier))) ))) )) (goto_statement "goto LAB_00012121;" goto statement_identifier ;)) })) (if_statement "if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" if (parenthesized_expression "(ppuVar16[1] != (undefined *)0x0)" ( (binary_expression "ppuVar16[1] != (undefined *)0x0" (subscript_expression "ppuVar16[1]" identifier [ number_literal ]) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" { (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00012134;" goto statement_identifier ;) })) (labeled_statement "LAB_00012121:\n                __printf_chk();" statement_identifier : (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;)) }))) (labeled_statement "LAB_00012134:\n              hex2stdout();" statement_identifier : (expression_statement "hex2stdout();" (call_expression "hex2stdout()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n              hex2stdout();\n            }" else (compound_statement "{\n              hex2stdout();\n            }" { (expression_statement "hex2stdout();" (call_expression "hex2stdout()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" else (compound_statement "{\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (labeled_statement "joined_r0x0001216b:\n            iVar17 = 0;" statement_identifier : (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;)) (if_statement "if ((int)local_234 < 2) goto LAB_00011e1d;" if (parenthesized_expression "((int)local_234 < 2)" ( (binary_expression "(int)local_234 < 2" (cast_expression "(int)local_234" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00011e1d;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00011796:\n          sg_cmds_close_device();" statement_identifier : (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;)) }) (else_clause "else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" else (compound_statement "{\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" { (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" identifier = number_literal) ;) (expression_statement "iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);" (assignment_expression "iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" identifier = (call_expression "sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" identifier (argument_list "(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , (pointer_expression "&local_25c" & identifier) , number_literal , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }" { (if_statement "if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }" if (parenthesized_expression "(3 < (int)(0x20 - local_25c))" ( (binary_expression "3 < (int)(0x20 - local_25c)" number_literal < (cast_expression "(int)(0x20 - local_25c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x20 - local_25c)" ( (binary_expression "0x20 - local_25c" number_literal - identifier) )))) )) (compound_statement "{\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }" { (expression_statement "piVar25 = &local_268;" (assignment_expression "piVar25 = &local_268" identifier = (pointer_expression "&local_268" & identifier)) ;) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = 0x20;" (assignment_expression "uVar22 = 0x20" identifier = number_literal) ;) (expression_statement "iVar17 = sg_msense_calc_length();" (assignment_expression "iVar17 = sg_msense_calc_length()" identifier = (call_expression "sg_msense_calc_length()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" if (parenthesized_expression "(iVar17 - (local_268 + 8) < 0xc)" ( (binary_expression "iVar17 - (local_268 + 8) < 0xc" (binary_expression "iVar17 - (local_268 + 8)" identifier - (parenthesized_expression "(local_268 + 8)" ( (binary_expression "local_268 + 8" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n                puts("Extended self-test duration not available");\n              }" { (expression_statement "puts("Extended self-test duration not available");" (call_expression "puts("Extended self-test duration not available")" identifier (argument_list "("Extended self-test duration not available")" ( (string_literal ""Extended self-test duration not available"" " string_content ") ))) ;) }) (else_clause "else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" else (compound_statement "{\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" { (expression_statement "uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);" (assignment_expression "uVar4 = *(ushort *)(iVar10 + 0x12 + local_268)" identifier = (pointer_expression "*(ushort *)(iVar10 + 0x12 + local_268)" * (cast_expression "(ushort *)(iVar10 + 0x12 + local_268)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x12 + local_268)" ( (binary_expression "iVar10 + 0x12 + local_268" (binary_expression "iVar10 + 0x12" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar4 = uVar4 << 8 | uVar4 >> 8;" (assignment_expression "uVar4 = uVar4 << 8 | uVar4 >> 8" identifier = (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal))) ;) (expression_statement "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);" (call_expression "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25)" identifier (argument_list "(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25)" ( number_literal , (string_literal ""Expected extended self-test duration=%d seconds (%.2f minutes)\n"" " string_content escape_sequence ") , identifier , (cast_expression "(double)((float)uVar4 / DAT_00014940)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)uVar4 / DAT_00014940)" ( (binary_expression "(float)uVar4 / DAT_00014940" (cast_expression "(float)uVar4" ( (type_descriptor "float" primitive_type) ) identifier) / identifier) ))) , identifier , identifier , identifier ))) ;) }))) (goto_statement "goto LAB_00011796;" goto statement_identifier ;) })) (expression_statement "iVar17 = 0x31;" (assignment_expression "iVar17 = 0x31" identifier = number_literal) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" else (compound_statement "{\n            sg_get_category_sense_str();\n            pr2serr();\n          }" { (expression_statement "sg_get_category_sense_str();" (call_expression "sg_get_category_sense_str()" identifier (argument_list "()" ( ))) ;) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puts("Extended self-test duration (mode page 0xa) failed");" (call_expression "puts("Extended self-test duration (mode page 0xa) failed")" identifier (argument_list "("Extended self-test duration (mode page 0xa) failed")" ( (string_literal ""Extended self-test duration (mode page 0xa) failed"" " string_content ") ))) ;) (labeled_statement "LAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" statement_identifier : (if_statement "if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" if (parenthesized_expression "(1 < (int)local_234)" ( (binary_expression "1 < (int)local_234" number_literal < (cast_expression "(int)local_234" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" { (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) }))) (labeled_statement "LAB_00011e1d:\n          pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iVar17 != 0) goto LAB_000117b2;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;)) }))) (expression_statement "iVar17 = sg_convert_errno();" (assignment_expression "iVar17 = sg_convert_errno()" identifier = (call_expression "sg_convert_errno()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000117b2;" goto statement_identifier ;) })) (if_statement "if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }" if (parenthesized_expression "(local_258._3_1_ != '\0')" ( (binary_expression "local_258._3_1_ != '\0'" (field_expression "local_258._3_1_" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }" { (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" identifier = (cast_expression "(undefined **)&DAT_00016020" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00016020" & identifier))) ;) (expression_statement "puts("Page_Code  Description");" (call_expression "puts("Page_Code  Description")" identifier (argument_list "("Page_Code  Description")" ( (string_literal ""Page_Code  Description"" " string_content ") ))) ;) (do_statement "do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);" do (compound_statement "{\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        }" { (expression_statement "ppuVar16 = ppuVar16 + 2;" (assignment_expression "ppuVar16 = ppuVar16 + 2" identifier = (binary_expression "ppuVar16 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(ppuVar16 != &PTR_DAT_000160c0)" ( (binary_expression "ppuVar16 != &PTR_DAT_000160c0" identifier != (pointer_expression "&PTR_DAT_000160c0" & identifier)) )) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );" (call_expression "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" identifier (argument_list "(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) (goto_statement "goto LAB_000112e2;" goto statement_identifier ;) })) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) })) }))) (labeled_statement "LAB_000112dd:\n  iVar17 = 1;" statement_identifier : (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" statement_identifier : (while_statement "while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" while (parenthesized_expression "(local_24 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_24 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" { (expression_statement "FUN_00012b70();" (call_expression "FUN_00012b70()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000122f0:\n    pr2serr();" statement_identifier : (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" statement_identifier : (if_statement "if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" if (parenthesized_expression "(local_251 == '\0')" ( (binary_expression "local_251 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puts("Bad sequence after \'-raw=\' option");" (call_expression "puts("Bad sequence after \'-raw=\' option")" identifier (argument_list "("Bad sequence after \'-raw=\' option")" ( (string_literal ""Bad sequence after \'-raw=\' option"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) }) (else_clause "else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" else (compound_statement "{\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puts("Bad sequence after \'--raw=\' option");" (call_expression "puts("Bad sequence after \'--raw=\' option")" identifier (argument_list "("Bad sequence after \'--raw=\' option")" ( (string_literal ""Bad sequence after \'--raw=\' option"" " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" identifier (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" ( (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" " 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 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 ") ))) ;) })))) (labeled_statement "LAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" statement_identifier : (if_statement "if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" if (parenthesized_expression "(local_260 != (void *)0x0)" ( (binary_expression "local_260 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(local_260);\n    }" { (expression_statement "free(local_260);" (call_expression "free(local_260)" identifier (argument_list "(local_260)" ( identifier ))) ;) }))) (if_statement "if (local_264 != (void *)0x0) {\n      free(local_264);\n    }" if (parenthesized_expression "(local_264 != (void *)0x0)" ( (binary_expression "local_264 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(local_264);\n    }" { (expression_statement "free(local_264);" (call_expression "free(local_264)" identifier (argument_list "(local_264)" ( identifier ))) ;) })) (if_statement "if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }" if (parenthesized_expression "((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0'))" ( (binary_expression "(local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')" (parenthesized_expression "(local_280 == (void **)0x0)" ( (binary_expression "local_280 == (void **)0x0" identifier == (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(cVar3 = sg_if_can2stderr(), cVar3 == '\0')" ( (comma_expression "cVar3 = sg_if_can2stderr(), cVar3 == '\0'" (assignment_expression "cVar3 = sg_if_can2stderr()" identifier = (call_expression "sg_if_can2stderr()" identifier (argument_list "()" ( )))) , (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      pr2serr();\n    }" { (expression_statement "pr2serr();" (call_expression "pr2serr()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar17 < 0) {\n      iVar17 = 99;\n    }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar17 = 99;\n    }" { (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" identifier = number_literal) ;) })) }))) (return_statement "return iVar17;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (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 *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (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 != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) }))))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (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 (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != (char_literal ' character ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) })) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (unary_expression ~ IDENT) - LIT) != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (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 = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (goto_statement goto statement_identifier ;) })) }))) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") ))) ;) }))) })) }))) })))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) && (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))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) , (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , (binary_expression (binary_expression IDENT >> LIT) & LIT) , IDENT , IDENT , LIT , LIT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))))))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , LIT , LIT , LIT , LIT , IDENT , IDENT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT , LIT , LIT , LIT , IDENT , LIT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) , IDENT , IDENT , IDENT , LIT , (pointer_expression & IDENT) , LIT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT < (binary_expression IDENT + LIT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (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 *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) && (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT == (pointer_expression & IDENT))) ))) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT , LIT , LIT , IDENT , LIT , LIT , (pointer_expression & IDENT) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT) ))) , IDENT , IDENT , IDENT ))) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( (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 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 ") ))) ;) })))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_00011230(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}" (primitive_type "int") (function_declarator "FUN_00011230(undefined4 param_1,undefined4 param_2)" (identifier "FUN_00011230") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char cVar3;\n  ushort uVar4;\n  char *pcVar5;\n  size_t sVar6;\n  char *pcVar7;\n  int iVar8;\n  void **ppvVar9;\n  int iVar10;\n  undefined *puVar11;\n  int iVar12;\n  ushort **ppuVar13;\n  size_t sVar14;\n  size_t sVar15;\n  undefined **ppuVar16;\n  int iVar17;\n  uint uVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  int in_GS_OFFSET;\n  byte bVar21;\n  undefined4 uVar22;\n  void **ppvVar23;\n  undefined4 uVar24;\n  int *piVar25;\n  int local_29c;\n  void **local_280;\n  int local_27c;\n  int local_278;\n  char *local_274;\n  int local_268;\n  void *local_264;\n  void *local_260;\n  uint local_25c;\n  undefined4 local_258;\n  char local_254;\n  char local_253;\n  char local_252;\n  char local_251;\n  char local_250;\n  char local_24f;\n  int local_24c;\n  int local_248;\n  int local_244;\n  undefined *local_240;\n  int local_23c;\n  undefined *local_238;\n  void **local_234;\n  int local_230;\n  char *local_22c;\n  char local_228;\n  char local_227;\n  char local_226 [514];\n  int local_24;\n  undefined4 *local_18;\n  \n  bVar21 = 0;\n  local_18 = &param_1;\n  local_24 = *(int *)(in_GS_OFFSET + 0x14);\n  local_264 = (void *)0x0;\n  local_260 = (void *)0x0;\n  puVar20 = &local_258;\n  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }\n  local_244 = 0x1000;\n  local_240 = (undefined *)0xffffffff;\n  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");\n  if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }\nLAB_000112dd:\n  iVar17 = 1;\nLAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }\n  return iVar17;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "ushort uVar4;" (type_identifier "ushort") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "void **ppvVar9;" (primitive_type "void") (pointer_declarator "**ppvVar9" (* "*") (pointer_declarator "*ppvVar9" (* "*") (identifier "ppvVar9"))) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined *puVar11;" (type_identifier "undefined") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "ushort **ppuVar13;" (type_identifier "ushort") (pointer_declarator "**ppuVar13" (* "*") (pointer_declarator "*ppuVar13" (* "*") (identifier "ppuVar13"))) (; ";")) (declaration "size_t sVar14;" (primitive_type "size_t") (identifier "sVar14") (; ";")) (declaration "size_t sVar15;" (primitive_type "size_t") (identifier "sVar15") (; ";")) (declaration "undefined **ppuVar16;" (type_identifier "undefined") (pointer_declarator "**ppuVar16" (* "*") (pointer_declarator "*ppuVar16" (* "*") (identifier "ppuVar16"))) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "undefined *puVar19;" (type_identifier "undefined") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "undefined4 *puVar20;" (type_identifier "undefined4") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar21;" (type_identifier "byte") (identifier "bVar21") (; ";")) (declaration "undefined4 uVar22;" (type_identifier "undefined4") (identifier "uVar22") (; ";")) (declaration "void **ppvVar23;" (primitive_type "void") (pointer_declarator "**ppvVar23" (* "*") (pointer_declarator "*ppvVar23" (* "*") (identifier "ppvVar23"))) (; ";")) (declaration "undefined4 uVar24;" (type_identifier "undefined4") (identifier "uVar24") (; ";")) (declaration "int *piVar25;" (primitive_type "int") (pointer_declarator "*piVar25" (* "*") (identifier "piVar25")) (; ";")) (declaration "int local_29c;" (primitive_type "int") (identifier "local_29c") (; ";")) (declaration "void **local_280;" (primitive_type "void") (pointer_declarator "**local_280" (* "*") (pointer_declarator "*local_280" (* "*") (identifier "local_280"))) (; ";")) (declaration "int local_27c;" (primitive_type "int") (identifier "local_27c") (; ";")) (declaration "int local_278;" (primitive_type "int") (identifier "local_278") (; ";")) (declaration "char *local_274;" (primitive_type "char") (pointer_declarator "*local_274" (* "*") (identifier "local_274")) (; ";")) (declaration "int local_268;" (primitive_type "int") (identifier "local_268") (; ";")) (declaration "void *local_264;" (primitive_type "void") (pointer_declarator "*local_264" (* "*") (identifier "local_264")) (; ";")) (declaration "void *local_260;" (primitive_type "void") (pointer_declarator "*local_260" (* "*") (identifier "local_260")) (; ";")) (declaration "uint local_25c;" (type_identifier "uint") (identifier "local_25c") (; ";")) (declaration "undefined4 local_258;" (type_identifier "undefined4") (identifier "local_258") (; ";")) (declaration "char local_254;" (primitive_type "char") (identifier "local_254") (; ";")) (declaration "char local_253;" (primitive_type "char") (identifier "local_253") (; ";")) (declaration "char local_252;" (primitive_type "char") (identifier "local_252") (; ";")) (declaration "char local_251;" (primitive_type "char") (identifier "local_251") (; ";")) (declaration "char local_250;" (primitive_type "char") (identifier "local_250") (; ";")) (declaration "char local_24f;" (primitive_type "char") (identifier "local_24f") (; ";")) (declaration "int local_24c;" (primitive_type "int") (identifier "local_24c") (; ";")) (declaration "int local_248;" (primitive_type "int") (identifier "local_248") (; ";")) (declaration "int local_244;" (primitive_type "int") (identifier "local_244") (; ";")) (declaration "undefined *local_240;" (type_identifier "undefined") (pointer_declarator "*local_240" (* "*") (identifier "local_240")) (; ";")) (declaration "int local_23c;" (primitive_type "int") (identifier "local_23c") (; ";")) (declaration "undefined *local_238;" (type_identifier "undefined") (pointer_declarator "*local_238" (* "*") (identifier "local_238")) (; ";")) (declaration "void **local_234;" (primitive_type "void") (pointer_declarator "**local_234" (* "*") (pointer_declarator "*local_234" (* "*") (identifier "local_234"))) (; ";")) (declaration "int local_230;" (primitive_type "int") (identifier "local_230") (; ";")) (declaration "char *local_22c;" (primitive_type "char") (pointer_declarator "*local_22c" (* "*") (identifier "local_22c")) (; ";")) (declaration "char local_228;" (primitive_type "char") (identifier "local_228") (; ";")) (declaration "char local_227;" (primitive_type "char") (identifier "local_227") (; ";")) (declaration "char local_226 [514];" (primitive_type "char") (array_declarator "local_226 [514]" (identifier "local_226") ([ "[") (number_literal "514") (] "]")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "undefined4 *local_18;" (type_identifier "undefined4") (pointer_declarator "*local_18" (* "*") (identifier "local_18")) (; ";")) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" (identifier "bVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_18 = &param_1;" (assignment_expression "local_18 = &param_1" (identifier "local_18") (= "=") (pointer_expression "&param_1" (& "&") (identifier "param_1"))) (; ";")) (expression_statement "local_24 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_24") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_264 = (void *)0x0;" (assignment_expression "local_264 = (void *)0x0" (identifier "local_264") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_260 = (void *)0x0;" (assignment_expression "local_260 = (void *)0x0" (identifier "local_260") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar20 = &local_258;" (assignment_expression "puVar20 = &local_258" (identifier "puVar20") (= "=") (pointer_expression "&local_258" (& "&") (identifier "local_258"))) (; ";")) (for_statement "for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }" (for "for") (( "(") (assignment_expression "iVar17 = 0xc" (identifier "iVar17") (= "=") (number_literal "0xc")) (; ";") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar17 = iVar17 + -1" (identifier "iVar17") (= "=") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *puVar20 = 0;\n    puVar20 = puVar20 + 1;\n  }" ({ "{") (expression_statement "*puVar20 = 0;" (assignment_expression "*puVar20 = 0" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "local_244 = 0x1000;" (assignment_expression "local_244 = 0x1000" (identifier "local_244") (= "=") (number_literal "0x1000")) (; ";")) (expression_statement "local_240 = (undefined *)0xffffffff;" (assignment_expression "local_240 = (undefined *)0xffffffff" (identifier "local_240") (= "=") (cast_expression "(undefined *)0xffffffff" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "pcVar5 = getenv("SG3_UTILS_OLD_OPTS");" (assignment_expression "pcVar5 = getenv("SG3_UTILS_OLD_OPTS")" (identifier "pcVar5") (= "=") (call_expression "getenv("SG3_UTILS_OLD_OPTS")" (identifier "getenv") (argument_list "("SG3_UTILS_OLD_OPTS")" (( "(") (string_literal ""SG3_UTILS_OLD_OPTS"" (" """) (string_content "SG3_UTILS_OLD_OPTS") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }\n  else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_251 = '\x01';\n    iVar17 = FUN_00012510();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }\n  }" ({ "{") (expression_statement "local_251 = '\x01';" (assignment_expression "local_251 = '\x01'" (identifier "local_251") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "iVar17 = FUN_00012510();" (assignment_expression "iVar17 = FUN_00012510()" (identifier "iVar17") (= "=") (call_expression "FUN_00012510()" (identifier "FUN_00012510") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }\n      if (local_24c == 0) goto LAB_0001131a;\nLAB_0001141a:\n      iVar17 = 0;\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n      goto LAB_000112e2;\n    }" ({ "{") (if_statement "if (local_251 == '\0') {\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar17 = FUN_00012820();\n        goto LAB_000115cc;\n      }" ({ "{") (expression_statement "iVar17 = FUN_00012820();" (assignment_expression "iVar17 = FUN_00012820()" (identifier "iVar17") (= "=") (call_expression "FUN_00012820()" (identifier "FUN_00012820") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_000115cc;" (goto "goto") (statement_identifier "LAB_000115cc") (; ";")) (} "}"))) (if_statement "if (local_24c == 0) goto LAB_0001131a;" (if "if") (parenthesized_expression "(local_24c == 0)" (( "(") (binary_expression "local_24c == 0" (identifier "local_24c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001131a;" (goto "goto") (statement_identifier "LAB_0001131a") (; ";"))) (labeled_statement "LAB_0001141a:\n      iVar17 = 0;" (statement_identifier "LAB_0001141a") (: ":") (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";"))) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (identifier "puts") (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (( "(") (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]") (escape_sequence "\n") (string_content "                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]") (escape_sequence "\n") (string_content "                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]") (escape_sequence "\n") (string_content "                   [--verbose] [--version] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    --doff|-d       device online (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --extdur|-e     duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    --help|-h       print usage message then exit") (escape_sequence "\n") (string_content "    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable") (escape_sequence "\n") (string_content "                    for ") (escape_sequence "\'") (string_content "--raw=-") (escape_sequence "\'") (string_content " with later invocation") (escape_sequence "\n") (string_content "    --list|-l       list supported page codes (with or without DEVICE)") (escape_sequence "\n") (string_content "    --maxlen=LEN|-m LEN    parameter list length or maximum allocation") (escape_sequence "\n") (string_content "                           length (default: 4096 bytes)") (escape_sequence "\n") (string_content "    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV") (escape_sequence "\n") (string_content "    --pf|-p         set PF bit (def: 0)") (escape_sequence "\n") (string_content "    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send") (escape_sequence "\n") (string_content "    --raw=-|-r -    read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    --selftest=ST|-s ST    self-test code, default: 0 (inactive)") (escape_sequence "\n") (string_content "                           1->background short, 2->background extended") (escape_sequence "\n") (string_content "                           4->abort test") (escape_sequence "\n") (string_content "                           5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    --test|-t       default self-test") (escape_sequence "\n") (string_content "    --timeout=SECS|-T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "                            unit: second (def: 7200 seconds)") (escape_sequence "\n") (string_content "    --uoff|-u       unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --verbose|-v    increase verbosity") (escape_sequence "\n") (string_content "    --old|-O        use old interface (use as first option)") (escape_sequence "\n") (string_content "    --version|-V    output version string then exit") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (goto_statement "goto LAB_000112e2;" (goto "goto") (statement_identifier "LAB_000112e2") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" (else "else") (compound_statement "{\n    local_251 = '\0';\n    iVar17 = FUN_00012820();\n    if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n  }" ({ "{") (expression_statement "local_251 = '\0';" (assignment_expression "local_251 = '\0'" (identifier "local_251") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar17 = FUN_00012820();" (assignment_expression "iVar17 = FUN_00012820()" (identifier "iVar17") (= "=") (call_expression "FUN_00012820()" (identifier "FUN_00012820") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar17 == 0) {\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }\nLAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }\n      iVar12 = local_244;\n      cVar3 = local_253;\n      if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }\n      if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }\n      pr2serr();\n      if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" ({ "{") (if_statement "if (local_251 == '\0') {\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }\n      else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }\n      }" ({ "{") (if_statement "if (local_24c != 0) {\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" (if "if") (parenthesized_expression "(local_24c != 0)" (( "(") (binary_expression "local_24c != 0" (identifier "local_24c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000115ee:\n          iVar17 = 0;\n          puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );\n          goto LAB_000112e2;\n        }" ({ "{") (labeled_statement "LAB_000115ee:\n          iVar17 = 0;" (statement_identifier "LAB_000115ee") (: ":") (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";"))) (expression_statement "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              );" (call_expression "puts(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" (identifier "puts") (argument_list "(\n              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n              )" (( "(") (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]") (escape_sequence "\n") (string_content "                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    -doff   device online (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -e      duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    -h      output in hex") (escape_sequence "\n") (string_content "    -H      output in hex (same as ") (escape_sequence "\'") (string_content "-h") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -l      list supported page codes") (escape_sequence "\n") (string_content "    -pf     set PF bit (def: 0)") (escape_sequence "\n") (string_content "    -raw=H,H...    sequence of bytes to form diag page to send") (escape_sequence "\n") (string_content "    -raw=-  read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    -s=SF   self-test code (def: 0)") (escape_sequence "\n") (string_content "            1->background short, 2->background extended, 4->abort test") (escape_sequence "\n") (string_content "            5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    -t      default self-test") (escape_sequence "\n") (string_content "    -T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "    -uoff   unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -v      increase verbosity (print issued SCSI cmds)") (escape_sequence "\n") (string_content "    -V      output version string") (escape_sequence "\n") (string_content "    -N|--new   use new interface") (escape_sequence "\n") (string_content "    -?      output this usage message") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (goto_statement "goto LAB_000112e2;" (goto "goto") (statement_identifier "LAB_000112e2") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" (else "else") (compound_statement "{\n        iVar17 = FUN_00012510();\nLAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;\n        if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }\n      }" ({ "{") (expression_statement "iVar17 = FUN_00012510();" (assignment_expression "iVar17 = FUN_00012510()" (identifier "iVar17") (= "=") (call_expression "FUN_00012510()" (identifier "FUN_00012510") (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_000115cc:\n        if (iVar17 != 0) goto LAB_000112dd;" (statement_identifier "LAB_000115cc") (: ":") (if_statement "if (iVar17 != 0) goto LAB_000112dd;" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000112dd;" (goto "goto") (statement_identifier "LAB_000112dd") (; ";")))) (if_statement "if (local_24c != 0) {\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" (if "if") (parenthesized_expression "(local_24c != 0)" (( "(") (binary_expression "local_24c != 0" (identifier "local_24c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_251 != '\0') goto LAB_0001141a;\n          goto LAB_000115ee;\n        }" ({ "{") (if_statement "if (local_251 != '\0') goto LAB_0001141a;" (if "if") (parenthesized_expression "(local_251 != '\0')" (( "(") (binary_expression "local_251 != '\0'" (identifier "local_251") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0001141a;" (goto "goto") (statement_identifier "LAB_0001141a") (; ";"))) (goto_statement "goto LAB_000115ee;" (goto "goto") (statement_identifier "LAB_000115ee") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0001131a:\n      if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" (statement_identifier "LAB_0001131a") (: ":") (if_statement "if (local_250 == '\0') {\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }\n      else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" (if "if") (parenthesized_expression "(local_250 == '\0')" (( "(") (binary_expression "local_250 == '\0'" (identifier "local_250") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }\n      }" ({ "{") (labeled_statement "LAB_00011445:\n        if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" (statement_identifier "LAB_00011445") (: ":") (if_statement "if (local_24f != '\0') {\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" (if "if") (parenthesized_expression "(local_24f != '\0')" (( "(") (binary_expression "local_24f != '\0'" (identifier "local_24f") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          iVar17 = 0;\n          pr2serr();\n          goto LAB_000112e2;\n        }" ({ "{") (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000112e2;" (goto "goto") (statement_identifier "LAB_000112e2") (; ";")) (} "}")))) (} "}")) (else_clause "else if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" (else "else") (if_statement "if (local_24f != '\0') {\n        pr2serr();\n        goto LAB_00011445;\n      }" (if "if") (parenthesized_expression "(local_24f != '\0')" (( "(") (binary_expression "local_24f != '\0'" (identifier "local_24f") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        pr2serr();\n        goto LAB_00011445;\n      }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00011445;" (goto "goto") (statement_identifier "LAB_00011445") (; ";")) (} "}")))))) (expression_statement "iVar12 = local_244;" (assignment_expression "iVar12 = local_244" (identifier "iVar12") (= "=") (identifier "local_244")) (; ";")) (expression_statement "cVar3 = local_253;" (assignment_expression "cVar3 = local_253" (identifier "cVar3") (= "=") (identifier "local_253")) (; ";")) (if_statement "if (local_230 != 0) {\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" (if "if") (parenthesized_expression "(local_230 != 0)" (( "(") (binary_expression "local_230 != 0" (identifier "local_230") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_280 = local_234;\n        if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }\nLAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }\n        iVar8 = sg_cmds_open_device();\n        if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }\n        ppvVar9 = (void **)(uint)(3 < (int)local_234);\n        ppvVar23 = &local_264;\n        uVar22 = 0;\n        iVar10 = sg_memalign();\n        puVar19 = local_240;\n        if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }\n        if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }\n        iVar17 = sg_convert_errno();\n        goto LAB_000117b2;\n      }" ({ "{") (expression_statement "local_280 = local_234;" (assignment_expression "local_280 = local_234" (identifier "local_280") (= "=") (identifier "local_234")) (; ";")) (if_statement "if (local_253 == '\0') {\n          local_278 = 0;\n          local_27c = 0;\n        }\n        else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(local_253 == '\0')" (( "(") (binary_expression "local_253 == '\0'" (identifier "local_253") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          local_278 = 0;\n          local_27c = 0;\n        }" ({ "{") (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" (identifier "local_278") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_27c = 0;" (assignment_expression "local_27c = 0" (identifier "local_27c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          local_27c = sg_memalign();\n          iVar17 = local_244;\n          puVar19 = PTR_stdin_00015ff0;\n          if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }\n          if (local_22c == (char *)0x0) goto LAB_00011955;\n          if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }\n        }" ({ "{") (expression_statement "local_27c = sg_memalign();" (assignment_expression "local_27c = sg_memalign()" (identifier "local_27c") (= "=") (call_expression "sg_memalign()" (identifier "sg_memalign") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar17 = local_244;" (assignment_expression "iVar17 = local_244" (identifier "iVar17") (= "=") (identifier "local_244")) (; ";")) (expression_statement "puVar19 = PTR_stdin_00015ff0;" (assignment_expression "puVar19 = PTR_stdin_00015ff0" (identifier "puVar19") (= "=") (identifier "PTR_stdin_00015ff0")) (; ";")) (if_statement "if (local_27c == 0) {\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" (if "if") (parenthesized_expression "(local_27c == 0)" (( "(") (binary_expression "local_27c == 0" (identifier "local_27c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar17 = 99;\n            pr2serr();\n            goto LAB_000112e2;\n          }" ({ "{") (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" (identifier "iVar17") (= "=") (number_literal "99")) (; ";")) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000112e2;" (goto "goto") (statement_identifier "LAB_000112e2") (; ";")) (} "}"))) (if_statement "if (local_22c == (char *)0x0) goto LAB_00011955;" (if "if") (parenthesized_expression "(local_22c == (char *)0x0)" (( "(") (binary_expression "local_22c == (char *)0x0" (identifier "local_22c") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00011955;" (goto "goto") (statement_identifier "LAB_00011955") (; ";"))) (if_statement "if (*local_22c == '-') {\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }\n          else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" (if "if") (parenthesized_expression "(*local_22c == '-')" (( "(") (binary_expression "*local_22c == '-'" (pointer_expression "*local_22c" (* "*") (identifier "local_22c")) (== "==") (char_literal "'-'" (' "'") (character "-") (' "'"))) () ")")) (compound_statement "{\n            local_228 = '\0';\n            local_29c = 0;\n            pcVar5 = local_226 + 2;\n            local_278 = 0;\n            do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);\n          }" ({ "{") (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" (identifier "local_228") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_29c = 0;" (assignment_expression "local_29c = 0" (identifier "local_29c") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = local_226 + 2;" (assignment_expression "pcVar5 = local_226 + 2" (identifier "pcVar5") (= "=") (binary_expression "local_226 + 2" (identifier "local_226") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_278 = 0;" (assignment_expression "local_278 = 0" (identifier "local_278") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            } while (local_29c != 0x200);" (do "do") (compound_statement "{\n              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);\n              if (pcVar7 == (char *)0x0) break;\n              uVar18 = 0xffffffff;\n              pcVar7 = pcVar5;\n              do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');\n              uVar18 = ~uVar18;\n              if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }\n              local_29c = local_29c + 1;\n            }" ({ "{") (expression_statement "pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);" (assignment_expression "pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19)" (identifier "pcVar7") (= "=") (call_expression "fgets(pcVar5,0x200,*(FILE **)puVar19)" (identifier "fgets") (argument_list "(pcVar5,0x200,*(FILE **)puVar19)" (( "(") (identifier "pcVar5") (, ",") (number_literal "0x200") (, ",") (pointer_expression "*(FILE **)puVar19" (* "*") (cast_expression "(FILE **)puVar19" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar19"))) () ")")))) (; ";")) (if_statement "if (pcVar7 == (char *)0x0) break;" (if "if") (parenthesized_expression "(pcVar7 == (char *)0x0)" (( "(") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" (identifier "uVar18") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "pcVar7 = pcVar5;" (assignment_expression "pcVar7 = pcVar5" (identifier "pcVar7") (= "=") (identifier "pcVar5")) (; ";")) (do_statement "do {\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              } while (cVar1 != '\0');" (do "do") (compound_statement "{\n                if (uVar18 == 0) break;\n                uVar18 = uVar18 - 1;\n                cVar1 = *pcVar7;\n                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n              }" ({ "{") (if_statement "if (uVar18 == 0) break;" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar7 + (uint)bVar21 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "uVar18 = ~uVar18;" (assignment_expression "uVar18 = ~uVar18" (identifier "uVar18") (= "=") (unary_expression "~uVar18" (~ "~") (identifier "uVar18"))) (; ";")) (if_statement "if (uVar18 - 1 == 0) {\nLAB_00011c3f:\n                local_228 = '\0';\n              }\n              else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(uVar18 - 1 == 0)" (( "(") (binary_expression "uVar18 - 1 == 0" (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00011c3f:\n                local_228 = '\0';\n              }" ({ "{") (labeled_statement "LAB_00011c3f:\n                local_228 = '\0';" (statement_identifier "LAB_00011c3f") (: ":") (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" (identifier "local_228") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";"))) (} "}")) (else_clause "else {\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" (else "else") (compound_statement "{\n                sVar6 = uVar18 - 1;\n                cVar1 = cVar3;\n                if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }\n                local_274 = pcVar5;\n                if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }\n                sVar14 = strspn(local_274," \t");\n                if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }\n              }" ({ "{") (expression_statement "sVar6 = uVar18 - 1;" (assignment_expression "sVar6 = uVar18 - 1" (identifier "sVar6") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = cVar3;" (assignment_expression "cVar1 = cVar3" (identifier "cVar1") (= "=") (identifier "cVar3")) (; ";")) (if_statement "if (local_226[uVar18] == '\n') {\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }" (if "if") (parenthesized_expression "(local_226[uVar18] == '\n')" (( "(") (binary_expression "local_226[uVar18] == '\n'" (subscript_expression "local_226[uVar18]" (identifier "local_226") ([ "[") (identifier "uVar18") (] "]")) (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")")) (compound_statement "{\n                  local_226[uVar18] = '\0';\n                  if (uVar18 - 2 == 0) goto LAB_00011c3f;\n                  cVar1 = '\0';\n                  sVar6 = uVar18 - 2;\n                }" ({ "{") (expression_statement "local_226[uVar18] = '\0';" (assignment_expression "local_226[uVar18] = '\0'" (subscript_expression "local_226[uVar18]" (identifier "local_226") ([ "[") (identifier "uVar18") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (uVar18 - 2 == 0) goto LAB_00011c3f;" (if "if") (parenthesized_expression "(uVar18 - 2 == 0)" (( "(") (binary_expression "uVar18 - 2 == 0" (binary_expression "uVar18 - 2" (identifier "uVar18") (- "-") (number_literal "2")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00011c3f;" (goto "goto") (statement_identifier "LAB_00011c3f") (; ";"))) (expression_statement "cVar1 = '\0';" (assignment_expression "cVar1 = '\0'" (identifier "cVar1") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "sVar6 = uVar18 - 2;" (assignment_expression "sVar6 = uVar18 - 2" (identifier "sVar6") (= "=") (binary_expression "uVar18 - 2" (identifier "uVar18") (- "-") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "local_274 = pcVar5;" (assignment_expression "local_274 = pcVar5" (identifier "local_274") (= "=") (identifier "pcVar5")) (; ";")) (if_statement "if (local_228 != '\0') {\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" (if "if") (parenthesized_expression "(local_228 != '\0')" (( "(") (binary_expression "local_228 != '\0'" (identifier "local_228") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  ppuVar13 = __ctype_b_loc();\n                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }\n                  local_228 = '\0';\n                }" ({ "{") (expression_statement "ppuVar13 = __ctype_b_loc();" (assignment_expression "ppuVar13 = __ctype_b_loc()" (identifier "ppuVar13") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" (if "if") (parenthesized_expression "((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0" (parenthesized_expression "(*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10)" (( "(") (binary_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10" (pointer_expression "*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" (* "*") (cast_expression "(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)*ppuVar13 + local_226[2] * 2 + 1)" (( "(") (binary_expression "(int)*ppuVar13 + local_226[2] * 2 + 1" (binary_expression "(int)*ppuVar13 + local_226[2] * 2" (cast_expression "(int)*ppuVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*ppuVar13" (* "*") (identifier "ppuVar13"))) (+ "+") (binary_expression "local_226[2] * 2" (subscript_expression "local_226[2]" (identifier "local_226") ([ "[") (number_literal "2") (] "]")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    local_227 = local_226[2];\n                    local_226[0] = '\0';\n                    iVar8 = __isoc99_sscanf();\n                    if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }\n                    sVar6 = sVar6 - 1;\n                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;\n                    local_274 = local_226 + 3;\n                  }" ({ "{") (expression_statement "local_227 = local_226[2];" (assignment_expression "local_227 = local_226[2]" (identifier "local_227") (= "=") (subscript_expression "local_226[2]" (identifier "local_226") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_226[0] = '\0';" (assignment_expression "local_226[0] = '\0'" (subscript_expression "local_226[0]" (identifier "local_226") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar8 = __isoc99_sscanf();" (assignment_expression "iVar8 = __isoc99_sscanf()" (identifier "iVar8") (= "=") (call_expression "__isoc99_sscanf()" (identifier "__isoc99_sscanf") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 != 1) {\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" (if "if") (parenthesized_expression "(iVar8 != 1)" (( "(") (binary_expression "iVar8 != 1" (identifier "iVar8") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n                      pr2serr();\n                      goto LAB_00011955;\n                    }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00011955;" (goto "goto") (statement_identifier "LAB_00011955") (; ";")) (} "}"))) (expression_statement "sVar6 = sVar6 - 1;" (assignment_expression "sVar6 = sVar6 - 1" (identifier "sVar6") (= "=") (binary_expression "sVar6 - 1" (identifier "sVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*(char *)(local_27c + -1 + local_278) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + -1 + local_278) = (char)local_25c" (pointer_expression "*(char *)(local_27c + -1 + local_278)" (* "*") (cast_expression "(char *)(local_27c + -1 + local_278)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_27c + -1 + local_278)" (( "(") (binary_expression "local_27c + -1 + local_278" (binary_expression "local_27c + -1" (identifier "local_27c") (+ "+") (number_literal "-1")) (+ "+") (identifier "local_278")) () ")")))) (= "=") (cast_expression "(char)local_25c" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_25c"))) (; ";")) (expression_statement "local_274 = local_226 + 3;" (assignment_expression "local_274 = local_226 + 3" (identifier "local_274") (= "=") (binary_expression "local_226 + 3" (identifier "local_226") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "local_228 = '\0';" (assignment_expression "local_228 = '\0'" (identifier "local_228") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}"))) (expression_statement "sVar14 = strspn(local_274," \t");" (assignment_expression "sVar14 = strspn(local_274," \t")" (identifier "sVar14") (= "=") (call_expression "strspn(local_274," \t")" (identifier "strspn") (argument_list "(local_274," \t")" (( "(") (identifier "local_274") (, ",") (string_literal "" \t"" (" """) (string_content " ") (escape_sequence "\t") (" """)) () ")")))) (; ";")) (if_statement "if (sVar14 != sVar6) {\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }" (if "if") (parenthesized_expression "(sVar14 != sVar6)" (( "(") (binary_expression "sVar14 != sVar6" (identifier "sVar14") (!= "!=") (identifier "sVar6")) () ")")) (compound_statement "{\n                  local_274 = local_274 + sVar14;\n                  if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }\n                }" ({ "{") (expression_statement "local_274 = local_274 + sVar14;" (assignment_expression "local_274 = local_274 + sVar14" (identifier "local_274") (= "=") (binary_expression "local_274 + sVar14" (identifier "local_274") (+ "+") (identifier "sVar14"))) (; ";")) (if_statement "if (*local_274 != '#') {\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }" (if "if") (parenthesized_expression "(*local_274 != '#')" (( "(") (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" (* "*") (identifier "local_274")) (!= "!=") (char_literal "'#'" (' "'") (character "#") (' "'"))) () ")")) (compound_statement "{\n                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");\n                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;\n                    iVar8 = 0;\n                    do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);\n                    iVar8 = 0x401;\nLAB_00011c1c:\n                    local_278 = local_278 + iVar8;\n                  }" ({ "{") (expression_statement "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");" (assignment_expression "sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" (identifier "sVar15") (= "=") (call_expression "strspn(local_274,"0123456789aAbBcCdDeEfF ,\t")" (identifier "strspn") (argument_list "(local_274,"0123456789aAbBcCdDeEfF ,\t")" (( "(") (identifier "local_274") (, ",") (string_literal ""0123456789aAbBcCdDeEfF ,\t"" (" """) (string_content "0123456789aAbBcCdDeEfF ,") (escape_sequence "\t") (" """)) () ")")))) (; ";")) (if_statement "if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))\n                    goto LAB_000122f0;" (if "if") (parenthesized_expression "(((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))" (( "(") (binary_expression "((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#')" (parenthesized_expression "((int)sVar15 < (int)(sVar6 - sVar14))" (( "(") (binary_expression "(int)sVar15 < (int)(sVar6 - sVar14)" (cast_expression "(int)sVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar15")) (< "<") (cast_expression "(int)(sVar6 - sVar14)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(sVar6 - sVar14)" (( "(") (binary_expression "sVar6 - sVar14" (identifier "sVar6") (- "-") (identifier "sVar14")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(local_274[sVar15] != '#')" (( "(") (binary_expression "local_274[sVar15] != '#'" (subscript_expression "local_274[sVar15]" (identifier "local_274") ([ "[") (identifier "sVar15") (] "]")) (!= "!=") (char_literal "'#'" (' "'") (character "#") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_000122f0;" (goto "goto") (statement_identifier "LAB_000122f0") (; ";"))) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    } while (iVar8 != 0x400);" (do "do") (compound_statement "{\n                      iVar10 = __isoc99_sscanf();\n                      if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }\n                      if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }\n                      if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }\n                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;\n                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;\n                      iVar8 = iVar8 + 1;\n                      local_274 = strpbrk(local_274," ,\t");\n                      if (local_274 == (char *)0x0) goto LAB_00011c1c;\n                      sVar6 = strspn(local_274," ,\t");\n                      local_274 = local_274 + sVar6;\n                      if (*local_274 == '\0') goto LAB_00011c1c;\n                    }" ({ "{") (expression_statement "iVar10 = __isoc99_sscanf();" (assignment_expression "iVar10 = __isoc99_sscanf()" (identifier "iVar10") (= "=") (call_expression "__isoc99_sscanf()" (identifier "__isoc99_sscanf") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 != 1) {\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" (if "if") (parenthesized_expression "(iVar10 != 1)" (( "(") (binary_expression "iVar10 != 1" (identifier "iVar10") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n                        if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }\n                        goto LAB_00011c1c;\n                      }" ({ "{") (if_statement "if (*local_274 != '#') {\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" (if "if") (parenthesized_expression "(*local_274 != '#')" (( "(") (binary_expression "*local_274 != '#'" (pointer_expression "*local_274" (* "*") (identifier "local_274")) (!= "!=") (char_literal "'#'" (' "'") (character "#") (' "'"))) () ")")) (compound_statement "{\n                          pr2serr();\n                          goto LAB_00011955;\n                        }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00011955;" (goto "goto") (statement_identifier "LAB_00011955") (; ";")) (} "}"))) (goto_statement "goto LAB_00011c1c;" (goto "goto") (statement_identifier "LAB_00011c1c") (; ";")) (} "}"))) (if_statement "if (0xff < local_25c) {\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" (if "if") (parenthesized_expression "(0xff < local_25c)" (( "(") (binary_expression "0xff < local_25c" (number_literal "0xff") (< "<") (identifier "local_25c")) () ")")) (compound_statement "{\n                        pr2serr();\n                        goto LAB_00011955;\n                      }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00011955;" (goto "goto") (statement_identifier "LAB_00011955") (; ";")) (} "}"))) (if_statement "if (cVar1 != '\0') {\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        iVar10 = -1;\n                        pcVar7 = local_274;\n                        do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');\n                        if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }\n                      }" ({ "{") (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" (identifier "iVar10") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pcVar7 = local_274;" (assignment_expression "pcVar7 = local_274" (identifier "pcVar7") (= "=") (identifier "local_274")) (; ";")) (do_statement "do {\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        } while (cVar2 != '\0');" (do "do") (compound_statement "{\n                          if (iVar10 == 0) break;\n                          iVar10 = iVar10 + -1;\n                          cVar2 = *pcVar7;\n                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;\n                        }" ({ "{") (if_statement "if (iVar10 == 0) break;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar2 = *pcVar7;" (assignment_expression "cVar2 = *pcVar7" (identifier "cVar2") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar7 + (uint)bVar21 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (if_statement "if (iVar10 == -3) {\n                          local_228 = *local_274;\n                        }" (if "if") (parenthesized_expression "(iVar10 == -3)" (( "(") (binary_expression "iVar10 == -3" (identifier "iVar10") (== "==") (number_literal "-3")) () ")")) (compound_statement "{\n                          local_228 = *local_274;\n                        }" ({ "{") (expression_statement "local_228 = *local_274;" (assignment_expression "local_228 = *local_274" (identifier "local_228") (= "=") (pointer_expression "*local_274" (* "*") (identifier "local_274"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;" (if "if") (parenthesized_expression "(iVar17 <= local_278 + iVar8)" (( "(") (binary_expression "iVar17 <= local_278 + iVar8" (identifier "iVar17") (<= "<=") (binary_expression "local_278 + iVar8" (identifier "local_278") (+ "+") (identifier "iVar8"))) () ")")) (goto_statement "goto LAB_00011f16;" (goto "goto") (statement_identifier "LAB_00011f16") (; ";"))) (expression_statement "*(char *)(local_27c + local_278 + iVar8) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + local_278 + iVar8) = (char)local_25c" (pointer_expression "*(char *)(local_27c + local_278 + iVar8)" (* "*") (cast_expression "(char *)(local_27c + local_278 + iVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_27c + local_278 + iVar8)" (( "(") (binary_expression "local_27c + local_278 + iVar8" (binary_expression "local_27c + local_278" (identifier "local_27c") (+ "+") (identifier "local_278")) (+ "+") (identifier "iVar8")) () ")")))) (= "=") (cast_expression "(char)local_25c" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_25c"))) (; ";")) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_274 = strpbrk(local_274," ,\t");" (assignment_expression "local_274 = strpbrk(local_274," ,\t")" (identifier "local_274") (= "=") (call_expression "strpbrk(local_274," ,\t")" (identifier "strpbrk") (argument_list "(local_274," ,\t")" (( "(") (identifier "local_274") (, ",") (string_literal "" ,\t"" (" """) (string_content " ,") (escape_sequence "\t") (" """)) () ")")))) (; ";")) (if_statement "if (local_274 == (char *)0x0) goto LAB_00011c1c;" (if "if") (parenthesized_expression "(local_274 == (char *)0x0)" (( "(") (binary_expression "local_274 == (char *)0x0" (identifier "local_274") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00011c1c;" (goto "goto") (statement_identifier "LAB_00011c1c") (; ";"))) (expression_statement "sVar6 = strspn(local_274," ,\t");" (assignment_expression "sVar6 = strspn(local_274," ,\t")" (identifier "sVar6") (= "=") (call_expression "strspn(local_274," ,\t")" (identifier "strspn") (argument_list "(local_274," ,\t")" (( "(") (identifier "local_274") (, ",") (string_literal "" ,\t"" (" """) (string_content " ,") (escape_sequence "\t") (" """)) () ")")))) (; ";")) (expression_statement "local_274 = local_274 + sVar6;" (assignment_expression "local_274 = local_274 + sVar6" (identifier "local_274") (= "=") (binary_expression "local_274 + sVar6" (identifier "local_274") (+ "+") (identifier "sVar6"))) (; ";")) (if_statement "if (*local_274 == '\0') goto LAB_00011c1c;" (if "if") (parenthesized_expression "(*local_274 == '\0')" (( "(") (binary_expression "*local_274 == '\0'" (pointer_expression "*local_274" (* "*") (identifier "local_274")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00011c1c;" (goto "goto") (statement_identifier "LAB_00011c1c") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar8 != 0x400)" (( "(") (binary_expression "iVar8 != 0x400" (identifier "iVar8") (!= "!=") (number_literal "0x400")) () ")")) (; ";")) (expression_statement "iVar8 = 0x401;" (assignment_expression "iVar8 = 0x401" (identifier "iVar8") (= "=") (number_literal "0x401")) (; ";")) (labeled_statement "LAB_00011c1c:\n                    local_278 = local_278 + iVar8;" (statement_identifier "LAB_00011c1c") (: ":") (expression_statement "local_278 = local_278 + iVar8;" (assignment_expression "local_278 = local_278 + iVar8" (identifier "local_278") (= "=") (binary_expression "local_278 + iVar8" (identifier "local_278") (+ "+") (identifier "iVar8"))) (; ";"))) (} "}"))) (} "}"))) (} "}")))) (expression_statement "local_29c = local_29c + 1;" (assignment_expression "local_29c = local_29c + 1" (identifier "local_29c") (= "=") (binary_expression "local_29c + 1" (identifier "local_29c") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_29c != 0x200)" (( "(") (binary_expression "local_29c != 0x200" (identifier "local_29c") (!= "!=") (number_literal "0x200")) () ")")) (; ";")) (} "}")) (else_clause "else {\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" (else "else") (compound_statement "{\n            uVar18 = 0xffffffff;\n            pcVar5 = local_22c;\n            do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');\n            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");\n            if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }\n            pcVar5 = local_22c;\n            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }\n            local_278 = iVar8 + 1;\n            if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }\n          }" ({ "{") (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" (identifier "uVar18") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "pcVar5 = local_22c;" (assignment_expression "pcVar5 = local_22c" (identifier "pcVar5") (= "=") (identifier "local_22c")) (; ";")) (do_statement "do {\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            } while (cVar3 != '\0');" (do "do") (compound_statement "{\n              if (uVar18 == 0) break;\n              uVar18 = uVar18 - 1;\n              cVar3 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;\n            }" ({ "{") (if_statement "if (uVar18 == 0) break;" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar18 = uVar18 - 1;" (assignment_expression "uVar18 = uVar18 - 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = *pcVar5;" (assignment_expression "cVar3 = *pcVar5" (identifier "cVar3") (= "=") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar21 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar21 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");" (assignment_expression "sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ")" (identifier "sVar6") (= "=") (call_expression "strspn(local_22c,"0123456789aAbBcCdDeEfF, ")" (identifier "strspn") (argument_list "(local_22c,"0123456789aAbBcCdDeEfF, ")" (( "(") (identifier "local_22c") (, ",") (string_literal ""0123456789aAbBcCdDeEfF, "" (" """) (string_content "0123456789aAbBcCdDeEfF, ") (" """)) () ")")))) (; ";")) (if_statement "if (~uVar18 - 1 != sVar6) {\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" (if "if") (parenthesized_expression "(~uVar18 - 1 != sVar6)" (( "(") (binary_expression "~uVar18 - 1 != sVar6" (binary_expression "~uVar18 - 1" (unary_expression "~uVar18" (~ "~") (identifier "uVar18")) (- "-") (number_literal "1")) (!= "!=") (identifier "sVar6")) () ")")) (compound_statement "{\nLAB_00011945:\n              pr2serr();\n              goto LAB_00011955;\n            }" ({ "{") (labeled_statement "LAB_00011945:\n              pr2serr();" (statement_identifier "LAB_00011945") (: ":") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";"))) (goto_statement "goto LAB_00011955;" (goto "goto") (statement_identifier "LAB_00011955") (; ";")) (} "}"))) (expression_statement "pcVar5 = local_22c;" (assignment_expression "pcVar5 = local_22c" (identifier "pcVar5") (= "=") (identifier "local_22c")) (; ";")) (for_statement "for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" (for "for") (( "(") (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar8 < iVar17" (identifier "iVar8") (< "<") (identifier "iVar17")) (; ";") (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n              iVar10 = __isoc99_sscanf();\n              if (iVar10 != 1) goto LAB_00011945;\n              if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }\n              *(char *)(local_27c + iVar8) = (char)local_25c;\n              pcVar7 = strchr(pcVar5,0x2c);\n              pcVar5 = strchr(pcVar5,0x20);\n              if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }\n              pcVar5 = pcVar5 + 1;\n            }" ({ "{") (expression_statement "iVar10 = __isoc99_sscanf();" (assignment_expression "iVar10 = __isoc99_sscanf()" (identifier "iVar10") (= "=") (call_expression "__isoc99_sscanf()" (identifier "__isoc99_sscanf") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 != 1) goto LAB_00011945;" (if "if") (parenthesized_expression "(iVar10 != 1)" (( "(") (binary_expression "iVar10 != 1" (identifier "iVar10") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00011945;" (goto "goto") (statement_identifier "LAB_00011945") (; ";"))) (if_statement "if (0xff < local_25c) {\n                pr2serr();\n                goto LAB_00011955;\n              }" (if "if") (parenthesized_expression "(0xff < local_25c)" (( "(") (binary_expression "0xff < local_25c" (number_literal "0xff") (< "<") (identifier "local_25c")) () ")")) (compound_statement "{\n                pr2serr();\n                goto LAB_00011955;\n              }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00011955;" (goto "goto") (statement_identifier "LAB_00011955") (; ";")) (} "}"))) (expression_statement "*(char *)(local_27c + iVar8) = (char)local_25c;" (assignment_expression "*(char *)(local_27c + iVar8) = (char)local_25c" (pointer_expression "*(char *)(local_27c + iVar8)" (* "*") (cast_expression "(char *)(local_27c + iVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_27c + iVar8)" (( "(") (binary_expression "local_27c + iVar8" (identifier "local_27c") (+ "+") (identifier "iVar8")) () ")")))) (= "=") (cast_expression "(char)local_25c" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_25c"))) (; ";")) (expression_statement "pcVar7 = strchr(pcVar5,0x2c);" (assignment_expression "pcVar7 = strchr(pcVar5,0x2c)" (identifier "pcVar7") (= "=") (call_expression "strchr(pcVar5,0x2c)" (identifier "strchr") (argument_list "(pcVar5,0x2c)" (( "(") (identifier "pcVar5") (, ",") (number_literal "0x2c") () ")")))) (; ";")) (expression_statement "pcVar5 = strchr(pcVar5,0x20);" (assignment_expression "pcVar5 = strchr(pcVar5,0x20)" (identifier "pcVar5") (= "=") (call_expression "strchr(pcVar5,0x20)" (identifier "strchr") (argument_list "(pcVar5,0x20)" (( "(") (identifier "pcVar5") (, ",") (number_literal "0x20") () ")")))) (; ";")) (if_statement "if (pcVar7 == (char *)0x0) {\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }\n              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" (if "if") (parenthesized_expression "(pcVar7 == (char *)0x0)" (( "(") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }\n              }" ({ "{") (if_statement "if (pcVar5 == (char *)0x0) {\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  local_278 = iVar8 + 1;\n                  goto LAB_00011382;\n                }" ({ "{") (expression_statement "local_278 = iVar8 + 1;" (assignment_expression "local_278 = iVar8 + 1" (identifier "local_278") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00011382;" (goto "goto") (statement_identifier "LAB_00011382") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" (else "else") (if_statement "if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {\n                pcVar5 = pcVar7;\n              }" (if "if") (parenthesized_expression "((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5))" (( "(") (binary_expression "(pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)" (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(pcVar7 <= pcVar5)" (( "(") (binary_expression "pcVar7 <= pcVar5" (identifier "pcVar7") (<= "<=") (identifier "pcVar5")) () ")"))) () ")")) (compound_statement "{\n                pcVar5 = pcVar7;\n              }" ({ "{") (expression_statement "pcVar5 = pcVar7;" (assignment_expression "pcVar5 = pcVar7" (identifier "pcVar5") (= "=") (identifier "pcVar7")) (; ";")) (} "}"))))) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "local_278 = iVar8 + 1;" (assignment_expression "local_278 = iVar8 + 1" (identifier "local_278") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar17 == iVar8) {\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" (if "if") (parenthesized_expression "(iVar17 == iVar8)" (( "(") (binary_expression "iVar17 == iVar8" (identifier "iVar17") (== "==") (identifier "iVar8")) () ")")) (compound_statement "{\nLAB_00011f16:\n              pr2serr();\n              goto LAB_00011955;\n            }" ({ "{") (labeled_statement "LAB_00011f16:\n              pr2serr();" (statement_identifier "LAB_00011f16") (: ":") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";"))) (goto_statement "goto LAB_00011955;" (goto "goto") (statement_identifier "LAB_00011955") (; ";")) (} "}"))) (} "}")))) (} "}")))) (labeled_statement "LAB_00011382:\n        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" (statement_identifier "LAB_00011382") (: ":") (if_statement "if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }\n        else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "((local_258._1_1_ == '\0') && (local_252 == '\0'))" (( "(") (binary_expression "(local_258._1_1_ == '\0') && (local_252 == '\0')" (parenthesized_expression "(local_258._1_1_ == '\0')" (( "(") (binary_expression "local_258._1_1_ == '\0'" (field_expression "local_258._1_1_" (identifier "local_258") (. ".") (field_identifier "_1_1_")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_252 == '\0')" (( "(") (binary_expression "local_252 == '\0'" (identifier "local_252") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n          if (local_23c < 1) goto LAB_00011621;\n          if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }\n          if (local_253 != '\0') goto LAB_000113c3;\n        }" ({ "{") (if_statement "if (local_23c < 1) goto LAB_00011621;" (if "if") (parenthesized_expression "(local_23c < 1)" (( "(") (binary_expression "local_23c < 1" (identifier "local_23c") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00011621;" (goto "goto") (statement_identifier "LAB_00011621") (; ";"))) (if_statement "if ((char)local_258 != '\0') {\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" (if "if") (parenthesized_expression "((char)local_258 != '\0')" (( "(") (binary_expression "(char)local_258 != '\0'" (cast_expression "(char)local_258" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_258")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "either set --selftest=SF or --test (not both)";\n            goto LAB_0001187f;\n          }" ({ "{") (labeled_statement "LAB_000119dc:\n            if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" (statement_identifier "LAB_000119dc") (: ":") (if_statement "if (local_251 == '\0') {\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              pcVar5 = "either set -s=SF or -t (not both)";\n              goto LAB_000118f8;\n            }" ({ "{") (expression_statement "pcVar5 = "either set -s=SF or -t (not both)";" (assignment_expression "pcVar5 = "either set -s=SF or -t (not both)"" (identifier "pcVar5") (= "=") (string_literal ""either set -s=SF or -t (not both)"" (" """) (string_content "either set -s=SF or -t (not both)") (" """))) (; ";")) (goto_statement "goto LAB_000118f8;" (goto "goto") (statement_identifier "LAB_000118f8") (; ";")) (} "}")))) (expression_statement "pcVar5 = "either set --selftest=SF or --test (not both)";" (assignment_expression "pcVar5 = "either set --selftest=SF or --test (not both)"" (identifier "pcVar5") (= "=") (string_literal ""either set --selftest=SF or --test (not both)"" (" """) (string_content "either set --selftest=SF or --test (not both)") (" """))) (; ";")) (goto_statement "goto LAB_0001187f;" (goto "goto") (statement_identifier "LAB_0001187f") (; ";")) (} "}"))) (if_statement "if (local_253 != '\0') goto LAB_000113c3;" (if "if") (parenthesized_expression "(local_253 != '\0')" (( "(") (binary_expression "local_253 != '\0'" (identifier "local_253") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000113c3;" (goto "goto") (statement_identifier "LAB_000113c3") (; ";"))) (} "}")) (else_clause "else {\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" (else "else") (compound_statement "{\n          if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }\n          if (0 < local_23c) goto LAB_000119dc;\nLAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }\n        }" ({ "{") (if_statement "if ((char)local_258 == '\0') {\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" (if "if") (parenthesized_expression "((char)local_258 == '\0')" (( "(") (binary_expression "(char)local_258 == '\0'" (cast_expression "(char)local_258" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_258")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }\n            pcVar5 = "setting --doff or --uoff only useful when -t is set";\n            goto LAB_0001187f;\n          }" ({ "{") (if_statement "if (local_251 == '\0') {\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              pcVar5 = "setting -doff or -uoff only useful when -t is set";\n              goto LAB_000118f8;\n            }" ({ "{") (expression_statement "pcVar5 = "setting -doff or -uoff only useful when -t is set";" (assignment_expression "pcVar5 = "setting -doff or -uoff only useful when -t is set"" (identifier "pcVar5") (= "=") (string_literal ""setting -doff or -uoff only useful when -t is set"" (" """) (string_content "setting -doff or -uoff only useful when -t is set") (" """))) (; ";")) (goto_statement "goto LAB_000118f8;" (goto "goto") (statement_identifier "LAB_000118f8") (; ";")) (} "}"))) (expression_statement "pcVar5 = "setting --doff or --uoff only useful when -t is set";" (assignment_expression "pcVar5 = "setting --doff or --uoff only useful when -t is set"" (identifier "pcVar5") (= "=") (string_literal ""setting --doff or --uoff only useful when -t is set"" (" """) (string_content "setting --doff or --uoff only useful when -t is set") (" """))) (; ";")) (goto_statement "goto LAB_0001187f;" (goto "goto") (statement_identifier "LAB_0001187f") (; ";")) (} "}"))) (if_statement "if (0 < local_23c) goto LAB_000119dc;" (if "if") (parenthesized_expression "(0 < local_23c)" (( "(") (binary_expression "0 < local_23c" (number_literal "0") (< "<") (identifier "local_23c")) () ")")) (goto_statement "goto LAB_000119dc;" (goto "goto") (statement_identifier "LAB_000119dc") (; ";"))) (labeled_statement "LAB_00011621:\n          if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" (statement_identifier "LAB_00011621") (: ":") (if_statement "if (local_253 != '\0') {\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" (if "if") (parenthesized_expression "(local_253 != '\0')" (( "(") (binary_expression "local_253 != '\0'" (identifier "local_253") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }\n            if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }\n          }" ({ "{") (if_statement "if ((local_258 & 0xffff00ff) != 0) {\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" (if "if") (parenthesized_expression "((local_258 & 0xffff00ff) != 0)" (( "(") (binary_expression "(local_258 & 0xffff00ff) != 0" (parenthesized_expression "(local_258 & 0xffff00ff)" (( "(") (binary_expression "local_258 & 0xffff00ff" (identifier "local_258") (& "&") (number_literal "0xffff00ff")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }\n              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_0001187f:\n              iVar17 = 0x1f;\n              puts(pcVar5);\n              puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );\n              goto LAB_000117b2;\n            }" ({ "{") (labeled_statement "LAB_000113c3:\n              if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" (statement_identifier "LAB_000113c3") (: ":") (if_statement "if (local_251 == '\0') {\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";\nLAB_000118f8:\n                iVar17 = 0x1f;\n                puts(pcVar5);\n                puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );\n                goto LAB_000117b2;\n              }" ({ "{") (expression_statement "pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" (identifier "pcVar5") (= "=") (string_literal ""\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" (" """) (escape_sequence "\'") (string_content "-raw=") (escape_sequence "\'") (string_content " cannot be used with self-tests, ") (escape_sequence "\'") (string_content "-e") (escape_sequence "\'") (string_content " or ") (escape_sequence "\'") (string_content "-l") (escape_sequence "\'") (" """))) (; ";")) (labeled_statement "LAB_000118f8:\n                iVar17 = 0x1f;" (statement_identifier "LAB_000118f8") (: ":") (expression_statement "iVar17 = 0x1f;" (assignment_expression "iVar17 = 0x1f" (identifier "iVar17") (= "=") (number_literal "0x1f")) (; ";"))) (expression_statement "puts(pcVar5);" (call_expression "puts(pcVar5)" (identifier "puts") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    );" (call_expression "puts(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" (identifier "puts") (argument_list "(\n                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                    )" (( "(") (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]") (escape_sequence "\n") (string_content "                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    -doff   device online (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -e      duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    -h      output in hex") (escape_sequence "\n") (string_content "    -H      output in hex (same as ") (escape_sequence "\'") (string_content "-h") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -l      list supported page codes") (escape_sequence "\n") (string_content "    -pf     set PF bit (def: 0)") (escape_sequence "\n") (string_content "    -raw=H,H...    sequence of bytes to form diag page to send") (escape_sequence "\n") (string_content "    -raw=-  read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    -s=SF   self-test code (def: 0)") (escape_sequence "\n") (string_content "            1->background short, 2->background extended, 4->abort test") (escape_sequence "\n") (string_content "            5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    -t      default self-test") (escape_sequence "\n") (string_content "    -T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "    -uoff   unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -v      increase verbosity (print issued SCSI cmds)") (escape_sequence "\n") (string_content "    -V      output version string") (escape_sequence "\n") (string_content "    -N|--new   use new interface") (escape_sequence "\n") (string_content "    -?      output this usage message") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (goto_statement "goto LAB_000117b2;" (goto "goto") (statement_identifier "LAB_000117b2") (; ";")) (} "}")))) (expression_statement "pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";" (assignment_expression "pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" (identifier "pcVar5") (= "=") (string_literal ""\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'"" (" """) (escape_sequence "\'") (string_content "--raw=") (escape_sequence "\'") (string_content " cannot be used with self-tests, ") (escape_sequence "\'") (string_content "-e") (escape_sequence "\'") (string_content " or ") (escape_sequence "\'") (string_content "-l") (escape_sequence "\'") (" """))) (; ";")) (labeled_statement "LAB_0001187f:\n              iVar17 = 0x1f;" (statement_identifier "LAB_0001187f") (: ":") (expression_statement "iVar17 = 0x1f;" (assignment_expression "iVar17 = 0x1f" (identifier "iVar17") (= "=") (number_literal "0x1f")) (; ";"))) (expression_statement "puts(pcVar5);" (call_expression "puts(pcVar5)" (identifier "puts") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  );" (call_expression "puts(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" (identifier "puts") (argument_list "(\n                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n                  )" (( "(") (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]") (escape_sequence "\n") (string_content "                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]") (escape_sequence "\n") (string_content "                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]") (escape_sequence "\n") (string_content "                   [--verbose] [--version] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    --doff|-d       device online (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --extdur|-e     duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    --help|-h       print usage message then exit") (escape_sequence "\n") (string_content "    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable") (escape_sequence "\n") (string_content "                    for ") (escape_sequence "\'") (string_content "--raw=-") (escape_sequence "\'") (string_content " with later invocation") (escape_sequence "\n") (string_content "    --list|-l       list supported page codes (with or without DEVICE)") (escape_sequence "\n") (string_content "    --maxlen=LEN|-m LEN    parameter list length or maximum allocation") (escape_sequence "\n") (string_content "                           length (default: 4096 bytes)") (escape_sequence "\n") (string_content "    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV") (escape_sequence "\n") (string_content "    --pf|-p         set PF bit (def: 0)") (escape_sequence "\n") (string_content "    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send") (escape_sequence "\n") (string_content "    --raw=-|-r -    read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    --selftest=ST|-s ST    self-test code, default: 0 (inactive)") (escape_sequence "\n") (string_content "                           1->background short, 2->background extended") (escape_sequence "\n") (string_content "                           4->abort test") (escape_sequence "\n") (string_content "                           5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    --test|-t       default self-test") (escape_sequence "\n") (string_content "    --timeout=SECS|-T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "                            unit: second (def: 7200 seconds)") (escape_sequence "\n") (string_content "    --uoff|-u       unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --verbose|-v    increase verbosity") (escape_sequence "\n") (string_content "    --old|-O        use old interface (use as first option)") (escape_sequence "\n") (string_content "    --version|-V    output version string then exit") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (goto_statement "goto LAB_000117b2;" (goto "goto") (statement_identifier "LAB_000117b2") (; ";")) (} "}"))) (if_statement "if (local_254 == '\0') {\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" (if "if") (parenthesized_expression "(local_254 == '\0')" (( "(") (binary_expression "local_254 == '\0'" (identifier "local_254") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }\n            }" ({ "{") (if_statement "if (local_251 == '\0') {\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }\n              else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");\n              }" ({ "{") (expression_statement "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");" (call_expression "puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" (identifier "puts") (argument_list "(">>> warning, \'-pf\' probably should be used with \'-raw=\'")" (( "(") (string_literal "">>> warning, \'-pf\' probably should be used with \'-raw=\'"" (" """) (string_content ">>> warning, ") (escape_sequence "\'") (string_content "-pf") (escape_sequence "\'") (string_content " probably should be used with ") (escape_sequence "\'") (string_content "-raw=") (escape_sequence "\'") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" (else "else") (compound_statement "{\n                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");\n              }" ({ "{") (expression_statement "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");" (call_expression "puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" (identifier "puts") (argument_list "(">>> warning, \'--pf\' probably should be used with \'--raw=\'")" (( "(") (string_literal "">>> warning, \'--pf\' probably should be used with \'--raw=\'"" (" """) (string_content ">>> warning, ") (escape_sequence "\'") (string_content "--pf") (escape_sequence "\'") (string_content " probably should be used with ") (escape_sequence "\'") (string_content "--raw=") (escape_sequence "\'") (" """)) () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}")))) (} "}"))))) (expression_statement "iVar8 = sg_cmds_open_device();" (assignment_expression "iVar8 = sg_cmds_open_device()" (identifier "iVar8") (= "=") (call_expression "sg_cmds_open_device()" (identifier "sg_cmds_open_device") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 < 0) {\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" (if "if") (parenthesized_expression "(iVar8 < 0)" (( "(") (binary_expression "iVar8 < 0" (identifier "iVar8") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }\n          iVar17 = sg_convert_errno();\n          goto LAB_000117b2;\n        }" ({ "{") (if_statement "if (local_234 != (void **)0x0) {\n            safe_strerror();\n            pr2serr();\n          }" (if "if") (parenthesized_expression "(local_234 != (void **)0x0)" (( "(") (binary_expression "local_234 != (void **)0x0" (identifier "local_234") (!= "!=") (cast_expression "(void **)0x0" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            safe_strerror();\n            pr2serr();\n          }" ({ "{") (expression_statement "safe_strerror();" (call_expression "safe_strerror()" (identifier "safe_strerror") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar17 = sg_convert_errno();" (assignment_expression "iVar17 = sg_convert_errno()" (identifier "iVar17") (= "=") (call_expression "sg_convert_errno()" (identifier "sg_convert_errno") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_000117b2;" (goto "goto") (statement_identifier "LAB_000117b2") (; ";")) (} "}"))) (expression_statement "ppvVar9 = (void **)(uint)(3 < (int)local_234);" (assignment_expression "ppvVar9 = (void **)(uint)(3 < (int)local_234)" (identifier "ppvVar9") (= "=") (cast_expression "(void **)(uint)(3 < (int)local_234)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "(uint)(3 < (int)local_234)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(3 < (int)local_234)" (( "(") (binary_expression "3 < (int)local_234" (number_literal "3") (< "<") (cast_expression "(int)local_234" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_234"))) () ")"))))) (; ";")) (expression_statement "ppvVar23 = &local_264;" (assignment_expression "ppvVar23 = &local_264" (identifier "ppvVar23") (= "=") (pointer_expression "&local_264" (& "&") (identifier "local_264"))) (; ";")) (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" (identifier "uVar22") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar10 = sg_memalign();" (assignment_expression "iVar10 = sg_memalign()" (identifier "iVar10") (= "=") (call_expression "sg_memalign()" (identifier "sg_memalign") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar19 = local_240;" (assignment_expression "puVar19 = local_240" (identifier "puVar19") (= "=") (identifier "local_240")) (; ";")) (if_statement "if (iVar10 == 0) {\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar17 = 99;\n          pr2serr();\n          sg_cmds_close_device();\n          goto LAB_000117b2;\n        }" ({ "{") (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" (identifier "iVar17") (= "=") (number_literal "99")) (; ";")) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" (identifier "sg_cmds_close_device") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000117b2;" (goto "goto") (statement_identifier "LAB_000117b2") (; ";")) (} "}"))) (if_statement "if (local_258._2_1_ == '\0') {\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }\n        else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" (if "if") (parenthesized_expression "(local_258._2_1_ == '\0')" (( "(") (binary_expression "local_258._2_1_ == '\0'" (field_expression "local_258._2_1_" (identifier "local_258") (. ".") (field_identifier "_2_1_")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }\n          if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }\nLAB_000116de:\n          puVar11 = (undefined *)0x0;\n          if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }\n          local_25c = 0;\n          iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);\n          if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }\nLAB_00011796:\n          sg_cmds_close_device();\n        }" ({ "{") (if_statement "if (local_258._3_1_ == '\0') {\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" (if "if") (parenthesized_expression "(local_258._3_1_ == '\0')" (( "(") (binary_expression "local_258._3_1_ == '\0'" (field_expression "local_258._3_1_" (identifier "local_258") (. ".") (field_identifier "_3_1_")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if (-1 < (int)local_240) goto LAB_000116de;\n            if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }\n            goto LAB_00011796;\n          }" ({ "{") (if_statement "if (-1 < (int)local_240) goto LAB_000116de;" (if "if") (parenthesized_expression "(-1 < (int)local_240)" (( "(") (binary_expression "-1 < (int)local_240" (number_literal "-1") (< "<") (cast_expression "(int)local_240" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_240"))) () ")")) (goto_statement "goto LAB_000116de;" (goto "goto") (statement_identifier "LAB_000116de") (; ";"))) (if_statement "if (local_253 == '\0') {\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }\n            else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" (if "if") (parenthesized_expression "(local_253 == '\0')" (( "(") (binary_expression "local_253 == '\0'" (identifier "local_253") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              puVar11 = (undefined *)0x0;\n              if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }\n              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);\n              if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }\n              if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }\n            }" ({ "{") (expression_statement "puVar11 = (undefined *)0x0;" (assignment_expression "puVar11 = (undefined *)0x0" (identifier "puVar11") (= "=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {\n                puVar11 = local_238;\n              }" (if "if") (parenthesized_expression "((((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238))" (( "(") (binary_expression "(((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&\n                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)" (parenthesized_expression "(((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2))" (( "(") (binary_expression "((char)local_258 == '\0') &&\n                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)" (parenthesized_expression "((char)local_258 == '\0')" (( "(") (binary_expression "(char)local_258 == '\0'" (cast_expression "(char)local_258" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_258")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)" (( "(") (comma_expression "puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2" (assignment_expression "puVar19 = (undefined *)(local_23c - 5)" (identifier "puVar19") (= "=") (cast_expression "(undefined *)(local_23c - 5)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_23c - 5)" (( "(") (binary_expression "local_23c - 5" (identifier "local_23c") (- "-") (number_literal "5")) () ")")))) (, ",") (binary_expression "puVar19 < (undefined *)0x2" (identifier "puVar19") (< "<") (cast_expression "(undefined *)0x2" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)" (( "(") (comma_expression "puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238" (assignment_expression "puVar19 = local_238" (identifier "puVar19") (= "=") (identifier "local_238")) (, ",") (comma_expression "puVar11 = (undefined *)0x1, 0 < (int)local_238" (assignment_expression "puVar11 = (undefined *)0x1" (identifier "puVar11") (= "=") (cast_expression "(undefined *)0x1" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (, ",") (binary_expression "0 < (int)local_238" (number_literal "0") (< "<") (cast_expression "(int)local_238" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_238"))))) () ")"))) () ")")) (compound_statement "{\n                puVar11 = local_238;\n              }" ({ "{") (expression_statement "puVar11 = local_238;" (assignment_expression "puVar11 = local_238" (identifier "puVar11") (= "=") (identifier "local_238")) (; ";")) (} "}"))) (expression_statement "iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" (identifier "iVar17") (= "=") (call_expression "sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" (identifier "sg_ll_send_diag") (argument_list "(iVar8,local_23c,local_254,local_258 & 0xff,\n                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,\n                                       puVar19)" (( "(") (identifier "iVar8") (, ",") (identifier "local_23c") (, ",") (identifier "local_254") (, ",") (binary_expression "local_258 & 0xff" (identifier "local_258") (& "&") (number_literal "0xff")) (, ",") (binary_expression "local_258 >> 8 & 0xff" (binary_expression "local_258 >> 8" (identifier "local_258") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) (, ",") (identifier "local_252") (, ",") (identifier "puVar11") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (identifier "local_234") (, ",") (identifier "puVar19") () ")")))) (; ";")) (if_statement "if (iVar17 != 0) {\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }\n                goto LAB_00011ce9;\n              }" ({ "{") (labeled_statement "LAB_00011cc5:\n                if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" (statement_identifier "LAB_00011cc5") (: ":") (if_statement "if (iVar17 == 6) {\n                  pr2serr();\n                }\n                else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" (if "if") (parenthesized_expression "(iVar17 == 6)" (( "(") (binary_expression "iVar17 == 6" (identifier "iVar17") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n                  pr2serr();\n                }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" (else "else") (if_statement "if (iVar17 == 0xb) {\n                  pr2serr();\n                }\n                else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" (if "if") (parenthesized_expression "(iVar17 == 0xb)" (( "(") (binary_expression "iVar17 == 0xb" (identifier "iVar17") (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n                  pr2serr();\n                }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" (else "else") (if_statement "if (iVar17 == 2) {\n                  pr2serr();\n                }\n                else {\n                  pr2serr();\n                }" (if "if") (parenthesized_expression "(iVar17 == 2)" (( "(") (binary_expression "iVar17 == 2" (identifier "iVar17") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                  pr2serr();\n                }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                  pr2serr();\n                }" (else "else") (compound_statement "{\n                  pr2serr();\n                }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))))))))) (goto_statement "goto LAB_00011ce9;" (goto "goto") (statement_identifier "LAB_00011ce9") (; ";")) (} "}"))) (if_statement "if (local_23c - 5U < 2) {\n                puts("Foreground self-test returned GOOD status");\n              }\n              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" (if "if") (parenthesized_expression "(local_23c - 5U < 2)" (( "(") (binary_expression "local_23c - 5U < 2" (binary_expression "local_23c - 5U" (identifier "local_23c") (- "-") (number_literal "5U")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n                puts("Foreground self-test returned GOOD status");\n              }" ({ "{") (expression_statement "puts("Foreground self-test returned GOOD status");" (call_expression "puts("Foreground self-test returned GOOD status")" (identifier "puts") (argument_list "("Foreground self-test returned GOOD status")" (( "(") (string_literal ""Foreground self-test returned GOOD status"" (" """) (string_content "Foreground self-test returned GOOD status") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" (else "else") (if_statement "if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')) {\n                puts("Default self-test returned GOOD status");\n              }" (if "if") (parenthesized_expression "((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0'))" (( "(") (binary_expression "(((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&\n                      (local_252 == '\0')" (parenthesized_expression "(((char)local_258 != '\0') && (local_258._1_1_ == '\0'))" (( "(") (binary_expression "((char)local_258 != '\0') && (local_258._1_1_ == '\0')" (parenthesized_expression "((char)local_258 != '\0')" (( "(") (binary_expression "(char)local_258 != '\0'" (cast_expression "(char)local_258" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_258")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_258._1_1_ == '\0')" (( "(") (binary_expression "local_258._1_1_ == '\0'" (field_expression "local_258._1_1_" (identifier "local_258") (. ".") (field_identifier "_1_1_")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(local_252 == '\0')" (( "(") (binary_expression "local_252 == '\0'" (identifier "local_252") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                puts("Default self-test returned GOOD status");\n              }" ({ "{") (expression_statement "puts("Default self-test returned GOOD status");" (call_expression "puts("Default self-test returned GOOD status")" (identifier "puts") (argument_list "("Default self-test returned GOOD status")" (( "(") (string_literal ""Default self-test returned GOOD status"" (" """) (string_content "Default self-test returned GOOD status") (" """)) () ")"))) (; ";")) (} "}"))))) (} "}")) (else_clause "else {\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" (else "else") (compound_statement "{\n              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);\n              if (iVar17 != 0) goto LAB_00011cc5;\n            }" ({ "{") (expression_statement "iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" (identifier "iVar17") (= "=") (call_expression "sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" (identifier "sg_ll_send_diag") (argument_list "(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,\n                                       local_234)" (( "(") (identifier "iVar8") (, ",") (number_literal "0") (, ",") (identifier "local_254") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "local_27c") (, ",") (identifier "local_278") (, ",") (number_literal "1") (, ",") (identifier "local_234") (, ",") (identifier "local_234") () ")")))) (; ";")) (if_statement "if (iVar17 != 0) goto LAB_00011cc5;" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00011cc5;" (goto "goto") (statement_identifier "LAB_00011cc5") (; ";"))) (} "}")))) (goto_statement "goto LAB_00011796;" (goto "goto") (statement_identifier "LAB_00011796") (; ";")) (} "}"))) (if_statement "if ((int)local_240 < 0) {\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }" (if "if") (parenthesized_expression "((int)local_240 < 0)" (( "(") (binary_expression "(int)local_240 < 0" (cast_expression "(int)local_240" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_240")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            uVar22 = 1;\n            ppvVar23 = local_234;\n            ppvVar9 = local_234;\n            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);\n            if (iVar17 != 0) goto LAB_00011cc5;\n          }" ({ "{") (expression_statement "uVar22 = 1;" (assignment_expression "uVar22 = 1" (identifier "uVar22") (= "=") (number_literal "1")) (; ";")) (expression_statement "ppvVar23 = local_234;" (assignment_expression "ppvVar23 = local_234" (identifier "ppvVar23") (= "=") (identifier "local_234")) (; ";")) (expression_statement "ppvVar9 = local_234;" (assignment_expression "ppvVar9 = local_234" (identifier "ppvVar9") (= "=") (identifier "local_234")) (; ";")) (expression_statement "iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);" (assignment_expression "iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" (identifier "iVar17") (= "=") (call_expression "sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" (identifier "sg_ll_send_diag") (argument_list "(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234)" (( "(") (identifier "iVar8") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "iVar10") (, ",") (number_literal "4") (, ",") (number_literal "1") (, ",") (identifier "local_234") (, ",") (identifier "local_234") () ")")))) (; ";")) (if_statement "if (iVar17 != 0) goto LAB_00011cc5;" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00011cc5;" (goto "goto") (statement_identifier "LAB_00011cc5") (; ";"))) (} "}"))) (labeled_statement "LAB_000116de:\n          puVar11 = (undefined *)0x0;" (statement_identifier "LAB_000116de") (: ":") (expression_statement "puVar11 = (undefined *)0x0;" (assignment_expression "puVar11 = (undefined *)0x0" (identifier "puVar11") (= "=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (if_statement "if (-1 < (int)puVar19) {\n            puVar11 = puVar19;\n          }" (if "if") (parenthesized_expression "(-1 < (int)puVar19)" (( "(") (binary_expression "-1 < (int)puVar19" (number_literal "-1") (< "<") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) () ")")) (compound_statement "{\n            puVar11 = puVar19;\n          }" ({ "{") (expression_statement "puVar11 = puVar19;" (assignment_expression "puVar11 = puVar19" (identifier "puVar11") (= "=") (identifier "puVar19")) (; ";")) (} "}"))) (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" (identifier "local_25c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9);" (assignment_expression "iVar17 = sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" (identifier "iVar17") (= "=") (call_expression "sg_ll_receive_diag_v2\n                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" (identifier "sg_ll_receive_diag_v2") (argument_list "(iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,\n                              local_234,uVar22,ppvVar23,ppvVar9)" (( "(") (identifier "iVar8") (, ",") (binary_expression "~(uint)puVar19 >> 0x1f" (unary_expression "~(uint)puVar19" (~ "~") (cast_expression "(uint)puVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar19"))) (>> ">>") (number_literal "0x1f")) (, ",") (identifier "puVar11") (, ",") (identifier "iVar10") (, ",") (identifier "iVar12") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_25c" (& "&") (identifier "local_25c")) (, ",") (number_literal "1") (, ",") (identifier "local_234") (, ",") (identifier "uVar22") (, ",") (identifier "ppvVar23") (, ",") (identifier "ppvVar9") () ")")))) (; ";")) (if_statement "if (iVar17 == 0) {\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }\n          else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar12 = iVar12 - local_25c;\n            if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }\n            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;\n            if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }\n            if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }\n          }" ({ "{") (expression_statement "iVar12 = iVar12 - local_25c;" (assignment_expression "iVar12 = iVar12 - local_25c" (identifier "iVar12") (= "=") (binary_expression "iVar12 - local_25c" (identifier "iVar12") (- "-") (identifier "local_25c"))) (; ";")) (if_statement "if (iVar12 < 4) {\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" (if "if") (parenthesized_expression "(iVar12 < 4)" (( "(") (binary_expression "iVar12 < 4" (identifier "iVar12") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n              pr2serr();\n              pr2serr();\n              goto joined_r0x0001216b;\n            }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto joined_r0x0001216b;" (goto "goto") (statement_identifier "joined_r0x0001216b") (; ";")) (} "}"))) (expression_statement "iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;" (assignment_expression "iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4" (identifier "iVar17") (= "=") (binary_expression "(ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4" (call_expression "(ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8)" (( "(") (binary_expression "*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8" (binary_expression "*(ushort *)(iVar10 + 2) << 8" (pointer_expression "*(ushort *)(iVar10 + 2)" (* "*") (cast_expression "(ushort *)(iVar10 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 2)" (( "(") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*(ushort *)(iVar10 + 2) >> 8" (pointer_expression "*(ushort *)(iVar10 + 2)" (* "*") (cast_expression "(ushort *)(iVar10 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 2)" (( "(") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2")) () ")")))) (>> ">>") (number_literal "8"))) () ")"))) (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (iVar12 <= iVar17) {\n              iVar17 = iVar12;\n            }" (if "if") (parenthesized_expression "(iVar12 <= iVar17)" (( "(") (binary_expression "iVar12 <= iVar17" (identifier "iVar12") (<= "<=") (identifier "iVar17")) () ")")) (compound_statement "{\n              iVar17 = iVar12;\n            }" ({ "{") (expression_statement "iVar17 = iVar12;" (assignment_expression "iVar17 = iVar12" (identifier "iVar17") (= "=") (identifier "iVar12")) (; ";")) (} "}"))) (if_statement "if (local_248 < 2) {\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }\n            else {\n              hex2stdout();\n            }" (if "if") (parenthesized_expression "(local_248 < 2)" (( "(") (binary_expression "local_248 < 2" (identifier "local_248") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n              ppuVar16 = (undefined **)&DAT_00016020;\n              if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }\nLAB_00012134:\n              hex2stdout();\n            }" ({ "{") (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" (identifier "ppuVar16") (= "=") (cast_expression "(undefined **)&DAT_00016020" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_00016020" (& "&") (identifier "DAT_00016020")))) (; ";")) (if_statement "if ((int)puVar19 < 1) {\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }\n              else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" (if "if") (parenthesized_expression "((int)puVar19 < 1)" (( "(") (binary_expression "(int)puVar19 < 1" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                puts("Supported diagnostic pages response:");\n                if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }\n              }" ({ "{") (expression_statement "puts("Supported diagnostic pages response:");" (call_expression "puts("Supported diagnostic pages response:")" (identifier "puts") (argument_list "("Supported diagnostic pages response:")" (( "(") (string_literal ""Supported diagnostic pages response:"" (" """) (string_content "Supported diagnostic pages response:") (" """)) () ")"))) (; ";")) (if_statement "if (local_248 == 0) {\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" (if "if") (parenthesized_expression "(local_248 == 0)" (( "(") (binary_expression "local_248 == 0" (identifier "local_248") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }\n                  goto LAB_00011796;\n                }" ({ "{") (for_statement "for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }" (for "for") (( "(") (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar12 < iVar17 + -4" (identifier "iVar12") (< "<") (binary_expression "iVar17 + -4" (identifier "iVar17") (+ "+") (number_literal "-4"))) (; ";") (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);\n                    ppuVar16 = (undefined **)&DAT_00016020;\n                    do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);\n                    __printf_chk();\n                  }" ({ "{") (expression_statement "puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);" (assignment_expression "puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12)" (identifier "puVar19") (= "=") (binary_expression "(undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12)" (cast_expression "(undefined *)(uint)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(iVar10 + 4 + iVar12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 4 + iVar12)" (( "(") (binary_expression "iVar10 + 4 + iVar12" (binary_expression "iVar10 + 4" (identifier "iVar10") (+ "+") (number_literal "4")) (+ "+") (identifier "iVar12")) () ")"))))) (; ";")) (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" (identifier "ppuVar16") (= "=") (cast_expression "(undefined **)&DAT_00016020" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_00016020" (& "&") (identifier "DAT_00016020")))) (; ";")) (do_statement "do {\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    } while (ppuVar16 != &PTR_DAT_000160c0);" (do "do") (compound_statement "{\n                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;\n                      ppuVar16 = ppuVar16 + 2;\n                    }" ({ "{") (if_statement "if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;" (if "if") (parenthesized_expression "((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16))" (( "(") (binary_expression "(puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)" (parenthesized_expression "(puVar19 == *ppuVar16)" (( "(") (binary_expression "puVar19 == *ppuVar16" (identifier "puVar19") (== "==") (pointer_expression "*ppuVar16" (* "*") (identifier "ppuVar16"))) () ")")) (|| "||") (parenthesized_expression "((int)puVar19 < (int)*ppuVar16)" (( "(") (binary_expression "(int)puVar19 < (int)*ppuVar16" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (< "<") (cast_expression "(int)*ppuVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*ppuVar16" (* "*") (identifier "ppuVar16")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "ppuVar16 = ppuVar16 + 2;" (assignment_expression "ppuVar16 = ppuVar16 + 2" (identifier "ppuVar16") (= "=") (binary_expression "ppuVar16 + 2" (identifier "ppuVar16") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(ppuVar16 != &PTR_DAT_000160c0)" (( "(") (binary_expression "ppuVar16 != &PTR_DAT_000160c0" (identifier "ppuVar16") (!= "!=") (pointer_expression "&PTR_DAT_000160c0" (& "&") (identifier "PTR_DAT_000160c0"))) () ")")) (; ";")) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" (identifier "__printf_chk") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00011796;" (goto "goto") (statement_identifier "LAB_00011796") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" (else "else") (compound_statement "{\n                while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }\n                if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }\nLAB_00012121:\n                __printf_chk();\n              }" ({ "{") (while_statement "while( true ) {\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                  puVar11 = *ppuVar16;\n                  if (puVar11 == puVar19) break;\n                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;\n                }" ({ "{") (expression_statement "puVar11 = *ppuVar16;" (assignment_expression "puVar11 = *ppuVar16" (identifier "puVar11") (= "=") (pointer_expression "*ppuVar16" (* "*") (identifier "ppuVar16"))) (; ";")) (if_statement "if (puVar11 == puVar19) break;" (if "if") (parenthesized_expression "(puVar11 == puVar19)" (( "(") (binary_expression "puVar11 == puVar19" (identifier "puVar11") (== "==") (identifier "puVar19")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;" (if "if") (parenthesized_expression "((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0))" (( "(") (binary_expression "(puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||\n                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)" (parenthesized_expression "(puVar11 != puVar19 && (int)puVar19 <= (int)puVar11)" (( "(") (binary_expression "puVar11 != puVar19 && (int)puVar19 <= (int)puVar11" (binary_expression "puVar11 != puVar19" (identifier "puVar11") (!= "!=") (identifier "puVar19")) (&& "&&") (binary_expression "(int)puVar19 <= (int)puVar11" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (<= "<=") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")))) () ")")) (|| "||") (parenthesized_expression "(ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)" (( "(") (comma_expression "ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0" (assignment_expression "ppuVar16 = ppuVar16 + 2" (identifier "ppuVar16") (= "=") (binary_expression "ppuVar16 + 2" (identifier "ppuVar16") (+ "+") (number_literal "2"))) (, ",") (binary_expression "ppuVar16 == &PTR_DAT_000160c0" (identifier "ppuVar16") (== "==") (pointer_expression "&PTR_DAT_000160c0" (& "&") (identifier "PTR_DAT_000160c0")))) () ")"))) () ")")) (goto_statement "goto LAB_00012121;" (goto "goto") (statement_identifier "LAB_00012121") (; ";"))) (} "}"))) (if_statement "if (ppuVar16[1] != (undefined *)0x0) {\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" (if "if") (parenthesized_expression "(ppuVar16[1] != (undefined *)0x0)" (( "(") (binary_expression "ppuVar16[1] != (undefined *)0x0" (subscript_expression "ppuVar16[1]" (identifier "ppuVar16") ([ "[") (number_literal "1") (] "]")) (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  __printf_chk();\n                  goto LAB_00012134;\n                }" ({ "{") (expression_statement "__printf_chk();" (call_expression "__printf_chk()" (identifier "__printf_chk") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00012134;" (goto "goto") (statement_identifier "LAB_00012134") (; ";")) (} "}"))) (labeled_statement "LAB_00012121:\n                __printf_chk();" (statement_identifier "LAB_00012121") (: ":") (expression_statement "__printf_chk();" (call_expression "__printf_chk()" (identifier "__printf_chk") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (labeled_statement "LAB_00012134:\n              hex2stdout();" (statement_identifier "LAB_00012134") (: ":") (expression_statement "hex2stdout();" (call_expression "hex2stdout()" (identifier "hex2stdout") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n              hex2stdout();\n            }" (else "else") (compound_statement "{\n              hex2stdout();\n            }" ({ "{") (expression_statement "hex2stdout();" (call_expression "hex2stdout()" (identifier "hex2stdout") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" (else "else") (compound_statement "{\n            pr2serr();\njoined_r0x0001216b:\n            iVar17 = 0;\n            if ((int)local_234 < 2) goto LAB_00011e1d;\n          }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "joined_r0x0001216b:\n            iVar17 = 0;" (statement_identifier "joined_r0x0001216b") (: ":") (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";"))) (if_statement "if ((int)local_234 < 2) goto LAB_00011e1d;" (if "if") (parenthesized_expression "((int)local_234 < 2)" (( "(") (binary_expression "(int)local_234 < 2" (cast_expression "(int)local_234" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_234")) (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_00011e1d;" (goto "goto") (statement_identifier "LAB_00011e1d") (; ";"))) (} "}")))) (labeled_statement "LAB_00011796:\n          sg_cmds_close_device();" (statement_identifier "LAB_00011796") (: ":") (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" (identifier "sg_cmds_close_device") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" (else "else") (compound_statement "{\n          local_25c = 0;\n          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);\n          if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }\n          puts("Extended self-test duration (mode page 0xa) failed");\nLAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }\nLAB_00011e1d:\n          pr2serr();\n          sg_cmds_close_device();\n          if (iVar17 != 0) goto LAB_000117b2;\n        }" ({ "{") (expression_statement "local_25c = 0;" (assignment_expression "local_25c = 0" (identifier "local_25c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);" (assignment_expression "iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" (identifier "iVar17") (= "=") (call_expression "sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" (identifier "sg_ll_mode_sense10_v2") (argument_list "(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234)" (( "(") (identifier "iVar8") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "10") (, ",") (number_literal "0") (, ",") (identifier "iVar10") (, ",") (number_literal "0x20") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_25c" (& "&") (identifier "local_25c")) (, ",") (number_literal "1") (, ",") (identifier "local_234") () ")")))) (; ";")) (if_statement "if (iVar17 == 0) {\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }\n          else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }\n            iVar17 = 0x31;\n            pr2serr();\n          }" ({ "{") (if_statement "if (3 < (int)(0x20 - local_25c)) {\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }" (if "if") (parenthesized_expression "(3 < (int)(0x20 - local_25c))" (( "(") (binary_expression "3 < (int)(0x20 - local_25c)" (number_literal "3") (< "<") (cast_expression "(int)(0x20 - local_25c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(0x20 - local_25c)" (( "(") (binary_expression "0x20 - local_25c" (number_literal "0x20") (- "-") (identifier "local_25c")) () ")")))) () ")")) (compound_statement "{\n              piVar25 = &local_268;\n              uVar24 = 0;\n              uVar22 = 0x20;\n              iVar17 = sg_msense_calc_length();\n              if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }\n              goto LAB_00011796;\n            }" ({ "{") (expression_statement "piVar25 = &local_268;" (assignment_expression "piVar25 = &local_268" (identifier "piVar25") (= "=") (pointer_expression "&local_268" (& "&") (identifier "local_268"))) (; ";")) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" (identifier "uVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar22 = 0x20;" (assignment_expression "uVar22 = 0x20" (identifier "uVar22") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "iVar17 = sg_msense_calc_length();" (assignment_expression "iVar17 = sg_msense_calc_length()" (identifier "iVar17") (= "=") (call_expression "sg_msense_calc_length()" (identifier "sg_msense_calc_length") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar17 - (local_268 + 8) < 0xc) {\n                puts("Extended self-test duration not available");\n              }\n              else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" (if "if") (parenthesized_expression "(iVar17 - (local_268 + 8) < 0xc)" (( "(") (binary_expression "iVar17 - (local_268 + 8) < 0xc" (binary_expression "iVar17 - (local_268 + 8)" (identifier "iVar17") (- "-") (parenthesized_expression "(local_268 + 8)" (( "(") (binary_expression "local_268 + 8" (identifier "local_268") (+ "+") (number_literal "8")) () ")"))) (< "<") (number_literal "0xc")) () ")")) (compound_statement "{\n                puts("Extended self-test duration not available");\n              }" ({ "{") (expression_statement "puts("Extended self-test duration not available");" (call_expression "puts("Extended self-test duration not available")" (identifier "puts") (argument_list "("Extended self-test duration not available")" (( "(") (string_literal ""Extended self-test duration not available"" (" """) (string_content "Extended self-test duration not available") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" (else "else") (compound_statement "{\n                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);\n                uVar4 = uVar4 << 8 | uVar4 >> 8;\n                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);\n              }" ({ "{") (expression_statement "uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);" (assignment_expression "uVar4 = *(ushort *)(iVar10 + 0x12 + local_268)" (identifier "uVar4") (= "=") (pointer_expression "*(ushort *)(iVar10 + 0x12 + local_268)" (* "*") (cast_expression "(ushort *)(iVar10 + 0x12 + local_268)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x12 + local_268)" (( "(") (binary_expression "iVar10 + 0x12 + local_268" (binary_expression "iVar10 + 0x12" (identifier "iVar10") (+ "+") (number_literal "0x12")) (+ "+") (identifier "local_268")) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar4 << 8 | uVar4 >> 8;" (assignment_expression "uVar4 = uVar4 << 8 | uVar4 >> 8" (identifier "uVar4") (= "=") (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" (identifier "uVar4") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar4 >> 8" (identifier "uVar4") (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);" (call_expression "__printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25)" (identifier "__printf_chk") (argument_list "(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",\n                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25)" (( "(") (number_literal "1") (, ",") (string_literal ""Expected extended self-test duration=%d seconds (%.2f minutes)\n"" (" """) (string_content "Expected extended self-test duration=%d seconds (%.2f minutes)") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar4") (, ",") (cast_expression "(double)((float)uVar4 / DAT_00014940)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)uVar4 / DAT_00014940)" (( "(") (binary_expression "(float)uVar4 / DAT_00014940" (cast_expression "(float)uVar4" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "uVar4")) (/ "/") (identifier "DAT_00014940")) () ")"))) (, ",") (identifier "uVar22") (, ",") (identifier "uVar24") (, ",") (identifier "piVar25") () ")"))) (; ";")) (} "}")))) (goto_statement "goto LAB_00011796;" (goto "goto") (statement_identifier "LAB_00011796") (; ";")) (} "}"))) (expression_statement "iVar17 = 0x31;" (assignment_expression "iVar17 = 0x31" (identifier "iVar17") (= "=") (number_literal "0x31")) (; ";")) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            sg_get_category_sense_str();\n            pr2serr();\n          }" (else "else") (compound_statement "{\n            sg_get_category_sense_str();\n            pr2serr();\n          }" ({ "{") (expression_statement "sg_get_category_sense_str();" (call_expression "sg_get_category_sense_str()" (identifier "sg_get_category_sense_str") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "puts("Extended self-test duration (mode page 0xa) failed");" (call_expression "puts("Extended self-test duration (mode page 0xa) failed")" (identifier "puts") (argument_list "("Extended self-test duration (mode page 0xa) failed")" (( "(") (string_literal ""Extended self-test duration (mode page 0xa) failed"" (" """) (string_content "Extended self-test duration (mode page 0xa) failed") (" """)) () ")"))) (; ";")) (labeled_statement "LAB_00011ce9:\n          if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" (statement_identifier "LAB_00011ce9") (: ":") (if_statement "if (1 < (int)local_234) {\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" (if "if") (parenthesized_expression "(1 < (int)local_234)" (( "(") (binary_expression "1 < (int)local_234" (number_literal "1") (< "<") (cast_expression "(int)local_234" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_234"))) () ")")) (compound_statement "{\n            sg_cmds_close_device();\n            goto LAB_000117b2;\n          }" ({ "{") (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" (identifier "sg_cmds_close_device") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000117b2;" (goto "goto") (statement_identifier "LAB_000117b2") (; ";")) (} "}")))) (labeled_statement "LAB_00011e1d:\n          pr2serr();" (statement_identifier "LAB_00011e1d") (: ":") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "sg_cmds_close_device();" (call_expression "sg_cmds_close_device()" (identifier "sg_cmds_close_device") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar17 != 0) goto LAB_000117b2;" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000117b2;" (goto "goto") (statement_identifier "LAB_000117b2") (; ";"))) (} "}")))) (expression_statement "iVar17 = sg_convert_errno();" (assignment_expression "iVar17 = sg_convert_errno()" (identifier "iVar17") (= "=") (call_expression "sg_convert_errno()" (identifier "sg_convert_errno") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_000117b2;" (goto "goto") (statement_identifier "LAB_000117b2") (; ";")) (} "}"))) (if_statement "if (local_258._3_1_ != '\0') {\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }" (if "if") (parenthesized_expression "(local_258._3_1_ != '\0')" (( "(") (binary_expression "local_258._3_1_ != '\0'" (field_expression "local_258._3_1_" (identifier "local_258") (. ".") (field_identifier "_3_1_")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        ppuVar16 = (undefined **)&DAT_00016020;\n        puts("Page_Code  Description");\n        do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);\n        iVar17 = 0;\n        goto LAB_000112e2;\n      }" ({ "{") (expression_statement "ppuVar16 = (undefined **)&DAT_00016020;" (assignment_expression "ppuVar16 = (undefined **)&DAT_00016020" (identifier "ppuVar16") (= "=") (cast_expression "(undefined **)&DAT_00016020" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&DAT_00016020" (& "&") (identifier "DAT_00016020")))) (; ";")) (expression_statement "puts("Page_Code  Description");" (call_expression "puts("Page_Code  Description")" (identifier "puts") (argument_list "("Page_Code  Description")" (( "(") (string_literal ""Page_Code  Description"" (" """) (string_content "Page_Code  Description") (" """)) () ")"))) (; ";")) (do_statement "do {\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        } while (ppuVar16 != &PTR_DAT_000160c0);" (do "do") (compound_statement "{\n          ppuVar16 = ppuVar16 + 2;\n          __printf_chk();\n        }" ({ "{") (expression_statement "ppuVar16 = ppuVar16 + 2;" (assignment_expression "ppuVar16 = ppuVar16 + 2" (identifier "ppuVar16") (= "=") (binary_expression "ppuVar16 + 2" (identifier "ppuVar16") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "__printf_chk();" (call_expression "__printf_chk()" (identifier "__printf_chk") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(ppuVar16 != &PTR_DAT_000160c0)" (( "(") (binary_expression "ppuVar16 != &PTR_DAT_000160c0" (identifier "ppuVar16") (!= "!=") (pointer_expression "&PTR_DAT_000160c0" (& "&") (identifier "PTR_DAT_000160c0"))) () ")")) (; ";")) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000112e2;" (goto "goto") (statement_identifier "LAB_000112e2") (; ";")) (} "}"))) (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_251 == '\0') {\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar17 = 1;\n        puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );\n        goto LAB_000112e2;\n      }" ({ "{") (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" (identifier "iVar17") (= "=") (number_literal "1")) (; ";")) (expression_statement "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            );" (call_expression "puts(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" (identifier "puts") (argument_list "(\n            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n            )" (( "(") (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]") (escape_sequence "\n") (string_content "                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    -doff   device online (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -e      duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    -h      output in hex") (escape_sequence "\n") (string_content "    -H      output in hex (same as ") (escape_sequence "\'") (string_content "-h") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -l      list supported page codes") (escape_sequence "\n") (string_content "    -pf     set PF bit (def: 0)") (escape_sequence "\n") (string_content "    -raw=H,H...    sequence of bytes to form diag page to send") (escape_sequence "\n") (string_content "    -raw=-  read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    -s=SF   self-test code (def: 0)") (escape_sequence "\n") (string_content "            1->background short, 2->background extended, 4->abort test") (escape_sequence "\n") (string_content "            5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    -t      default self-test") (escape_sequence "\n") (string_content "    -T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "    -uoff   unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -v      increase verbosity (print issued SCSI cmds)") (escape_sequence "\n") (string_content "    -V      output version string") (escape_sequence "\n") (string_content "    -N|--new   use new interface") (escape_sequence "\n") (string_content "    -?      output this usage message") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (goto_statement "goto LAB_000112e2;" (goto "goto") (statement_identifier "LAB_000112e2") (; ";")) (} "}"))) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (identifier "puts") (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (( "(") (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]") (escape_sequence "\n") (string_content "                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]") (escape_sequence "\n") (string_content "                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]") (escape_sequence "\n") (string_content "                   [--verbose] [--version] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    --doff|-d       device online (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --extdur|-e     duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    --help|-h       print usage message then exit") (escape_sequence "\n") (string_content "    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable") (escape_sequence "\n") (string_content "                    for ") (escape_sequence "\'") (string_content "--raw=-") (escape_sequence "\'") (string_content " with later invocation") (escape_sequence "\n") (string_content "    --list|-l       list supported page codes (with or without DEVICE)") (escape_sequence "\n") (string_content "    --maxlen=LEN|-m LEN    parameter list length or maximum allocation") (escape_sequence "\n") (string_content "                           length (default: 4096 bytes)") (escape_sequence "\n") (string_content "    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV") (escape_sequence "\n") (string_content "    --pf|-p         set PF bit (def: 0)") (escape_sequence "\n") (string_content "    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send") (escape_sequence "\n") (string_content "    --raw=-|-r -    read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    --selftest=ST|-s ST    self-test code, default: 0 (inactive)") (escape_sequence "\n") (string_content "                           1->background short, 2->background extended") (escape_sequence "\n") (string_content "                           4->abort test") (escape_sequence "\n") (string_content "                           5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    --test|-t       default self-test") (escape_sequence "\n") (string_content "    --timeout=SECS|-T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "                            unit: second (def: 7200 seconds)") (escape_sequence "\n") (string_content "    --uoff|-u       unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --verbose|-v    increase verbosity") (escape_sequence "\n") (string_content "    --old|-O        use old interface (use as first option)") (escape_sequence "\n") (string_content "    --version|-V    output version string then exit") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000112dd:\n  iVar17 = 1;" (statement_identifier "LAB_000112dd") (: ":") (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" (identifier "iVar17") (= "=") (number_literal "1")) (; ";"))) (labeled_statement "LAB_000112e2:\n  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" (statement_identifier "LAB_000112e2") (: ":") (while_statement "while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" (while "while") (parenthesized_expression "(local_24 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_24 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_24") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    FUN_00012b70();\nLAB_000122f0:\n    pr2serr();\nLAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\nLAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }\n    if (local_264 != (void *)0x0) {\n      free(local_264);\n    }\n    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }\n    if (iVar17 < 0) {\n      iVar17 = 99;\n    }\n  }" ({ "{") (expression_statement "FUN_00012b70();" (call_expression "FUN_00012b70()" (identifier "FUN_00012b70") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000122f0:\n    pr2serr();" (statement_identifier "LAB_000122f0") (: ":") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_00011955:\n    if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" (statement_identifier "LAB_00011955") (: ":") (if_statement "if (local_251 == '\0') {\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }\n    else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" (if "if") (parenthesized_expression "(local_251 == '\0')" (( "(") (binary_expression "local_251 == '\0'" (identifier "local_251") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar17 = 1;\n      puts("Bad sequence after \'-raw=\' option");\n      puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" ({ "{") (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" (identifier "iVar17") (= "=") (number_literal "1")) (; ";")) (expression_statement "puts("Bad sequence after \'-raw=\' option");" (call_expression "puts("Bad sequence after \'-raw=\' option")" (identifier "puts") (argument_list "("Bad sequence after \'-raw=\' option")" (( "(") (string_literal ""Bad sequence after \'-raw=\' option"" (" """) (string_content "Bad sequence after ") (escape_sequence "\'") (string_content "-raw=") (escape_sequence "\'") (string_content " option") (" """)) () ")"))) (; ";")) (expression_statement "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (identifier "puts") (argument_list "(\n          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (( "(") (string_literal ""Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]") (escape_sequence "\n") (string_content "                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    -doff   device online (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -e      duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    -h      output in hex") (escape_sequence "\n") (string_content "    -H      output in hex (same as ") (escape_sequence "\'") (string_content "-h") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -l      list supported page codes") (escape_sequence "\n") (string_content "    -pf     set PF bit (def: 0)") (escape_sequence "\n") (string_content "    -raw=H,H...    sequence of bytes to form diag page to send") (escape_sequence "\n") (string_content "    -raw=-  read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    -s=SF   self-test code (def: 0)") (escape_sequence "\n") (string_content "            1->background short, 2->background extended, 4->abort test") (escape_sequence "\n") (string_content "            5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    -t      default self-test") (escape_sequence "\n") (string_content "    -T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "    -uoff   unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "-t") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    -v      increase verbosity (print issued SCSI cmds)") (escape_sequence "\n") (string_content "    -V      output version string") (escape_sequence "\n") (string_content "    -N|--new   use new interface") (escape_sequence "\n") (string_content "    -?      output this usage message") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" (else "else") (compound_statement "{\n      iVar17 = 1;\n      puts("Bad sequence after \'--raw=\' option");\n      puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );\n    }" ({ "{") (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" (identifier "iVar17") (= "=") (number_literal "1")) (; ";")) (expression_statement "puts("Bad sequence after \'--raw=\' option");" (call_expression "puts("Bad sequence after \'--raw=\' option")" (identifier "puts") (argument_list "("Bad sequence after \'--raw=\' option")" (( "(") (string_literal ""Bad sequence after \'--raw=\' option"" (" """) (string_content "Bad sequence after ") (escape_sequence "\'") (string_content "--raw=") (escape_sequence "\'") (string_content " option") (" """)) () ")"))) (; ";")) (expression_statement "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          );" (call_expression "puts(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (identifier "puts") (argument_list "(\n          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"\n          )" (( "(") (string_literal ""Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"" (" """) (string_content "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]") (escape_sequence "\n") (string_content "                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]") (escape_sequence "\n") (string_content "                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]") (escape_sequence "\n") (string_content "                   [--verbose] [--version] [DEVICE]") (escape_sequence "\n") (string_content "  where:") (escape_sequence "\n") (string_content "    --doff|-d       device online (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --extdur|-e     duration of an extended self-test (from mode page 0xa)") (escape_sequence "\n") (string_content "    --help|-h       print usage message then exit") (escape_sequence "\n") (string_content "    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable") (escape_sequence "\n") (string_content "                    for ") (escape_sequence "\'") (string_content "--raw=-") (escape_sequence "\'") (string_content " with later invocation") (escape_sequence "\n") (string_content "    --list|-l       list supported page codes (with or without DEVICE)") (escape_sequence "\n") (string_content "    --maxlen=LEN|-m LEN    parameter list length or maximum allocation") (escape_sequence "\n") (string_content "                           length (default: 4096 bytes)") (escape_sequence "\n") (string_content "    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV") (escape_sequence "\n") (string_content "    --pf|-p         set PF bit (def: 0)") (escape_sequence "\n") (string_content "    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send") (escape_sequence "\n") (string_content "    --raw=-|-r -    read stdin for sequence of bytes to send") (escape_sequence "\n") (string_content "    --selftest=ST|-s ST    self-test code, default: 0 (inactive)") (escape_sequence "\n") (string_content "                           1->background short, 2->background extended") (escape_sequence "\n") (string_content "                           4->abort test") (escape_sequence "\n") (string_content "                           5->foreground short, 6->foreground extended") (escape_sequence "\n") (string_content "    --test|-t       default self-test") (escape_sequence "\n") (string_content "    --timeout=SECS|-T SECS    timeout for foreground self tests") (escape_sequence "\n") (string_content "                            unit: second (def: 7200 seconds)") (escape_sequence "\n") (string_content "    --uoff|-u       unit offline (def: 0, only with ") (escape_sequence "\'") (string_content "--test") (escape_sequence "\'") (string_content ")") (escape_sequence "\n") (string_content "    --verbose|-v    increase verbosity") (escape_sequence "\n") (string_content "    --old|-O        use old interface (use as first option)") (escape_sequence "\n") (string_content "    --version|-V    output version string then exit") (escape_sequence "\n") (escape_sequence "\n") (string_content "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command") (" """)) () ")"))) (; ";")) (} "}"))))) (labeled_statement "LAB_000117b2:\n    if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" (statement_identifier "LAB_000117b2") (: ":") (if_statement "if (local_260 != (void *)0x0) {\n      free(local_260);\n    }" (if "if") (parenthesized_expression "(local_260 != (void *)0x0)" (( "(") (binary_expression "local_260 != (void *)0x0" (identifier "local_260") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      free(local_260);\n    }" ({ "{") (expression_statement "free(local_260);" (call_expression "free(local_260)" (identifier "free") (argument_list "(local_260)" (( "(") (identifier "local_260") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_264 != (void *)0x0) {\n      free(local_264);\n    }" (if "if") (parenthesized_expression "(local_264 != (void *)0x0)" (( "(") (binary_expression "local_264 != (void *)0x0" (identifier "local_264") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      free(local_264);\n    }" ({ "{") (expression_statement "free(local_264);" (call_expression "free(local_264)" (identifier "free") (argument_list "(local_264)" (( "(") (identifier "local_264") () ")"))) (; ";")) (} "}"))) (if_statement "if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {\n      pr2serr();\n    }" (if "if") (parenthesized_expression "((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0'))" (( "(") (binary_expression "(local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')" (parenthesized_expression "(local_280 == (void **)0x0)" (( "(") (binary_expression "local_280 == (void **)0x0" (identifier "local_280") (== "==") (cast_expression "(void **)0x0" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(cVar3 = sg_if_can2stderr(), cVar3 == '\0')" (( "(") (comma_expression "cVar3 = sg_if_can2stderr(), cVar3 == '\0'" (assignment_expression "cVar3 = sg_if_can2stderr()" (identifier "cVar3") (= "=") (call_expression "sg_if_can2stderr()" (identifier "sg_if_can2stderr") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      pr2serr();\n    }" ({ "{") (expression_statement "pr2serr();" (call_expression "pr2serr()" (identifier "pr2serr") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar17 < 0) {\n      iVar17 = 99;\n    }" (if "if") (parenthesized_expression "(iVar17 < 0)" (( "(") (binary_expression "iVar17 < 0" (identifier "iVar17") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar17 = 99;\n    }" ({ "{") (expression_statement "iVar17 = 99;" (assignment_expression "iVar17 = 99" (identifier "iVar17") (= "=") (number_literal "99")) (; ";")) (} "}"))) (} "}")))) (return_statement "return iVar17;" (return "return") (identifier "iVar17") (; ";")) (} "}")))

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

int function_1(int argc,char **argv)

{
  char var_28;
  type_1 *puVar2;
  char **argv_00;
  type_2 _Var3;
  char var_16;
  type_3 var_46;
  char *var_4;
  size_t var_21;
  int var_26;
  char *var_14;
  int var_20;
  void **ppvVar11;
  int var_35;
  type_3 **ppuVar13;
  size_t var_24;
  size_t sVar15;
  type_4 *var_39;
  int var_2;
  type_5 uVar18;
  type_5 var_15;
  type_6 *poVar20;
  int var_8;
  int var_1;
  type_7 bVar22;
  type_8 uVar23;
  void **ppvVar24;
  type_8 uVar25;
  int *piVar26;
  int var_30;
  void **var_54;
  int var_11;
  int var_22;
  char *var_25;
  int var_45;
  void *var_53;
  void *var_51;
  type_5 var_27;
  type_6 local_258;
  char var_17;
  char local_227;
  char var_12 [514];
  int var_49;
  int *local_18;
  
  argv_00 = argv;
  var_8 = argc;
  bVar22 = 0;
  local_18 = &argc;
  var_49 = *(int *)(var_1 + 0x14);
  var_53 = (void *)0x0;
  var_51 = (void *)0x0;
  poVar20 = &local_258;
  for (var_2 = 0xc; var_2 != 0; var_2 = var_2 + -1) {
    poVar20->do_deftest = false;
    poVar20->do_doff = false;
    poVar20->do_extdur = false;
    poVar20->do_list = false;
    poVar20 = (type_6 *)&poVar20->do_pf;
  }
  local_258.maxlen = 0x1000;
  local_258.page_code = 0xffffffff;
  var_4 = var_3("SG3_UTILS_OLD_OPTS");
  if (var_4 == (char *)0x0) {
    local_258.opt_new = true;
    var_2 = var_5(&local_258,var_8,argv_00);
    if (var_2 == 0) {
      if (local_258.opt_new == false) {
        var_8 = var_6(&local_258,var_8,argv_00);
        goto LAB_000115cc;
      }
      if (local_258.do_help == 0) goto LAB_0001131a;
LAB_0001141a:
      var_8 = 0;
      var_7(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
      goto LAB_000112e2;
    }
  }
  else {
    local_258.opt_new = false;
    var_2 = var_6(&local_258,var_8,argv_00);
    if (var_2 == 0) {
      if (local_258.opt_new == false) {
        if (local_258.do_help != 0) {
LAB_000115ee:
          var_8 = 0;
          var_7(
              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
              );
          goto LAB_000112e2;
        }
      }
      else {
        var_8 = var_5(&local_258,var_8,argv_00);
LAB_000115cc:
        if (var_8 != 0) goto LAB_000112dd;
        if (local_258.do_help != 0) {
          if (local_258.opt_new != false) goto LAB_0001141a;
          goto LAB_000115ee;
        }
      }
LAB_0001131a:
      if (local_258.verbose_given == false) {
LAB_00011445:
        if (local_258.version_given != false) {
          var_8 = 0;
          var_9();
          goto LAB_000112e2;
        }
      }
      else if (local_258.version_given != false) {
        var_9();
        goto LAB_00011445;
      }
      var_2 = local_258.maxlen;
      _Var3 = local_258.do_raw;
      if (local_258.device_name != (char *)0x0) {
        var_54 = (void **)local_258.verbose;
        if (local_258.do_raw == false) {
          var_22 = 0;
          var_11 = 0;
        }
        else {
          var_11 = var_10();
          var_8 = local_258.maxlen;
          puVar2 = PTR_stdin_00015ff0;
          if (var_11 == 0) {
            var_8 = 99;
            var_9();
            goto LAB_000112e2;
          }
          if (local_258.raw_arg == (char *)0x0) goto LAB_00011955;
          if (*local_258.raw_arg == '-') {
            var_17 = '\0';
            var_30 = 0;
            var_4 = var_12 + 2;
            var_22 = 0;
            do {
              var_14 = var_13(var_4,0x200,*(type_9 **)puVar2);
              if (var_14 == (char *)0x0) break;
              var_15 = 0xffffffff;
              var_14 = var_4;
              do {
                if (var_15 == 0) break;
                var_15 = var_15 - 1;
                var_16 = *var_14;
                var_14 = var_14 + (type_5)bVar22 * -2 + 1;
              } while (var_16 != '\0');
              var_15 = ~var_15;
              if (var_15 - 1 == 0) {
LAB_00011c3f:
                var_17 = '\0';
              }
              else {
                var_21 = var_15 - 1;
                var_16 = _Var3;
                if (var_12[var_15] == '\n') {
                  var_12[var_15] = '\0';
                  if (var_15 - 2 == 0) goto LAB_00011c3f;
                  var_16 = '\0';
                  var_21 = var_15 - 2;
                }
                var_25 = var_4;
                if (var_17 != '\0') {
                  ppuVar13 = var_18();
                  if ((*(type_7 *)((int)*ppuVar13 + var_12[2] * 2 + 1) & 0x10) != 0) {
                    local_227 = var_12[2];
                    var_12[0] = '\0';
                    var_20 = var_19();
                    if (var_20 != 1) {
                      var_9();
                      goto LAB_00011955;
                    }
                    var_21 = var_21 - 1;
                    *(char *)(var_11 + -1 + var_22) = (char)var_27;
                    var_25 = var_12 + 3;
                  }
                  var_17 = '\0';
                }
                var_24 = var_23(var_25," \t");
                if (var_24 != var_21) {
                  var_25 = var_25 + var_24;
                  if (*var_25 != '#') {
                    sVar15 = var_23(var_25,"0123456789aAbBcCdDeEfF ,\t");
                    if (((int)sVar15 < (int)(var_21 - var_24)) && (var_25[sVar15] != '#'))
                    goto LAB_000122f0;
                    var_20 = 0;
                    do {
                      var_26 = var_19();
                      if (var_26 != 1) {
                        if (*var_25 != '#') {
                          var_9();
                          goto LAB_00011955;
                        }
                        goto LAB_00011c1c;
                      }
                      if (0xff < var_27) {
                        var_9();
                        goto LAB_00011955;
                      }
                      if (var_16 != '\0') {
                        var_26 = -1;
                        var_14 = var_25;
                        do {
                          if (var_26 == 0) break;
                          var_26 = var_26 + -1;
                          var_28 = *var_14;
                          var_14 = var_14 + (type_5)bVar22 * -2 + 1;
                        } while (var_28 != '\0');
                        if (var_26 == -3) {
                          var_17 = *var_25;
                        }
                      }
                      if (var_8 <= var_22 + var_20) goto LAB_00011f16;
                      *(char *)(var_11 + var_22 + var_20) = (char)var_27;
                      var_20 = var_20 + 1;
                      var_25 = var_29(var_25," ,\t");
                      if (var_25 == (char *)0x0) goto LAB_00011c1c;
                      var_21 = var_23(var_25," ,\t");
                      var_25 = var_25 + var_21;
                      if (*var_25 == '\0') goto LAB_00011c1c;
                    } while (var_20 != 0x400);
                    var_20 = 0x401;
LAB_00011c1c:
                    var_22 = var_22 + var_20;
                  }
                }
              }
              var_30 = var_30 + 1;
            } while (var_30 != 0x200);
          }
          else {
            var_15 = 0xffffffff;
            var_4 = local_258.raw_arg;
            do {
              if (var_15 == 0) break;
              var_15 = var_15 - 1;
              var_16 = *var_4;
              var_4 = var_4 + (type_5)bVar22 * -2 + 1;
            } while (var_16 != '\0');
            var_21 = var_23(local_258.raw_arg,"0123456789aAbBcCdDeEfF, ");
            if (~var_15 - 1 != var_21) {
LAB_00011945:
              var_9();
              goto LAB_00011955;
            }
            var_4 = local_258.raw_arg;
            for (var_20 = 0; var_20 < var_8; var_20 = var_20 + 1) {
              var_26 = var_19();
              if (var_26 != 1) goto LAB_00011945;
              if (0xff < var_27) {
                var_9();
                goto LAB_00011955;
              }
              *(char *)(var_11 + var_20) = (char)var_27;
              var_14 = var_31(var_4,0x2c);
              var_4 = var_31(var_4,0x20);
              if (var_14 == (char *)0x0) {
                if (var_4 == (char *)0x0) {
                  var_22 = var_20 + 1;
                  goto LAB_00011382;
                }
              }
              else if ((var_4 == (char *)0x0) || (var_14 <= var_4)) {
                var_4 = var_14;
              }
              var_4 = var_4 + 1;
            }
            var_22 = var_20 + 1;
            if (var_8 == var_20) {
LAB_00011f16:
              var_9();
              goto LAB_00011955;
            }
          }
        }
LAB_00011382:
        if ((local_258.do_doff == false) && (local_258.do_uoff == false)) {
          if (local_258.do_selftest < 1) goto LAB_00011621;
          if (local_258.do_deftest != false) {
LAB_000119dc:
            if (local_258.opt_new == false) {
              var_4 = "either set -s=SF or -t (not both)";
              goto LAB_000118f8;
            }
            var_4 = "either set --selftest=SF or --test (not both)";
            goto LAB_0001187f;
          }
          if (local_258.do_raw != false) goto LAB_000113c3;
        }
        else {
          if (local_258.do_deftest == false) {
            if (local_258.opt_new == false) {
              var_4 = "setting -doff or -uoff only useful when -t is set";
              goto LAB_000118f8;
            }
            var_4 = "setting --doff or --uoff only useful when -t is set";
            goto LAB_0001187f;
          }
          if (0 < local_258.do_selftest) goto LAB_000119dc;
LAB_00011621:
          if (local_258.do_raw != false) {
            if ((local_258._0_4_ & 0xffff00ff) != 0) {
LAB_000113c3:
              if (local_258.opt_new == false) {
                var_4 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_000118f8:
                var_8 = 0x1f;
                var_7(var_4);
                var_7(
                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                    );
                goto LAB_000117b2;
              }
              var_4 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_0001187f:
              var_8 = 0x1f;
              var_7(var_4);
              var_7(
                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                  );
              goto LAB_000117b2;
            }
            if (local_258.do_pf == false) {
              if (local_258.opt_new == false) {
                var_7(">>> warning, \'-pf\' probably should be used with \'-raw=\'");
              }
              else {
                var_7(">>> warning, \'--pf\' probably should be used with \'--raw=\'");
              }
            }
          }
        }
        var_20 = var_32();
        if (var_20 < 0) {
          if ((void **)local_258.verbose != (void **)0x0) {
            var_33();
            var_9();
          }
          var_8 = var_34();
          goto LAB_000117b2;
        }
        ppvVar11 = (void **)(type_5)(3 < local_258.verbose);
        ppvVar24 = &var_53;
        uVar23 = 0;
        var_35 = var_10();
        var_26 = local_258.page_code;
        if (var_35 == 0) {
          var_8 = 99;
          var_9();
          var_36();
          goto LAB_000117b2;
        }
        if (local_258.do_extdur == false) {
          if (local_258.do_list == false) {
            if (-1 < local_258.page_code) goto LAB_000116de;
            if (local_258.do_raw == false) {
              var_15 = local_258.page_code;
              uVar18 = 0;
              if (((local_258.do_deftest == false) &&
                  (var_15 = local_258.do_selftest - 5, var_15 < 2)) &&
                 (var_15 = local_258.timeout, uVar18 = 1, 0 < local_258.timeout)) {
                uVar18 = local_258.timeout;
              }
              var_8 = var_37(var_20,local_258.do_selftest,local_258.do_pf,
                                       local_258._0_4_ & 0xff,(type_5)local_258._0_4_ >> 8 & 0xff,
                                       local_258.do_uoff,uVar18,0,0,1,local_258.verbose,var_15);
              if (var_8 != 0) {
LAB_00011cc5:
                if (var_8 == 6) {
                  var_9();
                }
                else if (var_8 == 0xb) {
                  var_9();
                }
                else if (var_8 == 2) {
                  var_9();
                }
                else {
                  var_9();
                }
                goto LAB_00011ce9;
              }
              if (local_258.do_selftest - 5U < 2) {
                var_7("Foreground self-test returned GOOD status");
              }
              else if (((local_258.do_deftest != false) && (local_258.do_doff == false)) &&
                      (local_258.do_uoff == false)) {
                var_7("Default self-test returned GOOD status");
              }
            }
            else {
              var_8 = var_37(var_20,0,local_258.do_pf,0,0,0,0,var_11,var_22,1,
                                       local_258.verbose,local_258.verbose);
              if (var_8 != 0) goto LAB_00011cc5;
            }
            goto LAB_00011796;
          }
          if (local_258.page_code < 0) {
            uVar23 = 1;
            ppvVar24 = (void **)local_258.verbose;
            ppvVar11 = (void **)local_258.verbose;
            var_8 = var_37(var_20,0,1,0,0,0,0,var_35,4,1,local_258.verbose,
                                     local_258.verbose);
            if (var_8 != 0) goto LAB_00011cc5;
          }
LAB_000116de:
          var_15 = 0;
          if (-1 < var_26) {
            var_15 = var_26;
          }
          var_27 = 0;
          var_8 = var_38
                             (var_20,(type_5)~var_26 >> 0x1f,var_15,var_35,var_2,0,&var_27,1,
                              local_258.verbose,uVar23,ppvVar24,ppvVar11);
          if (var_8 == 0) {
            var_2 = var_2 - var_27;
            if (var_2 < 4) {
              var_9();
              var_9();
              goto joined_r0x0001216b;
            }
            var_8 = (type_3)(*(type_3 *)(var_35 + 2) << 8 | *(type_3 *)(var_35 + 2) >> 8) + 4;
            if (var_2 <= var_8) {
              var_8 = var_2;
            }
            if (local_258.do_hex < 2) {
              var_39 = pc_desc_arr;
              if (var_26 < 1) {
                var_7("Supported diagnostic pages response:");
                if (local_258.do_hex == 0) {
                  for (var_2 = 0; var_2 < var_8 + -4; var_2 = var_2 + 1) {
                    var_15 = (type_5)*(type_7 *)(var_35 + 4 + var_2);
                    var_39 = pc_desc_arr;
                    do {
                      if ((var_15 == var_39->page_code) || ((int)var_15 < var_39->page_code))
                      break;
                      var_39 = var_39 + 1;
                    } while ((type_10 *)var_39 != var_40);
                    var_41();
                  }
                  goto LAB_00011796;
                }
              }
              else {
                while( true ) {
                  var_15 = var_39->page_code;
                  if (var_15 == var_26) break;
                  if ((var_15 != var_26 && var_26 <= (int)var_15) ||
                     (var_39 = var_39 + 1, (type_10 *)var_39 == var_40)) goto LAB_00012121;
                }
                if (var_39->desc != (char *)0x0) {
                  var_41();
                  goto LAB_00012134;
                }
LAB_00012121:
                var_41();
              }
LAB_00012134:
              var_42();
            }
            else {
              var_42();
            }
          }
          else {
            var_9();
joined_r0x0001216b:
            var_8 = 0;
            if (local_258.verbose < 2) goto LAB_00011e1d;
          }
LAB_00011796:
          var_36();
        }
        else {
          var_27 = 0;
          var_8 = var_43
                             (var_20,0,1,0,10,0,var_35,0x20,0,&var_27,1,local_258.verbose);
          if (var_8 == 0) {
            if (3 < (int)(0x20 - var_27)) {
              piVar26 = &var_45;
              uVar25 = 0;
              uVar23 = 0x20;
              var_8 = var_44();
              if (var_8 - (var_45 + 8) < 0xc) {
                var_7("Extended self-test duration not available");
              }
              else {
                var_46 = *(type_3 *)(var_35 + 0x12 + var_45);
                var_46 = var_46 << 8 | var_46 >> 8;
                var_41(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",
                             var_46,(double)((float)var_46 / var_47),uVar23,uVar25,piVar26);
              }
              goto LAB_00011796;
            }
            var_8 = 0x31;
            var_9();
          }
          else {
            var_48();
            var_9();
          }
          var_7("Extended self-test duration (mode page 0xa) failed");
LAB_00011ce9:
          if (1 < local_258.verbose) {
            var_36();
            goto LAB_000117b2;
          }
LAB_00011e1d:
          var_9();
          var_36();
          if (var_8 != 0) goto LAB_000117b2;
        }
        var_8 = var_34();
        goto LAB_000117b2;
      }
      if (local_258.do_list != false) {
        var_39 = pc_desc_arr;
        var_7("Page_Code  Description");
        do {
          var_39 = var_39 + 1;
          var_41();
        } while ((type_10 *)var_39 != var_40);
        var_8 = 0;
        goto LAB_000112e2;
      }
      var_9();
      if (local_258.opt_new == false) {
        var_8 = 1;
        var_7(
            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
            );
        goto LAB_000112e2;
      }
      var_7(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
  }
LAB_000112dd:
  var_8 = 1;
LAB_000112e2:
  while (var_49 != *(int *)(var_1 + 0x14)) {
    var_50();
LAB_000122f0:
    var_9();
LAB_00011955:
    if (local_258.opt_new == false) {
      var_8 = 1;
      var_7("Bad sequence after \'-raw=\' option");
      var_7(
          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
    else {
      var_8 = 1;
      var_7("Bad sequence after \'--raw=\' option");
      var_7(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
LAB_000117b2:
    if (var_51 != (void *)0x0) {
      var_52(var_51);
    }
    if (var_53 != (void *)0x0) {
      var_52(var_53);
    }
    if ((var_54 == (void **)0x0) && (var_16 = var_55(), var_16 == '\0')) {
      var_9();
    }
    if (var_8 < 0) {
      var_8 = 99;
    }
  }
  return var_8;
}


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

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

int MASKED(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  char cVar2;
  char cVar3;
  ushort uVar4;
  char *pcVar5;
  size_t sVar6;
  char *pcVar7;
  int iVar8;
  void **ppvVar9;
  int iVar10;
  undefined *puVar11;
  int iVar12;
  ushort **ppuVar13;
  size_t sVar14;
  size_t sVar15;
  undefined **ppuVar16;
  int iVar17;
  uint uVar18;
  undefined *puVar19;
  undefined4 *puVar20;
  int in_GS_OFFSET;
  byte bVar21;
  undefined4 uVar22;
  void **ppvVar23;
  undefined4 uVar24;
  int *piVar25;
  int local_29c;
  void **local_280;
  int local_27c;
  int local_278;
  char *local_274;
  int local_268;
  void *local_264;
  void *local_260;
  uint local_25c;
  undefined4 local_258;
  char local_254;
  char local_253;
  char local_252;
  char local_251;
  char local_250;
  char local_24f;
  int local_24c;
  int local_248;
  int local_244;
  undefined *local_240;
  int local_23c;
  undefined *local_238;
  void **local_234;
  int local_230;
  char *local_22c;
  char local_228;
  char local_227;
  char local_226 [514];
  int local_24;
  undefined4 *local_18;
  
  bVar21 = 0;
  local_18 = &param_1;
  local_24 = *(int *)(in_GS_OFFSET + 0x14);
  local_264 = (void *)0x0;
  local_260 = (void *)0x0;
  puVar20 = &local_258;
  for (iVar17 = 0xc; iVar17 != 0; iVar17 = iVar17 + -1) {
    *puVar20 = 0;
    puVar20 = puVar20 + 1;
  }
  local_244 = 0x1000;
  local_240 = (undefined *)0xffffffff;
  pcVar5 = getenv("SG3_UTILS_OLD_OPTS");
  if (pcVar5 == (char *)0x0) {
    local_251 = '\x01';
    iVar17 = FUN_00012510();
    if (iVar17 == 0) {
      if (local_251 == '\0') {
        iVar17 = FUN_00012820();
        goto LAB_000115cc;
      }
      if (local_24c == 0) goto LAB_0001131a;
LAB_0001141a:
      iVar17 = 0;
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
      goto LAB_000112e2;
    }
  }
  else {
    local_251 = '\0';
    iVar17 = FUN_00012820();
    if (iVar17 == 0) {
      if (local_251 == '\0') {
        if (local_24c != 0) {
LAB_000115ee:
          iVar17 = 0;
          puts(
              "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
              );
          goto LAB_000112e2;
        }
      }
      else {
        iVar17 = FUN_00012510();
LAB_000115cc:
        if (iVar17 != 0) goto LAB_000112dd;
        if (local_24c != 0) {
          if (local_251 != '\0') goto LAB_0001141a;
          goto LAB_000115ee;
        }
      }
LAB_0001131a:
      if (local_250 == '\0') {
LAB_00011445:
        if (local_24f != '\0') {
          iVar17 = 0;
          pr2serr();
          goto LAB_000112e2;
        }
      }
      else if (local_24f != '\0') {
        pr2serr();
        goto LAB_00011445;
      }
      iVar12 = local_244;
      cVar3 = local_253;
      if (local_230 != 0) {
        local_280 = local_234;
        if (local_253 == '\0') {
          local_278 = 0;
          local_27c = 0;
        }
        else {
          local_27c = sg_memalign();
          iVar17 = local_244;
          puVar19 = PTR_stdin_00015ff0;
          if (local_27c == 0) {
            iVar17 = 99;
            pr2serr();
            goto LAB_000112e2;
          }
          if (local_22c == (char *)0x0) goto LAB_00011955;
          if (*local_22c == '-') {
            local_228 = '\0';
            local_29c = 0;
            pcVar5 = local_226 + 2;
            local_278 = 0;
            do {
              pcVar7 = fgets(pcVar5,0x200,*(FILE **)puVar19);
              if (pcVar7 == (char *)0x0) break;
              uVar18 = 0xffffffff;
              pcVar7 = pcVar5;
              do {
                if (uVar18 == 0) break;
                uVar18 = uVar18 - 1;
                cVar1 = *pcVar7;
                pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;
              } while (cVar1 != '\0');
              uVar18 = ~uVar18;
              if (uVar18 - 1 == 0) {
LAB_00011c3f:
                local_228 = '\0';
              }
              else {
                sVar6 = uVar18 - 1;
                cVar1 = cVar3;
                if (local_226[uVar18] == '\n') {
                  local_226[uVar18] = '\0';
                  if (uVar18 - 2 == 0) goto LAB_00011c3f;
                  cVar1 = '\0';
                  sVar6 = uVar18 - 2;
                }
                local_274 = pcVar5;
                if (local_228 != '\0') {
                  ppuVar13 = __ctype_b_loc();
                  if ((*(byte *)((int)*ppuVar13 + local_226[2] * 2 + 1) & 0x10) != 0) {
                    local_227 = local_226[2];
                    local_226[0] = '\0';
                    iVar8 = __isoc99_sscanf();
                    if (iVar8 != 1) {
                      pr2serr();
                      goto LAB_00011955;
                    }
                    sVar6 = sVar6 - 1;
                    *(char *)(local_27c + -1 + local_278) = (char)local_25c;
                    local_274 = local_226 + 3;
                  }
                  local_228 = '\0';
                }
                sVar14 = strspn(local_274," \t");
                if (sVar14 != sVar6) {
                  local_274 = local_274 + sVar14;
                  if (*local_274 != '#') {
                    sVar15 = strspn(local_274,"0123456789aAbBcCdDeEfF ,\t");
                    if (((int)sVar15 < (int)(sVar6 - sVar14)) && (local_274[sVar15] != '#'))
                    goto LAB_000122f0;
                    iVar8 = 0;
                    do {
                      iVar10 = __isoc99_sscanf();
                      if (iVar10 != 1) {
                        if (*local_274 != '#') {
                          pr2serr();
                          goto LAB_00011955;
                        }
                        goto LAB_00011c1c;
                      }
                      if (0xff < local_25c) {
                        pr2serr();
                        goto LAB_00011955;
                      }
                      if (cVar1 != '\0') {
                        iVar10 = -1;
                        pcVar7 = local_274;
                        do {
                          if (iVar10 == 0) break;
                          iVar10 = iVar10 + -1;
                          cVar2 = *pcVar7;
                          pcVar7 = pcVar7 + (uint)bVar21 * -2 + 1;
                        } while (cVar2 != '\0');
                        if (iVar10 == -3) {
                          local_228 = *local_274;
                        }
                      }
                      if (iVar17 <= local_278 + iVar8) goto LAB_00011f16;
                      *(char *)(local_27c + local_278 + iVar8) = (char)local_25c;
                      iVar8 = iVar8 + 1;
                      local_274 = strpbrk(local_274," ,\t");
                      if (local_274 == (char *)0x0) goto LAB_00011c1c;
                      sVar6 = strspn(local_274," ,\t");
                      local_274 = local_274 + sVar6;
                      if (*local_274 == '\0') goto LAB_00011c1c;
                    } while (iVar8 != 0x400);
                    iVar8 = 0x401;
LAB_00011c1c:
                    local_278 = local_278 + iVar8;
                  }
                }
              }
              local_29c = local_29c + 1;
            } while (local_29c != 0x200);
          }
          else {
            uVar18 = 0xffffffff;
            pcVar5 = local_22c;
            do {
              if (uVar18 == 0) break;
              uVar18 = uVar18 - 1;
              cVar3 = *pcVar5;
              pcVar5 = pcVar5 + (uint)bVar21 * -2 + 1;
            } while (cVar3 != '\0');
            sVar6 = strspn(local_22c,"0123456789aAbBcCdDeEfF, ");
            if (~uVar18 - 1 != sVar6) {
LAB_00011945:
              pr2serr();
              goto LAB_00011955;
            }
            pcVar5 = local_22c;
            for (iVar8 = 0; iVar8 < iVar17; iVar8 = iVar8 + 1) {
              iVar10 = __isoc99_sscanf();
              if (iVar10 != 1) goto LAB_00011945;
              if (0xff < local_25c) {
                pr2serr();
                goto LAB_00011955;
              }
              *(char *)(local_27c + iVar8) = (char)local_25c;
              pcVar7 = strchr(pcVar5,0x2c);
              pcVar5 = strchr(pcVar5,0x20);
              if (pcVar7 == (char *)0x0) {
                if (pcVar5 == (char *)0x0) {
                  local_278 = iVar8 + 1;
                  goto LAB_00011382;
                }
              }
              else if ((pcVar5 == (char *)0x0) || (pcVar7 <= pcVar5)) {
                pcVar5 = pcVar7;
              }
              pcVar5 = pcVar5 + 1;
            }
            local_278 = iVar8 + 1;
            if (iVar17 == iVar8) {
LAB_00011f16:
              pr2serr();
              goto LAB_00011955;
            }
          }
        }
LAB_00011382:
        if ((local_258._1_1_ == '\0') && (local_252 == '\0')) {
          if (local_23c < 1) goto LAB_00011621;
          if ((char)local_258 != '\0') {
LAB_000119dc:
            if (local_251 == '\0') {
              pcVar5 = "either set -s=SF or -t (not both)";
              goto LAB_000118f8;
            }
            pcVar5 = "either set --selftest=SF or --test (not both)";
            goto LAB_0001187f;
          }
          if (local_253 != '\0') goto LAB_000113c3;
        }
        else {
          if ((char)local_258 == '\0') {
            if (local_251 == '\0') {
              pcVar5 = "setting -doff or -uoff only useful when -t is set";
              goto LAB_000118f8;
            }
            pcVar5 = "setting --doff or --uoff only useful when -t is set";
            goto LAB_0001187f;
          }
          if (0 < local_23c) goto LAB_000119dc;
LAB_00011621:
          if (local_253 != '\0') {
            if ((local_258 & 0xffff00ff) != 0) {
LAB_000113c3:
              if (local_251 == '\0') {
                pcVar5 = "\'-raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_000118f8:
                iVar17 = 0x1f;
                puts(pcVar5);
                puts(
                    "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                    );
                goto LAB_000117b2;
              }
              pcVar5 = "\'--raw=\' cannot be used with self-tests, \'-e\' or \'-l\'";
LAB_0001187f:
              iVar17 = 0x1f;
              puts(pcVar5);
              puts(
                  "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
                  );
              goto LAB_000117b2;
            }
            if (local_254 == '\0') {
              if (local_251 == '\0') {
                puts(">>> warning, \'-pf\' probably should be used with \'-raw=\'");
              }
              else {
                puts(">>> warning, \'--pf\' probably should be used with \'--raw=\'");
              }
            }
          }
        }
        iVar8 = sg_cmds_open_device();
        if (iVar8 < 0) {
          if (local_234 != (void **)0x0) {
            safe_strerror();
            pr2serr();
          }
          iVar17 = sg_convert_errno();
          goto LAB_000117b2;
        }
        ppvVar9 = (void **)(uint)(3 < (int)local_234);
        ppvVar23 = &local_264;
        uVar22 = 0;
        iVar10 = sg_memalign();
        puVar19 = local_240;
        if (iVar10 == 0) {
          iVar17 = 99;
          pr2serr();
          sg_cmds_close_device();
          goto LAB_000117b2;
        }
        if (local_258._2_1_ == '\0') {
          if (local_258._3_1_ == '\0') {
            if (-1 < (int)local_240) goto LAB_000116de;
            if (local_253 == '\0') {
              puVar11 = (undefined *)0x0;
              if ((((char)local_258 == '\0') &&
                  (puVar19 = (undefined *)(local_23c - 5), puVar19 < (undefined *)0x2)) &&
                 (puVar19 = local_238, puVar11 = (undefined *)0x1, 0 < (int)local_238)) {
                puVar11 = local_238;
              }
              iVar17 = sg_ll_send_diag(iVar8,local_23c,local_254,local_258 & 0xff,
                                       local_258 >> 8 & 0xff,local_252,puVar11,0,0,1,local_234,
                                       puVar19);
              if (iVar17 != 0) {
LAB_00011cc5:
                if (iVar17 == 6) {
                  pr2serr();
                }
                else if (iVar17 == 0xb) {
                  pr2serr();
                }
                else if (iVar17 == 2) {
                  pr2serr();
                }
                else {
                  pr2serr();
                }
                goto LAB_00011ce9;
              }
              if (local_23c - 5U < 2) {
                puts("Foreground self-test returned GOOD status");
              }
              else if ((((char)local_258 != '\0') && (local_258._1_1_ == '\0')) &&
                      (local_252 == '\0')) {
                puts("Default self-test returned GOOD status");
              }
            }
            else {
              iVar17 = sg_ll_send_diag(iVar8,0,local_254,0,0,0,0,local_27c,local_278,1,local_234,
                                       local_234);
              if (iVar17 != 0) goto LAB_00011cc5;
            }
            goto LAB_00011796;
          }
          if ((int)local_240 < 0) {
            uVar22 = 1;
            ppvVar23 = local_234;
            ppvVar9 = local_234;
            iVar17 = sg_ll_send_diag(iVar8,0,1,0,0,0,0,iVar10,4,1,local_234,local_234);
            if (iVar17 != 0) goto LAB_00011cc5;
          }
LAB_000116de:
          puVar11 = (undefined *)0x0;
          if (-1 < (int)puVar19) {
            puVar11 = puVar19;
          }
          local_25c = 0;
          iVar17 = sg_ll_receive_diag_v2
                             (iVar8,~(uint)puVar19 >> 0x1f,puVar11,iVar10,iVar12,0,&local_25c,1,
                              local_234,uVar22,ppvVar23,ppvVar9);
          if (iVar17 == 0) {
            iVar12 = iVar12 - local_25c;
            if (iVar12 < 4) {
              pr2serr();
              pr2serr();
              goto joined_r0x0001216b;
            }
            iVar17 = (ushort)(*(ushort *)(iVar10 + 2) << 8 | *(ushort *)(iVar10 + 2) >> 8) + 4;
            if (iVar12 <= iVar17) {
              iVar17 = iVar12;
            }
            if (local_248 < 2) {
              ppuVar16 = (undefined **)&DAT_00016020;
              if ((int)puVar19 < 1) {
                puts("Supported diagnostic pages response:");
                if (local_248 == 0) {
                  for (iVar12 = 0; iVar12 < iVar17 + -4; iVar12 = iVar12 + 1) {
                    puVar19 = (undefined *)(uint)*(byte *)(iVar10 + 4 + iVar12);
                    ppuVar16 = (undefined **)&DAT_00016020;
                    do {
                      if ((puVar19 == *ppuVar16) || ((int)puVar19 < (int)*ppuVar16)) break;
                      ppuVar16 = ppuVar16 + 2;
                    } while (ppuVar16 != &PTR_DAT_000160c0);
                    __printf_chk();
                  }
                  goto LAB_00011796;
                }
              }
              else {
                while( true ) {
                  puVar11 = *ppuVar16;
                  if (puVar11 == puVar19) break;
                  if ((puVar11 != puVar19 && (int)puVar19 <= (int)puVar11) ||
                     (ppuVar16 = ppuVar16 + 2, ppuVar16 == &PTR_DAT_000160c0)) goto LAB_00012121;
                }
                if (ppuVar16[1] != (undefined *)0x0) {
                  __printf_chk();
                  goto LAB_00012134;
                }
LAB_00012121:
                __printf_chk();
              }
LAB_00012134:
              hex2stdout();
            }
            else {
              hex2stdout();
            }
          }
          else {
            pr2serr();
joined_r0x0001216b:
            iVar17 = 0;
            if ((int)local_234 < 2) goto LAB_00011e1d;
          }
LAB_00011796:
          sg_cmds_close_device();
        }
        else {
          local_25c = 0;
          iVar17 = sg_ll_mode_sense10_v2(iVar8,0,1,0,10,0,iVar10,0x20,0,&local_25c,1,local_234);
          if (iVar17 == 0) {
            if (3 < (int)(0x20 - local_25c)) {
              piVar25 = &local_268;
              uVar24 = 0;
              uVar22 = 0x20;
              iVar17 = sg_msense_calc_length();
              if (iVar17 - (local_268 + 8) < 0xc) {
                puts("Extended self-test duration not available");
              }
              else {
                uVar4 = *(ushort *)(iVar10 + 0x12 + local_268);
                uVar4 = uVar4 << 8 | uVar4 >> 8;
                __printf_chk(1,"Expected extended self-test duration=%d seconds (%.2f minutes)\n",
                             uVar4,(double)((float)uVar4 / DAT_00014940),uVar22,uVar24,piVar25);
              }
              goto LAB_00011796;
            }
            iVar17 = 0x31;
            pr2serr();
          }
          else {
            sg_get_category_sense_str();
            pr2serr();
          }
          puts("Extended self-test duration (mode page 0xa) failed");
LAB_00011ce9:
          if (1 < (int)local_234) {
            sg_cmds_close_device();
            goto LAB_000117b2;
          }
LAB_00011e1d:
          pr2serr();
          sg_cmds_close_device();
          if (iVar17 != 0) goto LAB_000117b2;
        }
        iVar17 = sg_convert_errno();
        goto LAB_000117b2;
      }
      if (local_258._3_1_ != '\0') {
        ppuVar16 = (undefined **)&DAT_00016020;
        puts("Page_Code  Description");
        do {
          ppuVar16 = ppuVar16 + 2;
          __printf_chk();
        } while (ppuVar16 != &PTR_DAT_000160c0);
        iVar17 = 0;
        goto LAB_000112e2;
      }
      pr2serr();
      if (local_251 == '\0') {
        iVar17 = 1;
        puts(
            "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
            );
        goto LAB_000112e2;
      }
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
  }
LAB_000112dd:
  iVar17 = 1;
LAB_000112e2:
  while (local_24 != *(int *)(in_GS_OFFSET + 0x14)) {
    FUN_00012b70();
LAB_000122f0:
    pr2serr();
LAB_00011955:
    if (local_251 == '\0') {
      iVar17 = 1;
      puts("Bad sequence after \'-raw=\' option");
      puts(
          "Usage: sg_senddiag [-doff] [-e] [-h] [-H] [-l] [-pf] [-raw=H,H...]\n                   [-s=SF] [-t] [-T=SECS] [-uoff] [-v] [-V] [DEVICE]\n  where:\n    -doff   device online (def: 0, only with \'-t\')\n    -e      duration of an extended self-test (from mode page 0xa)\n    -h      output in hex\n    -H      output in hex (same as \'-h\')\n    -l      list supported page codes\n    -pf     set PF bit (def: 0)\n    -raw=H,H...    sequence of bytes to form diag page to send\n    -raw=-  read stdin for sequence of bytes to send\n    -s=SF   self-test code (def: 0)\n            1->background short, 2->background extended, 4->abort test\n            5->foreground short, 6->foreground extended\n    -t      default self-test\n    -T SECS    timeout for foreground self tests\n    -uoff   unit offline (def: 0, only with \'-t\')\n    -v      increase verbosity (print issued SCSI cmds)\n    -V      output version string\n    -N|--new   use new interface\n    -?      output this usage message\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
    else {
      iVar17 = 1;
      puts("Bad sequence after \'--raw=\' option");
      puts(
          "Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list]\n                   [--maxlen=LEN] [--page=PG] [--pf] [--raw=H,H...]\n                   [--selftest=ST] [--test] [--timeout=SECS] [--uoff]\n                   [--verbose] [--version] [DEVICE]\n  where:\n    --doff|-d       device online (def: 0, only with \'--test\')\n    --extdur|-e     duration of an extended self-test (from mode page 0xa)\n    --help|-h       print usage message then exit\n    --hex|-H        output RDR in hex; twice: plus ASCII; thrice: suitable\n                    for \'--raw=-\' with later invocation\n    --list|-l       list supported page codes (with or without DEVICE)\n    --maxlen=LEN|-m LEN    parameter list length or maximum allocation\n                           length (default: 4096 bytes)\n    --page=PG|-P PG    do RECEIVE DIAGNOSTIC RESULTS only, set PCV\n    --pf|-p         set PF bit (def: 0)\n    --raw=H,H...|-r H,H...    sequence of hex bytes to form diag page to send\n    --raw=-|-r -    read stdin for sequence of bytes to send\n    --selftest=ST|-s ST    self-test code, default: 0 (inactive)\n                           1->background short, 2->background extended\n                           4->abort test\n                           5->foreground short, 6->foreground extended\n    --test|-t       default self-test\n    --timeout=SECS|-T SECS    timeout for foreground self tests\n                            unit: second (def: 7200 seconds)\n    --uoff|-u       unit offline (def: 0, only with \'--test\')\n    --verbose|-v    increase verbosity\n    --old|-O        use old interface (use as first option)\n    --version|-V    output version string then exit\n\nPerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command"
          );
    }
LAB_000117b2:
    if (local_260 != (void *)0x0) {
      free(local_260);
    }
    if (local_264 != (void *)0x0) {
      free(local_264);
    }
    if ((local_280 == (void **)0x0) && (cVar3 = sg_if_can2stderr(), cVar3 == '\0')) {
      pr2serr();
    }
    if (iVar17 < 0) {
      iVar17 = 99;
    }
  }
  return iVar17;
}

