
int decode_dev_ids(char *print_if_found,uint8_t *buff,int len,int m_assoc,int m_desig_type,
                  int m_code_set,opts_t *op)

{
  byte bVar1;
  int *piVar2;
  undefined *puVar3;
  int iVar4;
  uint uVar5;
  byte *pbVar6;
  undefined *puVar7;
  byte *in_t1;
  uint in_t2;
  int unaff_s1;
  byte *unaff_s2;
  undefined *unaff_s3;
  byte *unaff_s4;
  byte *unaff_s6;
  code *pcVar8;
  undefined1 *puVar9;
  byte *unaff_s8;
  int in_stack_ffffff94;
  undefined1 *puVar10;
  int *local_60;
  undefined *local_5c;
  byte *local_58;
  undefined *local_54;
  int *local_50;
  byte *local_4c;
  undefined *local_48;
  byte *local_44;
  uint16_t u;
  int off;
  uint8_t sas_tport_addr [8];
  int local_2c;
  
  puVar3 = PTR___stack_chk_guard_00039a5c;
  puVar9 = &_gp;
  puVar10 = &_gp;
  local_2c = *(int *)PTR___stack_chk_guard_00039a5c;
  local_58 = in_t1;
  if (*(char *)(m_desig_type + 4) != '\0') {
    local_4c = sas_tport_addr;
    unaff_s1 = 0;
    local_54 = PTR_LAB_00039948;
    local_50 = (int *)0x0;
    unaff_s3 = PTR_LAB_00039948 + 0x1c30;
    local_48 = PTR_LAB_00039948;
    local_5c = PTR_LAB_00039948 + 0x1c28;
    sas_tport_addr[0] = '\0';
    sas_tport_addr[1] = '\0';
    sas_tport_addr[2] = '\0';
    sas_tport_addr[3] = '\0';
    local_60 = (int *)(PTR_LAB_00039948 + 0x5e90);
    sas_tport_addr[4] = '\0';
    sas_tport_addr[5] = '\0';
    sas_tport_addr[6] = '\0';
    sas_tport_addr[7] = '\0';
    off = -1;
    pbVar6 = (byte *)m_assoc;
    local_44 = buff;
    unaff_s2 = (byte *)len;
    unaff_s6 = PTR_LAB_00039948;
    goto LAB_00015f98;
  }
  if (buff[2] == '\0') {
    puVar9 = puVar10;
    iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,
                           (opts_t *)&_gp);
    pbVar6 = (byte *)m_assoc;
    local_58 = in_t1;
    puVar10 = puVar9;
  }
  else {
    iVar4 = *(int *)(m_desig_type + 0x20);
    pbVar6 = (byte *)m_assoc;
    if (iVar4 != 0) {
      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);
      local_58 = in_t1;
      puVar9 = puVar10;
      goto LAB_00015f38;
    }
  }
LAB_00015ed8:
  do {
    local_44 = pbVar6;
    if (local_2c == *(int *)puVar3) {
      return iVar4;
    }
    iVar4 = local_2c;
    pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();
    m_assoc = (int)unaff_s4;
    if ((int *)len == (int *)0x3) {
LAB_000165d0:
      pbVar6 = local_58;
      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;
      if ((in_t2 == 0) || (iVar4 != 1)) {
        (**(code **)(puVar9 + -0x7f38))(1,local_5c);
        unaff_s8 = local_44 + 8;
        unaff_s6 = local_44;
        do {
          len = (int)*unaff_s6;
          unaff_s6 = unaff_s6 + 1;
          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);
        } while (unaff_s6 != unaff_s8);
        pcVar8 = *(code **)(puVar10 + -0x7f20);
        goto LAB_00016020;
      }
      len = (uint)sas_tport_addr._0_4_ >> 0x18;
      if (local_50 == (int *)0x0) {
        if ((int *)len != (int *)0x0) {
          unaff_s8 = (byte *)&local_2c;
          (**(code **)(puVar9 + -0x7f38))(1,local_5c);
          pbVar6 = local_4c;
          puVar9 = puVar10;
          while( true ) {
            pbVar6 = pbVar6 + 1;
            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);
            if (unaff_s8 == pbVar6) break;
            len = (int)*pbVar6;
          }
          (**(code **)(puVar9 + -0x7f20))(10);
          puVar10 = puVar9;
        }
        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);
        unaff_s1 = unaff_s1 + 1;
        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);
      }
      else {
        (**(code **)(puVar9 + -0x7f38))(1,local_5c);
        unaff_s8 = local_44 + 8;
        unaff_s6 = local_44;
        puVar9 = puVar10;
        do {
          bVar1 = *unaff_s6;
          unaff_s6 = unaff_s6 + 1;
          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);
        } while (unaff_s8 != unaff_s6);
        unaff_s1 = unaff_s1 + 1;
        len = (int)local_50;
        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);
        local_50 = (int *)0x0;
        puVar10 = puVar9;
      }
    }
    else {
      if ((uint)len < (int *)0x4) {
        if ((int *)len != (int *)0x2) goto LAB_00016428;
        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;
        unaff_s8 = unaff_s6 + 0xc;
        (**(code **)(puVar9 + -0x7f38))(1,local_5c);
        unaff_s6 = local_44;
        do {
          len = (int)*unaff_s6;
          unaff_s6 = unaff_s6 + 1;
          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);
        } while (unaff_s8 != unaff_s6);
        pcVar8 = *(code **)(puVar10 + -0x7f20);
        goto LAB_00016020;
      }
      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;
      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;
      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;
      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);
      len = 0;
      unaff_s1 = unaff_s1 + 1;
      puVar9 = puVar10;
      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);
      puVar10 = puVar9;
    }
LAB_00016030:
    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;
        unaff_s1 = unaff_s1 + 1) {
LAB_00015f98:
      buff = local_44;
      unaff_s4 = (byte *)m_assoc;
      if (local_44[2] == 0) break;
      iVar4 = 0;
      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;
      pbVar6 = (byte *)(uint)(*local_44 >> 4);
      if (pbVar6 != (byte *)0x3) {
        if (pbVar6 < (byte *)0x4) {
          local_58 = (byte *)0x10;
          if (pbVar6 == (byte *)0x2) {
LAB_000163d0:
            pbVar6 = local_58;
            pcVar8 = *(code **)(puVar9 + -0x7ecc);
            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);
            puVar9 = puVar10;
            local_58 = pbVar6;
          }
          else {
LAB_00016418:
            local_58 = (byte *)0x10;
LAB_00016428:
            pcVar8 = *(code **)(puVar9 + -0x7ecc);
            puVar7 = local_54 + 0x1d28;
            m_assoc = (int)unaff_s4;
            puVar9 = puVar10;
          }
          goto LAB_000163e8;
        }
        if (pbVar6 == &DAT_00000005) goto LAB_00016448;
        if (pbVar6 != &DAT_00000006) goto LAB_00016418;
LAB_00015fd8:
        (**(code **)(puVar9 + -0x7f38))(1,local_5c);
        unaff_s8 = local_44 + 0x10;
        unaff_s6 = local_44;
        do {
          len = (int)*unaff_s6;
          unaff_s6 = unaff_s6 + 1;
          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);
        } while (unaff_s8 != unaff_s6);
        pcVar8 = *(code **)(puVar10 + -0x7f20);
        unaff_s4 = (byte *)m_assoc;
LAB_00016020:
        (*pcVar8)(10);
        puVar9 = puVar10;
        goto LAB_0001602c;
      }
LAB_00016448:
      pbVar6 = (byte *)0x10;
LAB_0001644c:
      pcVar8 = *(code **)(puVar9 + -0x7ecc);
      puVar7 = local_48 + 0x1cac;
      m_assoc = (int)unaff_s4;
      puVar9 = puVar10;
      local_58 = pbVar6;
LAB_000163e8:
      (*pcVar8)(puVar7,pbVar6);
      len = 0;
      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);
      puVar10 = puVar9;
    }
    len = (int)&off;
    m_assoc = (int)unaff_s4;
    iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);
    puVar9 = puVar10;
    if (iVar4 == 0) {
      unaff_s6 = buff + off;
      unaff_s8 = (byte *)(uint)unaff_s6[3];
      local_58 = unaff_s8;
      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {
        bVar1 = unaff_s6[1];
        local_44 = unaff_s6 + 4;
        len = (int)*unaff_s6;
        if ((char)bVar1 < '\0') {
          in_t2 = (uint)(*unaff_s6 >> 4 == 6);
        }
        else {
          in_t2 = 0;
        }
        uVar5 = bVar1 & 0xf;
        if (uVar5 < 0xb) {
                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);
          return iVar4;
        }
LAB_0001602c:
        unaff_s1 = unaff_s1 + 1;
        m_assoc = (int)unaff_s4;
        puVar10 = puVar9;
        goto LAB_00016030;
      }
      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);
      iVar4 = 0x61;
      pbVar6 = (byte *)m_assoc;
      puVar10 = puVar9;
    }
    else {
      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);
      len = (int)piVar2;
      if (piVar2 != (int *)0x0) {
        unaff_s2 = (byte *)&local_2c;
        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);
        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;
        buff = local_4c;
        puVar9 = puVar10;
        while( true ) {
          buff = buff + 1;
          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);
          if (unaff_s2 == buff) break;
          len = (int)*buff;
        }
        (**(code **)(puVar9 + -0x7f20))(10);
        local_60 = piVar2;
      }
      if (iVar4 == -2) {
        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);
        iVar4 = 0x61;
        pbVar6 = (byte *)m_assoc;
        puVar10 = puVar9;
      }
      else {
LAB_00015f38:
        iVar4 = 0;
        pbVar6 = (byte *)m_assoc;
        puVar10 = puVar9;
      }
    }
  } while( true );
}



int FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  uint *in_t1;
  uint in_t2;
  int unaff_s1;
  uint *unaff_s2;
  int unaff_s3;
  uint *unaff_s4;
  uint *puVar5;
  uint *unaff_s6;
  int in_t9;
  code *pcVar6;
  uint *unaff_s8;
  uint *local_60;
  int local_5c;
  uint *local_58;
  int local_54;
  uint *local_50;
  uint *local_4c;
  int local_48;
  uint *local_44;
  uint local_38;
  uint local_34;
  uint local_30;
  uint local_2c;
  
  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);
  local_2c = *puVar5;
  local_58 = in_t1;
  if (*(char *)(param_5 + 4) != '\0') {
    local_4c = &local_34;
    unaff_s1 = 0;
    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);
    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);
    local_50 = (uint *)0x0;
    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
               0x1c30;
    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
               0x1c28;
    local_34 = 0;
    local_60 = unaff_s6 + 0x17a4;
    local_30 = 0;
    local_38 = 0xffffffff;
    puVar4 = param_4;
    local_44 = param_2;
    unaff_s2 = param_3;
    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);
    goto LAB_00015f98;
  }
  if (*(byte *)((int)param_2 + 2) == 0) {
    iVar2 = FUN_00015c24();
    puVar4 = param_4;
    local_58 = in_t1;
  }
  else {
    iVar2 = *(int *)(param_5 + 0x20);
    puVar4 = param_4;
    if (iVar2 != 0) {
      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +
                                in_t9 + 0x28) + 0x65e4);
      local_58 = in_t1;
      goto LAB_00015f38;
    }
  }
LAB_00015ed8:
  do {
    local_44 = puVar4;
    if (local_2c == *puVar5) {
      return iVar2;
    }
    uVar3 = local_2c;
    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();
    param_4 = unaff_s4;
    if (param_3 == (uint *)0x3) {
LAB_000165d0:
      puVar4 = local_58;
      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;
      if ((in_t2 == 0) || (uVar3 != 1)) {
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s8 = local_44 + 2;
        unaff_s6 = local_44;
        do {
          param_3 = (uint *)(uint)*(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
        } while (unaff_s6 != unaff_s8);
        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);
        goto LAB_00016020;
      }
      param_3 = (uint *)(local_34 >> 0x18);
      if (local_50 == (uint *)0x0) {
        if (param_3 != (uint *)0x0) {
          unaff_s8 = &local_2c;
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
          puVar4 = local_4c;
          while( true ) {
            puVar4 = (uint *)((int)puVar4 + 1);
            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
            if (unaff_s8 == puVar4) break;
            param_3 = (uint *)(uint)*(byte *)puVar4;
          }
          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);
        }
        local_34 = unaff_s6[1];
        unaff_s1 = unaff_s1 + 1;
        local_30 = unaff_s6[2];
      }
      else {
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s8 = local_44 + 2;
        unaff_s6 = local_44;
        do {
          bVar1 = *(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);
        } while (unaff_s8 != unaff_s6);
        unaff_s1 = unaff_s1 + 1;
        param_3 = local_50;
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))
                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28
                             ) + 0x1ce8);
        local_50 = (uint *)0x0;
      }
    }
    else {
      if (param_3 < (uint *)0x4) {
        if (param_3 != (uint *)0x2) goto LAB_00016428;
        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;
        unaff_s8 = unaff_s6 + 3;
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s6 = local_44;
        do {
          param_3 = (uint *)(uint)*(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
        } while (unaff_s8 != unaff_s6);
        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);
        goto LAB_00016020;
      }
      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;
      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;
      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;
      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
                 0x1cf0,unaff_s8);
      param_3 = (uint *)0x0;
      unaff_s1 = unaff_s1 + 1;
      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);
    }
LAB_00016030:
    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;
        unaff_s1 = unaff_s1 + 1) {
LAB_00015f98:
      param_2 = local_44;
      unaff_s4 = param_4;
      if (*(byte *)((int)local_44 + 2) == 0) break;
      iVar2 = 0;
      if (param_4 != (uint *)0x0) goto LAB_00015ed8;
      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);
      if (puVar4 != (uint *)0x3) {
        if (puVar4 < (uint *)0x4) {
          local_58 = (uint *)0x10;
          if (puVar4 == (uint *)0x2) {
LAB_000163d0:
            puVar4 = local_58;
            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);
            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)
                    + 0x1c74;
            local_58 = puVar4;
          }
          else {
LAB_00016418:
            local_58 = (uint *)0x10;
LAB_00016428:
            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);
            iVar2 = local_54 + 0x1d28;
            param_4 = unaff_s4;
          }
          goto LAB_000163e8;
        }
        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;
        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;
LAB_00015fd8:
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s8 = local_44 + 4;
        unaff_s6 = local_44;
        do {
          param_3 = (uint *)(uint)*(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
        } while (unaff_s8 != unaff_s6);
        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);
        unaff_s4 = param_4;
LAB_00016020:
        (*pcVar6)(10);
        goto LAB_0001602c;
      }
LAB_00016448:
      puVar4 = (uint *)0x10;
LAB_0001644c:
      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);
      iVar2 = local_48 + 0x1cac;
      param_4 = unaff_s4;
      local_58 = puVar4;
LAB_000163e8:
      (*pcVar6)(iVar2,puVar4);
      param_3 = (uint *)0x0;
      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);
    }
    param_3 = &local_38;
    param_4 = unaff_s4;
    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))
                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);
    if (iVar2 == 0) {
      unaff_s6 = (uint *)((int)param_2 + local_38);
      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;
      local_58 = unaff_s8;
      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {
        bVar1 = *(byte *)((int)unaff_s6 + 1);
        local_44 = unaff_s6 + 1;
        param_3 = (uint *)(uint)*(byte *)unaff_s6;
        if ((char)bVar1 < '\0') {
          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);
        }
        else {
          in_t2 = 0;
        }
        uVar3 = bVar1 & 0xf;
        if (uVar3 < 0xb) {
                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))
                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);
          return iVar2;
        }
LAB_0001602c:
        unaff_s1 = unaff_s1 + 1;
        param_4 = unaff_s4;
        goto LAB_00016030;
      }
      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
                 0x1b60,(int)unaff_s2 - local_38);
      iVar2 = 0x61;
      puVar4 = param_4;
    }
    else {
      puVar4 = (uint *)(local_34 >> 0x18);
      param_3 = puVar4;
      if (puVar4 != (uint *)0x0) {
        unaff_s2 = &local_2c;
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))
                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28
                             ) + 0x1c28);
        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)
                   + 0x1c30;
        param_2 = local_4c;
        while( true ) {
          param_2 = (uint *)((int)param_2 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);
          if (unaff_s2 == param_2) break;
          param_3 = (uint *)(uint)*(byte *)param_2;
        }
        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);
        local_60 = puVar4;
      }
      if (iVar2 == -2) {
        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)
                   + 0x1bc0,local_38);
        iVar2 = 0x61;
        puVar4 = param_4;
      }
      else {
LAB_00015f38:
        iVar2 = 0;
        puVar4 = param_4;
      }
    }
  } while( true );
}


lui gp,0x3
addiu gp,gp,-0x4550
addu gp,gp,t9
addiu sp,sp,-0x80
lw v0,0x90(sp)
sw s5,0x6c(sp)
lw s5,-0x7eb4(gp)
sw gp,0x18(sp)
sw s0,0x58(sp)
or s0,a1,zero
sw ra,0x7c(sp)
sw s8,0x78(sp)
sw s7,0x74(sp)
sw s6,0x70(sp)
sw s4,0x68(sp)
sw s3,0x64(sp)
sw s2,0x60(sp)
sw s1,0x5c(sp)
lw t0,0x0(s5)
lbu v1,0x4(v0)
sw t0,0x54(sp)
bne v1,zero,0x00015f40
_lw v1,-0x7fc8(gp)
lbu v1,0x2(a1)
bne v1,zero,0x00015f14
_lw t9,-0x7fcc(gp)
addiu t9,t9,0x5c24
bal 0x00015c24
_sw v0,0x10(sp)
lw gp,0x18(sp)
lw a0,0x54(sp)
lw v1,0x0(s5)
bne a0,v1,0x00016578
_lw ra,0x7c(sp)
lw s8,0x78(sp)
lw s7,0x74(sp)
lw s6,0x70(sp)
lw s5,0x6c(sp)
lw s4,0x68(sp)
lw s3,0x64(sp)
lw s2,0x60(sp)
lw s1,0x5c(sp)
lw s0,0x58(sp)
jr ra
_addiu sp,sp,0x80
lw v0,0x20(v0)
beq v0,zero,0x00015ed8
_lw a1,-0x7fc8(gp)
lw a0,-0x7fc8(gp)
lw t9,-0x7ecc(gp)
addiu a1,a1,0x65e4
jalr t9
_addiu a0,a0,0x1de0
lw gp,0x18(sp)
b 0x00015ed8
_or v0,zero,zero
addiu v0,sp,0x4c
lw s7,-0x7fc8(gp)
or s1,zero,zero
lw s6,-0x7fc8(gp)
or s2,a2,zero
lw s3,-0x7fc8(gp)
or s4,a3,zero
sw v1,0x2c(sp)
lw v1,-0x7fc8(gp)
sw v0,0x34(sp)
li v0,-0x1
sw zero,0x30(sp)
addiu s3,s3,0x1c30
sw v1,0x38(sp)
addiu v1,s7,0x1c28
sw zero,0x4c(sp)
sw v1,0x24(sp)
addiu v1,s6,0x5e90
sw zero,0x50(sp)
sw v1,0x20(sp)
bne s1,zero,0x00016038
_sw v0,0x48(sp)
lbu v0,0x2(s0)
beq v0,zero,0x00016038
_li v0,-0x1
bne s4,zero,0x00015ed8
_or v0,zero,zero
lbu a1,0x0(s0)
li v0,0x3
srl a1,a1,0x4
beq a1,v0,0x000164b4
_sltiu v0,a1,0x4
bne v0,zero,0x000163c0
_li v0,0x5
beq a1,v0,0x00016440
_li v0,0x6
bne a1,v0,0x00016418
_or a3,s0,zero
lw t9,-0x7f38(gp)
li a0,0x1
lw a1,0x24(sp)
jalr t9
_sw a3,0x28(sp)
lw a3,0x28(sp)
lw gp,0x18(sp)
addiu s8,a3,0x10
or s6,a3,zero
lw t9,-0x7f38(gp)
li a0,0x1
lbu a2,0x0(s6)
addiu s6,s6,0x1
jalr t9
_or a1,s3,zero
bne s8,s6,0x00015ffc
_lw gp,0x18(sp)
lw t9,-0x7f20(gp)
jalr t9
_li a0,0xa
lw gp,0x18(sp)
addiu s1,s1,0x1
beq s1,zero,0x00015f98
_li v0,-0x1
lw t9,-0x7f28(gp)
addiu a2,sp,0x48
sw v0,0x14(sp)
or a3,s4,zero
sw v0,0x10(sp)
or a1,s2,zero
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
bne v0,zero,0x000164c0
_or s7,v0,zero
lw a1,0x48(sp)
addu s6,s0,a1
lbu s8,0x3(s6)
addu v0,a1,s8
addiu v0,v0,0x3
slt v0,v0,s2
beq v0,zero,0x000164f4
_or t1,s8,zero
lbu a0,0x1(s6)
addiu a3,s6,0x4
lbu a2,0x0(s6)
srl v0,a0,0x7
beq v0,zero,0x000163b8
_andi a1,a2,0xf
srl t2,a2,0x4
xori t2,t2,0x6
sltiu t2,t2,0x1
andi v0,a0,0xf
sltiu t3,v0,0xb
beq t3,zero,0x0001602c
_ext a0,a0,0x4,0x2
lw v1,0x20(sp)
sll v0,v0,0x2
addu v0,v1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
or a2,zero,zero
lw a3,0x28(sp)
or a1,s8,zero
lw t9,-0x7f60(gp)
addiu s1,s1,0x1
jalr t9
_or a0,a3,zero
b 0x00016030
_lw gp,0x18(sp)
b 0x000160a8
_or t2,zero,zero
li v0,0x2
bne a1,v0,0x00016418
_li t1,0x10
or a3,s0,zero
lw a0,-0x7fc8(gp)
or a1,t1,zero
lw t9,-0x7ecc(gp)
sw a3,0x3c(sp)
addiu a0,a0,0x1c74
sw t1,0x28(sp)
jalr t9
_addiu s1,s1,0x1
or a2,zero,zero
lw gp,0x18(sp)
lw t1,0x28(sp)
lw a3,0x3c(sp)
lw t9,-0x7f60(gp)
or a1,t1,zero
jalr t9
_or a0,a3,zero
b 0x00016030
_lw gp,0x18(sp)
li t1,0x10
or v0,a1,zero
or a3,s0,zero
lw v1,0x2c(sp)
or a1,v0,zero
lw t9,-0x7ecc(gp)
sw a3,0x3c(sp)
sw t1,0x28(sp)
b 0x000163e8
_addiu a0,v1,0x1d28
li t1,0x10
or a3,s0,zero
lw v0,0x38(sp)
or a1,t1,zero
lw t9,-0x7ecc(gp)
sw a3,0x3c(sp)
addiu a0,v0,0x1cac
b 0x000163e8
_sw t1,0x28(sp)
or a3,s0,zero
b 0x00016448
_li t1,0x10
lbu a2,0x4c(sp)
bne a2,zero,0x00016514
_lw a1,-0x7fc8(gp)
li v0,-0x2
bne s7,v0,0x00015f38
_lw a0,-0x7fc8(gp)
lw t9,-0x7ecc(gp)
lw a1,0x48(sp)
jalr t9
_addiu a0,a0,0x1bc0
li v0,0x61
b 0x00015ed8
_lw gp,0x18(sp)
lw a0,-0x7fc8(gp)
subu a1,s2,a1
lw t9,-0x7ecc(gp)
jalr t9
_addiu a0,a0,0x1b60
li v0,0x61
b 0x00015ed8
_lw gp,0x18(sp)
li a0,0x1
lw t9,-0x7f38(gp)
addiu s2,sp,0x54
sw a2,0x20(sp)
jalr t9
_addiu a1,a1,0x1c28
lw gp,0x18(sp)
lw s0,0x34(sp)
lw a2,0x20(sp)
lw s1,-0x7fc8(gp)
b 0x00016548
_addiu s1,s1,0x1c30
lbu a2,0x0(s0)
lw t9,-0x7f38(gp)
li a0,0x1
addiu s0,s0,0x1
jalr t9
_or a1,s1,zero
bne s2,s0,0x00016544
_lw gp,0x18(sp)
lw t9,-0x7f20(gp)
jalr t9
_li a0,0xa
b 0x000164cc
_lw gp,0x18(sp)
lw t9,-0x7ec8(gp)
jalr t9
_nop
li v1,0x3
beq a2,v1,0x000165d0
_sltiu v1,a2,0x4
bne v1,zero,0x0001672c
_li v1,0x5
beq a2,v1,0x000165d0
_li v1,0x6
bne a2,v1,0x00016428
_lw v1,0x2c(sp)
li v0,0x10
beq s8,v0,0x00015fd8
_lw a0,-0x7fc8(gp)
or a1,s8,zero
lw t9,-0x7ecc(gp)
sw a3,0x28(sp)
jalr t9
_addiu a0,a0,0x1cf0
b 0x00016394
_lw gp,0x18(sp)
li v0,0x8
bne s8,v0,0x0001644c
_lw v0,0x38(sp)
beq t2,zero,0x0001661c
_li v0,0x1
bne a0,v0,0x0001661c
_lw v0,0x30(sp)
bne v0,zero,0x00016668
_lbu a2,0x4c(sp)
bne a2,zero,0x000166d4
_lw t9,-0x7f38(gp)
lwl v1,0x4(s6)
addiu s1,s1,0x1
lwl v0,0x8(s6)
lwr v1,0x7(s6)
lwr v0,0xb(s6)
sw v1,0x4c(sp)
b 0x00016030
_sw v0,0x50(sp)
lw t9,-0x7f38(gp)
li a0,0x1
lw a1,0x24(sp)
jalr t9
_sw a3,0x28(sp)
lw a3,0x28(sp)
lw gp,0x18(sp)
addiu s8,a3,0x8
or s6,a3,zero
lw t9,-0x7f38(gp)
li a0,0x1
lbu a2,0x0(s6)
addiu s6,s6,0x1
jalr t9
_or a1,s3,zero
bne s6,s8,0x00016640
_lw gp,0x18(sp)
b 0x00016020
_lw t9,-0x7f20(gp)
lw t9,-0x7f38(gp)
li a0,0x1
lw a1,0x24(sp)
jalr t9
_sw a3,0x28(sp)
lw a3,0x28(sp)
lw gp,0x18(sp)
addiu s8,a3,0x8
or s6,a3,zero
lw t9,-0x7f38(gp)
li a0,0x1
lbu a2,0x0(s6)
addiu s6,s6,0x1
jalr t9
_or a1,s3,zero
bne s8,s6,0x0001668c
_lw gp,0x18(sp)
lw a1,-0x7fc8(gp)
li a0,0x1
lw t9,-0x7f38(gp)
addiu s1,s1,0x1
lw a2,0x30(sp)
jalr t9
_addiu a1,a1,0x1ce8
lw gp,0x18(sp)
b 0x00016030
_sw zero,0x30(sp)
li a0,0x1
lw a1,0x24(sp)
addiu s8,sp,0x54
jalr t9
_sw a2,0x28(sp)
lw gp,0x18(sp)
lw s7,0x34(sp)
b 0x000166fc
_lw a2,0x28(sp)
lbu a2,0x0(s7)
lw t9,-0x7f38(gp)
li a0,0x1
addiu s7,s7,0x1
jalr t9
_or a1,s3,zero
bne s8,s7,0x000166f8
_lw gp,0x18(sp)
lw t9,-0x7f20(gp)
jalr t9
_li a0,0xa
b 0x000165fc
_lw gp,0x18(sp)
li v1,0x2
bne a2,v1,0x00016428
_lw v1,0x2c(sp)
li v0,0x8
bne s8,v0,0x000163d0
_lw t9,-0x7f38(gp)
li a0,0x1
lw a1,0x24(sp)
addiu s8,s6,0xc
jalr t9
_sw a3,0x28(sp)
lw a3,0x28(sp)
lw gp,0x18(sp)
or s6,a3,zero
lw t9,-0x7f38(gp)
li a0,0x1
lbu a2,0x0(s6)
addiu s6,s6,0x1
jalr t9
_or a1,s3,zero
bne s8,s6,0x00016764
_lw gp,0x18(sp)
b 0x00016020
_lw t9,-0x7f20(gp)
(translation_unit "int FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)" identifier (parameter_list "(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *in_t1;" type_identifier (pointer_declarator "*in_t1" * identifier) ;) (declaration "uint in_t2;" type_identifier identifier ;) (declaration "int unaff_s1;" primitive_type identifier ;) (declaration "uint *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "int unaff_s3;" primitive_type identifier ;) (declaration "uint *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "uint *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);" (assignment_expression "puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" identifier = (pointer_expression "*(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" * (cast_expression "(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered transfer length: " + in_t9 + 0x14)" ( (binary_expression ""  Maximum scattered transfer length: " + in_t9 + 0x14" (binary_expression ""  Maximum scattered transfer length: " + in_t9" (string_literal ""  Maximum scattered transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (expression_statement "local_2c = *puVar5;" (assignment_expression "local_2c = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) (if_statement "if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }" if (parenthesized_expression "(*(char *)(param_5 + 4) != '\0')" ( (binary_expression "*(char *)(param_5 + 4) != '\0'" (pointer_expression "*(char *)(param_5 + 4)" * (cast_expression "(char *)(param_5 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }" { (expression_statement "local_4c = &local_34;" (assignment_expression "local_4c = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "unaff_s1 = 0;" (assignment_expression "unaff_s1 = 0" identifier = number_literal) ;) (expression_statement "unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" identifier = (pointer_expression "*(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) ;) (expression_statement "local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" identifier = (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) ;) (expression_statement "local_50 = (uint *)0x0;" (assignment_expression "local_50 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;" (assignment_expression "unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;" (assignment_expression "local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_60 = unaff_s6 + 0x17a4;" (assignment_expression "local_60 = unaff_s6 + 0x17a4" identifier = (binary_expression "unaff_s6 + 0x17a4" identifier + number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0xffffffff;" (assignment_expression "local_38 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) (expression_statement "local_44 = param_2;" (assignment_expression "local_44 = param_2" identifier = identifier) ;) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" identifier = identifier) ;) (expression_statement "local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" identifier = (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00015f98;" goto statement_identifier ;) })) (if_statement "if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" if (parenthesized_expression "(*(byte *)((int)param_2 + 2) == 0)" ( (binary_expression "*(byte *)((int)param_2 + 2) == 0" (pointer_expression "*(byte *)((int)param_2 + 2)" * (cast_expression "(byte *)((int)param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 2)" ( (binary_expression "(int)param_2 + 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }" { (expression_statement "iVar2 = FUN_00015c24();" (assignment_expression "iVar2 = FUN_00015c24()" identifier = (call_expression "FUN_00015c24()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) }) (else_clause "else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" else (compound_statement "{\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" { (expression_statement "iVar2 = *(int *)(param_5 + 0x20);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x20)" identifier = (pointer_expression "*(int *)(param_5 + 0x20)" * (cast_expression "(int *)(param_5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }" { (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" +\n                                in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) (goto_statement "goto LAB_00015f38;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  }" { (expression_statement "local_44 = puVar4;" (assignment_expression "local_44 = puVar4" identifier = identifier) ;) (if_statement "if (local_2c == *puVar5) {\n      return iVar2;\n    }" if (parenthesized_expression "(local_2c == *puVar5)" ( (binary_expression "local_2c == *puVar5" identifier == (pointer_expression "*puVar5" * identifier)) )) (compound_statement "{\n      return iVar2;\n    }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "uVar3 = local_2c;" (assignment_expression "uVar3 = local_2c" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();" (assignment_expression "puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))()" identifier = (cast_expression "(uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)("  Maximum scattered transfer length: " + in_t9))()" (parenthesized_expression "(**(code **)("  Maximum scattered transfer length: " + in_t9))" ( (pointer_expression "**(code **)("  Maximum scattered transfer length: " + in_t9)" * (pointer_expression "*(code **)("  Maximum scattered transfer length: " + in_t9)" * (cast_expression "(code **)("  Maximum scattered transfer length: " + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered transfer length: " + in_t9)" ( (binary_expression ""  Maximum scattered transfer length: " + in_t9" (string_literal ""  Maximum scattered transfer length: "" " string_content ") + identifier) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (if_statement "if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" if (parenthesized_expression "(param_3 == (uint *)0x3)" ( (binary_expression "param_3 == (uint *)0x3" identifier == (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }" { (labeled_statement "LAB_000165d0:\n      puVar4 = local_58;" statement_identifier : (expression_statement "puVar4 = local_58;" (assignment_expression "puVar4 = local_58" identifier = identifier) ;)) (if_statement "if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;" if (parenthesized_expression "(unaff_s8 != (uint *)&DAT_00000008)" ( (binary_expression "unaff_s8 != (uint *)&DAT_00000008" identifier != (cast_expression "(uint *)&DAT_00000008" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000008" & identifier))) )) (goto_statement "goto LAB_0001644c;" goto statement_identifier ;)) (if_statement "if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" if (parenthesized_expression "((in_t2 == 0) || (uVar3 != 1))" ( (binary_expression "(in_t2 == 0) || (uVar3 != 1)" (parenthesized_expression "(in_t2 == 0)" ( (binary_expression "in_t2 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) ))) )) (compound_statement "{\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" { (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s8 = local_44 + 2;" (assignment_expression "unaff_s8 = local_44 + 2" identifier = (binary_expression "local_44 + 2" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);" do (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" { (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s6 != unaff_s8)" ( (binary_expression "unaff_s6 != unaff_s8" identifier != identifier) )) ;) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00016020;" goto statement_identifier ;) })) (expression_statement "param_3 = (uint *)(local_34 >> 0x18);" (assignment_expression "param_3 = (uint *)(local_34 >> 0x18)" identifier = (cast_expression "(uint *)(local_34 >> 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 >> 0x18)" ( (binary_expression "local_34 >> 0x18" identifier >> number_literal) )))) ;) (if_statement "if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" if (parenthesized_expression "(local_50 == (uint *)0x0)" ( (binary_expression "local_50 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }" { (if_statement "if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }" { (expression_statement "unaff_s8 = &local_2c;" (assignment_expression "unaff_s8 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "puVar4 = local_4c;" (assignment_expression "puVar4 = local_4c" identifier = identifier) ;) (while_statement "while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }" { (expression_statement "puVar4 = (uint *)((int)puVar4 + 1);" (assignment_expression "puVar4 = (uint *)((int)puVar4 + 1)" identifier = (cast_expression "(uint *)((int)puVar4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 1)" ( (binary_expression "(int)puVar4 + 1" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) (if_statement "if (unaff_s8 == puVar4) break;" if (parenthesized_expression "(unaff_s8 == puVar4)" ( (binary_expression "unaff_s8 == puVar4" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "param_3 = (uint *)(uint)*(byte *)puVar4;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)puVar4" identifier = (binary_expression "(uint *)(uint)*(byte *)puVar4" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)puVar4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);" (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(10)" ( number_literal ))) ;) })) (expression_statement "local_34 = unaff_s6[1];" (assignment_expression "local_34 = unaff_s6[1]" identifier = (subscript_expression "unaff_s6[1]" identifier [ number_literal ])) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "local_30 = unaff_s6[2];" (assignment_expression "local_30 = unaff_s6[2]" identifier = (subscript_expression "unaff_s6[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" else (compound_statement "{\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" { (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s8 = local_44 + 2;" (assignment_expression "unaff_s8 = local_44 + 2" identifier = (binary_expression "local_44 + 2" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        }" { (expression_statement "bVar1 = *(byte *)unaff_s6;" (assignment_expression "bVar1 = *(byte *)unaff_s6" identifier = (pointer_expression "*(byte *)unaff_s6" * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3,bVar1)" ( number_literal , identifier , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = local_50;" (assignment_expression "param_3 = local_50" identifier = identifier) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8)" ( number_literal , (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "local_50 = (uint *)0x0;" (assignment_expression "local_50 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" else (compound_statement "{\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" { (if_statement "if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" if (parenthesized_expression "(param_3 < (uint *)0x4)" ( (binary_expression "param_3 < (uint *)0x4" identifier < (cast_expression "(uint *)0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" { (if_statement "if (param_3 != (uint *)0x2) goto LAB_00016428;" if (parenthesized_expression "(param_3 != (uint *)0x2)" ( (binary_expression "param_3 != (uint *)0x2" identifier != (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00016428;" goto statement_identifier ;)) (if_statement "if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;" if (parenthesized_expression "(unaff_s8 != (uint *)&DAT_00000008)" ( (binary_expression "unaff_s8 != (uint *)&DAT_00000008" identifier != (cast_expression "(uint *)&DAT_00000008" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000008" & identifier))) )) (goto_statement "goto LAB_000163d0;" goto statement_identifier ;)) (expression_statement "unaff_s8 = unaff_s6 + 3;" (assignment_expression "unaff_s8 = unaff_s6 + 3" identifier = (binary_expression "unaff_s6 + 3" identifier + number_literal)) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" { (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00016020;" goto statement_identifier ;) })) (if_statement "if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;" if (parenthesized_expression "(param_3 == (uint *)&DAT_00000005)" ( (binary_expression "param_3 == (uint *)&DAT_00000005" identifier == (cast_expression "(uint *)&DAT_00000005" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000005" & identifier))) )) (goto_statement "goto LAB_000165d0;" goto statement_identifier ;)) (if_statement "if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;" if (parenthesized_expression "(param_3 != (uint *)&DAT_00000006)" ( (binary_expression "param_3 != (uint *)&DAT_00000006" identifier != (cast_expression "(uint *)&DAT_00000006" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000006" & identifier))) )) (goto_statement "goto LAB_00016428;" goto statement_identifier ;)) (if_statement "if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;" if (parenthesized_expression "(unaff_s8 == (uint *)0x10)" ( (binary_expression "unaff_s8 == (uint *)0x10" identifier == (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015fd8;" goto statement_identifier ;)) (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "param_3 = (uint *)0x0;" (assignment_expression "param_3 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);" (call_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8)" (parenthesized_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9 + 0x14" (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9" (string_literal ""  Optimal stream write size: %u blocks\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(local_44,unaff_s8)" ( identifier , identifier ))) ;) }))) (labeled_statement "LAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" statement_identifier : (for_statement "for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" for ( ; (comma_expression "puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "puVar4 = local_44" identifier = identifier) , (comma_expression "local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "local_44 = param_2" identifier = identifier) , (comma_expression "unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "unaff_s4 = param_4" identifier = identifier) , (binary_expression "unaff_s1 == 0" identifier == number_literal)))) ; (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ) (compound_statement "{\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" { (labeled_statement "LAB_00015f98:\n      param_2 = local_44;" statement_identifier : (expression_statement "param_2 = local_44;" (assignment_expression "param_2 = local_44" identifier = identifier) ;)) (expression_statement "unaff_s4 = param_4;" (assignment_expression "unaff_s4 = param_4" identifier = identifier) ;) (if_statement "if (*(byte *)((int)local_44 + 2) == 0) break;" if (parenthesized_expression "(*(byte *)((int)local_44 + 2) == 0)" ( (binary_expression "*(byte *)((int)local_44 + 2) == 0" (pointer_expression "*(byte *)((int)local_44 + 2)" * (cast_expression "(byte *)((int)local_44 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_44 + 2)" ( (binary_expression "(int)local_44 + 2" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_4 != (uint *)0x0) goto LAB_00015ed8;" if (parenthesized_expression "(param_4 != (uint *)0x0)" ( (binary_expression "param_4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015ed8;" goto statement_identifier ;)) (expression_statement "puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);" (assignment_expression "puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4)" identifier = (cast_expression "(uint *)(uint)(*(byte *)local_44 >> 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(*(byte *)local_44 >> 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)local_44 >> 4)" ( (binary_expression "*(byte *)local_44 >> 4" (pointer_expression "*(byte *)local_44" * (cast_expression "(byte *)local_44" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) >> number_literal) ))))) ;) (if_statement "if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }" if (parenthesized_expression "(puVar4 != (uint *)0x3)" ( (binary_expression "puVar4 != (uint *)0x3" identifier != (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }" { (if_statement "if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }" if (parenthesized_expression "(puVar4 < (uint *)0x4)" ( (binary_expression "puVar4 < (uint *)0x4" identifier < (cast_expression "(uint *)0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }" { (expression_statement "local_58 = (uint *)0x10;" (assignment_expression "local_58 = (uint *)0x10" identifier = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" if (parenthesized_expression "(puVar4 == (uint *)0x2)" ( (binary_expression "puVar4 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }" { (labeled_statement "LAB_000163d0:\n            puVar4 = local_58;" statement_identifier : (expression_statement "puVar4 = local_58;" (assignment_expression "puVar4 = local_58" identifier = identifier) ;)) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;" (assignment_expression "iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "local_58 = puVar4;" (assignment_expression "local_58 = puVar4" identifier = identifier) ;) }) (else_clause "else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" else (compound_statement "{\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" { (labeled_statement "LAB_00016418:\n            local_58 = (uint *)0x10;" statement_identifier : (expression_statement "local_58 = (uint *)0x10;" (assignment_expression "local_58 = (uint *)0x10" identifier = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" statement_identifier : (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) ;)) (expression_statement "iVar2 = local_54 + 0x1d28;" (assignment_expression "iVar2 = local_54 + 0x1d28" identifier = (binary_expression "local_54 + 0x1d28" identifier + number_literal)) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) }))) (goto_statement "goto LAB_000163e8;" goto statement_identifier ;) })) (if_statement "if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;" if (parenthesized_expression "(puVar4 == (uint *)&DAT_00000005)" ( (binary_expression "puVar4 == (uint *)&DAT_00000005" identifier == (cast_expression "(uint *)&DAT_00000005" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000005" & identifier))) )) (goto_statement "goto LAB_00016448;" goto statement_identifier ;)) (if_statement "if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;" if (parenthesized_expression "(puVar4 != (uint *)&DAT_00000006)" ( (binary_expression "puVar4 != (uint *)&DAT_00000006" identifier != (cast_expression "(uint *)&DAT_00000006" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000006" & identifier))) )) (goto_statement "goto LAB_00016418;" goto statement_identifier ;)) (labeled_statement "LAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" statement_identifier : (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;)) (expression_statement "unaff_s8 = local_44 + 4;" (assignment_expression "unaff_s8 = local_44 + 4" identifier = (binary_expression "local_44 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" { (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (expression_statement "unaff_s4 = param_4;" (assignment_expression "unaff_s4 = param_4" identifier = identifier) ;) (labeled_statement "LAB_00016020:\n        (*pcVar6)(10);" statement_identifier : (expression_statement "(*pcVar6)(10);" (call_expression "(*pcVar6)(10)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(10)" ( number_literal ))) ;)) (goto_statement "goto LAB_0001602c;" goto statement_identifier ;) })) (labeled_statement "LAB_00016448:\n      puVar4 = (uint *)0x10;" statement_identifier : (expression_statement "puVar4 = (uint *)0x10;" (assignment_expression "puVar4 = (uint *)0x10" identifier = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" statement_identifier : (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) ;)) (expression_statement "iVar2 = local_48 + 0x1cac;" (assignment_expression "iVar2 = local_48 + 0x1cac" identifier = (binary_expression "local_48 + 0x1cac" identifier + number_literal)) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (expression_statement "local_58 = puVar4;" (assignment_expression "local_58 = puVar4" identifier = identifier) ;) (labeled_statement "LAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);" statement_identifier : (expression_statement "(*pcVar6)(iVar2,puVar4);" (call_expression "(*pcVar6)(iVar2,puVar4)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(iVar2,puVar4)" ( identifier , identifier ))) ;)) (expression_statement "param_3 = (uint *)0x0;" (assignment_expression "param_3 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);" (call_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58)" (parenthesized_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9 + 0x14" (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9" (string_literal ""  Optimal stream write size: %u blocks\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(local_44,local_58)" ( identifier , identifier ))) ;) }))) (expression_statement "param_3 = &local_38;" (assignment_expression "param_3 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (expression_statement "iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);" (assignment_expression "iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" identifier = (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" * (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 4" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }" { (expression_statement "unaff_s6 = (uint *)((int)param_2 + local_38);" (assignment_expression "unaff_s6 = (uint *)((int)param_2 + local_38)" identifier = (cast_expression "(uint *)((int)param_2 + local_38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + local_38)" ( (binary_expression "(int)param_2 + local_38" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "unaff_s8 = (uint *)(uint)(byte)*unaff_s6;" (assignment_expression "unaff_s8 = (uint *)(uint)(byte)*unaff_s6" identifier = (binary_expression "(uint *)(uint)(byte)*unaff_s6" (cast_expression "(uint *)(uint)(byte)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier )))) * identifier)) ;) (expression_statement "local_58 = unaff_s8;" (assignment_expression "local_58 = unaff_s8" identifier = identifier) ;) (if_statement "if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }" if (parenthesized_expression "((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2)" ( (binary_expression "(int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2" (cast_expression "(int)((int)unaff_s8 + local_38 + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s8 + local_38 + 3)" ( (binary_expression "(int)unaff_s8 + local_38 + 3" (binary_expression "(int)unaff_s8 + local_38" (cast_expression "(int)unaff_s8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))) < (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }" { (expression_statement "bVar1 = *(byte *)((int)unaff_s6 + 1);" (assignment_expression "bVar1 = *(byte *)((int)unaff_s6 + 1)" identifier = (pointer_expression "*(byte *)((int)unaff_s6 + 1)" * (cast_expression "(byte *)((int)unaff_s6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_44 = unaff_s6 + 1;" (assignment_expression "local_44 = unaff_s6 + 1" identifier = (binary_expression "unaff_s6 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }" { (expression_statement "in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);" (assignment_expression "in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6)" identifier = (call_expression "(uint)(*(byte *)unaff_s6 >> 4 == 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)unaff_s6 >> 4 == 6)" ( (binary_expression "*(byte *)unaff_s6 >> 4 == 6" (binary_expression "*(byte *)unaff_s6 >> 4" (pointer_expression "*(byte *)unaff_s6" * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) >> number_literal) == number_literal) )))) ;) }) (else_clause "else {\n          in_t2 = 0;\n        }" else (compound_statement "{\n          in_t2 = 0;\n        }" { (expression_statement "in_t2 = 0;" (assignment_expression "in_t2 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar3 = bVar1 & 0xf;" (assignment_expression "uVar3 = bVar1 & 0xf" identifier = (binary_expression "bVar1 & 0xf" identifier & number_literal)) ;) (if_statement "if (uVar3 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }" if (parenthesized_expression "(uVar3 < 0xb)" ( (binary_expression "uVar3 < 0xb" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }" { comment comment (expression_statement "iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);" (assignment_expression "iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" identifier = (call_expression "(*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" (parenthesized_expression "(*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))" ( (pointer_expression "*(code *)(local_60[uVar3] + in_t9 + 0x2bab0)" * (cast_expression "(code *)(local_60[uVar3] + in_t9 + 0x2bab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60[uVar3] + in_t9 + 0x2bab0)" ( (binary_expression "local_60[uVar3] + in_t9 + 0x2bab0" (binary_expression "local_60[uVar3] + in_t9" (subscript_expression "local_60[uVar3]" identifier [ identifier ]) + identifier) + number_literal) )))) )) (argument_list "(((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" ( (binary_expression "((uint)bVar1 << 0x1a) >> 0x1e" (parenthesized_expression "((uint)bVar1 << 0x1a)" ( (binary_expression "(uint)bVar1 << 0x1a" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) )) >> number_literal) , (binary_expression "(uint)param_3 & 0xf" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (return_statement "return iVar2;" return identifier ;) })) (labeled_statement "LAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;" statement_identifier : (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;)) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (goto_statement "goto LAB_00016030;" goto statement_identifier ;) })) (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , (binary_expression "(int)unaff_s2 - local_38" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) ;) (expression_statement "iVar2 = 0x61;" (assignment_expression "iVar2 = 0x61" identifier = number_literal) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) }) (else_clause "else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" else (compound_statement "{\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" { (expression_statement "puVar4 = (uint *)(local_34 >> 0x18);" (assignment_expression "puVar4 = (uint *)(local_34 >> 0x18)" identifier = (cast_expression "(uint *)(local_34 >> 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 >> 0x18)" ( (binary_expression "local_34 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "param_3 = puVar4;" (assignment_expression "param_3 = puVar4" identifier = identifier) ;) (if_statement "if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }" { (expression_statement "unaff_s2 = &local_2c;" (assignment_expression "unaff_s2 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28)" ( number_literal , (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;" (assignment_expression "unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "param_2 = local_4c;" (assignment_expression "param_2 = local_4c" identifier = identifier) ;) (while_statement "while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }" { (expression_statement "param_2 = (uint *)((int)param_2 + 1);" (assignment_expression "param_2 = (uint *)((int)param_2 + 1)" identifier = (cast_expression "(uint *)((int)param_2 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 1)" ( (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s1)" ( number_literal , identifier ))) ;) (if_statement "if (unaff_s2 == param_2) break;" if (parenthesized_expression "(unaff_s2 == param_2)" ( (binary_expression "unaff_s2 == param_2" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "param_3 = (uint *)(uint)*(byte *)param_2;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)param_2" identifier = (binary_expression "(uint *)(uint)*(byte *)param_2" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);" (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(10)" ( number_literal ))) ;) (expression_statement "local_60 = puVar4;" (assignment_expression "local_60 = puVar4" identifier = identifier) ;) })) (if_statement "if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" if (parenthesized_expression "(iVar2 == -2)" ( (binary_expression "iVar2 == -2" identifier == number_literal) )) (compound_statement "{\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }" { (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "iVar2 = 0x61;" (assignment_expression "iVar2 = 0x61" identifier = number_literal) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) }) (else_clause "else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" else (compound_statement "{\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" { (labeled_statement "LAB_00015f38:\n        iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) }))) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "int decode_dev_ids(char *print_if_found,uint8_t *buff,int len,int m_assoc,int m_desig_type,\n                  int m_code_set,opts_t *op)\n\n{\n  byte bVar1;\n  int *piVar2;\n  undefined *puVar3;\n  int iVar4;\n  uint uVar5;\n  byte *pbVar6;\n  undefined *puVar7;\n  byte *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  byte *unaff_s2;\n  undefined *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s6;\n  code *pcVar8;\n  undefined1 *puVar9;\n  byte *unaff_s8;\n  int in_stack_ffffff94;\n  undefined1 *puVar10;\n  int *local_60;\n  undefined *local_5c;\n  byte *local_58;\n  undefined *local_54;\n  int *local_50;\n  byte *local_4c;\n  undefined *local_48;\n  byte *local_44;\n  uint16_t u;\n  int off;\n  uint8_t sas_tport_addr [8];\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00039a5c;\n  puVar9 = &_gp;\n  puVar10 = &_gp;\n  local_2c = *(int *)PTR___stack_chk_guard_00039a5c;\n  local_58 = in_t1;\n  if (*(char *)(m_desig_type + 4) != '\0') {\n    local_4c = sas_tport_addr;\n    unaff_s1 = 0;\n    local_54 = PTR_LAB_00039948;\n    local_50 = (int *)0x0;\n    unaff_s3 = PTR_LAB_00039948 + 0x1c30;\n    local_48 = PTR_LAB_00039948;\n    local_5c = PTR_LAB_00039948 + 0x1c28;\n    sas_tport_addr[0] = '\0';\n    sas_tport_addr[1] = '\0';\n    sas_tport_addr[2] = '\0';\n    sas_tport_addr[3] = '\0';\n    local_60 = (int *)(PTR_LAB_00039948 + 0x5e90);\n    sas_tport_addr[4] = '\0';\n    sas_tport_addr[5] = '\0';\n    sas_tport_addr[6] = '\0';\n    sas_tport_addr[7] = '\0';\n    off = -1;\n    pbVar6 = (byte *)m_assoc;\n    local_44 = buff;\n    unaff_s2 = (byte *)len;\n    unaff_s6 = PTR_LAB_00039948;\n    goto LAB_00015f98;\n  }\n  if (buff[2] == '\0') {\n    puVar9 = puVar10;\n    iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp);\n    pbVar6 = (byte *)m_assoc;\n    local_58 = in_t1;\n    puVar10 = puVar9;\n  }\n  else {\n    iVar4 = *(int *)(m_desig_type + 0x20);\n    pbVar6 = (byte *)m_assoc;\n    if (iVar4 != 0) {\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = pbVar6;\n    if (local_2c == *(int *)puVar3) {\n      return iVar4;\n    }\n    iVar4 = local_2c;\n    pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();\n    m_assoc = (int)unaff_s4;\n    if ((int *)len == (int *)0x3) {\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }\n    else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }\nLAB_00016030:\n    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }\n    len = (int)&off;\n    m_assoc = (int)unaff_s4;\n    iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);\n    puVar9 = puVar10;\n    if (iVar4 == 0) {\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }\n    else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int decode_dev_ids(char *print_if_found,uint8_t *buff,int len,int m_assoc,int m_desig_type,\n                  int m_code_set,opts_t *op)\n\n{\n  byte bVar1;\n  int *piVar2;\n  undefined *puVar3;\n  int iVar4;\n  uint uVar5;\n  byte *pbVar6;\n  undefined *puVar7;\n  byte *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  byte *unaff_s2;\n  undefined *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s6;\n  code *pcVar8;\n  undefined1 *puVar9;\n  byte *unaff_s8;\n  int in_stack_ffffff94;\n  undefined1 *puVar10;\n  int *local_60;\n  undefined *local_5c;\n  byte *local_58;\n  undefined *local_54;\n  int *local_50;\n  byte *local_4c;\n  undefined *local_48;\n  byte *local_44;\n  uint16_t u;\n  int off;\n  uint8_t sas_tport_addr [8];\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00039a5c;\n  puVar9 = &_gp;\n  puVar10 = &_gp;\n  local_2c = *(int *)PTR___stack_chk_guard_00039a5c;\n  local_58 = in_t1;\n  if (*(char *)(m_desig_type + 4) != '\0') {\n    local_4c = sas_tport_addr;\n    unaff_s1 = 0;\n    local_54 = PTR_LAB_00039948;\n    local_50 = (int *)0x0;\n    unaff_s3 = PTR_LAB_00039948 + 0x1c30;\n    local_48 = PTR_LAB_00039948;\n    local_5c = PTR_LAB_00039948 + 0x1c28;\n    sas_tport_addr[0] = '\0';\n    sas_tport_addr[1] = '\0';\n    sas_tport_addr[2] = '\0';\n    sas_tport_addr[3] = '\0';\n    local_60 = (int *)(PTR_LAB_00039948 + 0x5e90);\n    sas_tport_addr[4] = '\0';\n    sas_tport_addr[5] = '\0';\n    sas_tport_addr[6] = '\0';\n    sas_tport_addr[7] = '\0';\n    off = -1;\n    pbVar6 = (byte *)m_assoc;\n    local_44 = buff;\n    unaff_s2 = (byte *)len;\n    unaff_s6 = PTR_LAB_00039948;\n    goto LAB_00015f98;\n  }\n  if (buff[2] == '\0') {\n    puVar9 = puVar10;\n    iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp);\n    pbVar6 = (byte *)m_assoc;\n    local_58 = in_t1;\n    puVar10 = puVar9;\n  }\n  else {\n    iVar4 = *(int *)(m_desig_type + 0x20);\n    pbVar6 = (byte *)m_assoc;\n    if (iVar4 != 0) {\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = pbVar6;\n    if (local_2c == *(int *)puVar3) {\n      return iVar4;\n    }\n    iVar4 = local_2c;\n    pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();\n    m_assoc = (int)unaff_s4;\n    if ((int *)len == (int *)0x3) {\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }\n    else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }\nLAB_00016030:\n    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }\n    len = (int)&off;\n    m_assoc = (int)unaff_s4;\n    iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);\n    puVar9 = puVar10;\n    if (iVar4 == 0) {\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }\n    else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }\n  } while( true );\n}" primitive_type (function_declarator "decode_dev_ids(char *print_if_found,uint8_t *buff,int len,int m_assoc,int m_desig_type,\n                  int m_code_set,opts_t *op)" identifier (parameter_list "(char *print_if_found,uint8_t *buff,int len,int m_assoc,int m_desig_type,\n                  int m_code_set,opts_t *op)" ( (parameter_declaration "char *print_if_found" primitive_type (pointer_declarator "*print_if_found" * identifier)) , (parameter_declaration "uint8_t *buff" primitive_type (pointer_declarator "*buff" * identifier)) , (parameter_declaration "int len" primitive_type identifier) , (parameter_declaration "int m_assoc" primitive_type identifier) , (parameter_declaration "int m_desig_type" primitive_type identifier) , (parameter_declaration "int m_code_set" primitive_type identifier) , (parameter_declaration "opts_t *op" type_identifier (pointer_declarator "*op" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  undefined *puVar3;\n  int iVar4;\n  uint uVar5;\n  byte *pbVar6;\n  undefined *puVar7;\n  byte *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  byte *unaff_s2;\n  undefined *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s6;\n  code *pcVar8;\n  undefined1 *puVar9;\n  byte *unaff_s8;\n  int in_stack_ffffff94;\n  undefined1 *puVar10;\n  int *local_60;\n  undefined *local_5c;\n  byte *local_58;\n  undefined *local_54;\n  int *local_50;\n  byte *local_4c;\n  undefined *local_48;\n  byte *local_44;\n  uint16_t u;\n  int off;\n  uint8_t sas_tport_addr [8];\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00039a5c;\n  puVar9 = &_gp;\n  puVar10 = &_gp;\n  local_2c = *(int *)PTR___stack_chk_guard_00039a5c;\n  local_58 = in_t1;\n  if (*(char *)(m_desig_type + 4) != '\0') {\n    local_4c = sas_tport_addr;\n    unaff_s1 = 0;\n    local_54 = PTR_LAB_00039948;\n    local_50 = (int *)0x0;\n    unaff_s3 = PTR_LAB_00039948 + 0x1c30;\n    local_48 = PTR_LAB_00039948;\n    local_5c = PTR_LAB_00039948 + 0x1c28;\n    sas_tport_addr[0] = '\0';\n    sas_tport_addr[1] = '\0';\n    sas_tport_addr[2] = '\0';\n    sas_tport_addr[3] = '\0';\n    local_60 = (int *)(PTR_LAB_00039948 + 0x5e90);\n    sas_tport_addr[4] = '\0';\n    sas_tport_addr[5] = '\0';\n    sas_tport_addr[6] = '\0';\n    sas_tport_addr[7] = '\0';\n    off = -1;\n    pbVar6 = (byte *)m_assoc;\n    local_44 = buff;\n    unaff_s2 = (byte *)len;\n    unaff_s6 = PTR_LAB_00039948;\n    goto LAB_00015f98;\n  }\n  if (buff[2] == '\0') {\n    puVar9 = puVar10;\n    iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp);\n    pbVar6 = (byte *)m_assoc;\n    local_58 = in_t1;\n    puVar10 = puVar9;\n  }\n  else {\n    iVar4 = *(int *)(m_desig_type + 0x20);\n    pbVar6 = (byte *)m_assoc;\n    if (iVar4 != 0) {\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = pbVar6;\n    if (local_2c == *(int *)puVar3) {\n      return iVar4;\n    }\n    iVar4 = local_2c;\n    pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();\n    m_assoc = (int)unaff_s4;\n    if ((int *)len == (int *)0x3) {\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }\n    else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }\nLAB_00016030:\n    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }\n    len = (int)&off;\n    m_assoc = (int)unaff_s4;\n    iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);\n    puVar9 = puVar10;\n    if (iVar4 == 0) {\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }\n    else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte *in_t1;" type_identifier (pointer_declarator "*in_t1" * identifier) ;) (declaration "uint in_t2;" type_identifier identifier ;) (declaration "int unaff_s1;" primitive_type identifier ;) (declaration "byte *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "byte *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "byte *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "int in_stack_ffffff94;" primitive_type identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "byte *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "byte *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "byte *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "uint16_t u;" primitive_type identifier ;) (declaration "int off;" primitive_type identifier ;) (declaration "uint8_t sas_tport_addr [8];" primitive_type (array_declarator "sas_tport_addr [8]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00039a5c;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00039a5c" identifier = identifier) ;) (expression_statement "puVar9 = &_gp;" (assignment_expression "puVar9 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "puVar10 = &_gp;" (assignment_expression "puVar10 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00039a5c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00039a5c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00039a5c" * (cast_expression "(int *)PTR___stack_chk_guard_00039a5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) (if_statement "if (*(char *)(m_desig_type + 4) != '\0') {\n    local_4c = sas_tport_addr;\n    unaff_s1 = 0;\n    local_54 = PTR_LAB_00039948;\n    local_50 = (int *)0x0;\n    unaff_s3 = PTR_LAB_00039948 + 0x1c30;\n    local_48 = PTR_LAB_00039948;\n    local_5c = PTR_LAB_00039948 + 0x1c28;\n    sas_tport_addr[0] = '\0';\n    sas_tport_addr[1] = '\0';\n    sas_tport_addr[2] = '\0';\n    sas_tport_addr[3] = '\0';\n    local_60 = (int *)(PTR_LAB_00039948 + 0x5e90);\n    sas_tport_addr[4] = '\0';\n    sas_tport_addr[5] = '\0';\n    sas_tport_addr[6] = '\0';\n    sas_tport_addr[7] = '\0';\n    off = -1;\n    pbVar6 = (byte *)m_assoc;\n    local_44 = buff;\n    unaff_s2 = (byte *)len;\n    unaff_s6 = PTR_LAB_00039948;\n    goto LAB_00015f98;\n  }" if (parenthesized_expression "(*(char *)(m_desig_type + 4) != '\0')" ( (binary_expression "*(char *)(m_desig_type + 4) != '\0'" (pointer_expression "*(char *)(m_desig_type + 4)" * (cast_expression "(char *)(m_desig_type + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(m_desig_type + 4)" ( (binary_expression "m_desig_type + 4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = sas_tport_addr;\n    unaff_s1 = 0;\n    local_54 = PTR_LAB_00039948;\n    local_50 = (int *)0x0;\n    unaff_s3 = PTR_LAB_00039948 + 0x1c30;\n    local_48 = PTR_LAB_00039948;\n    local_5c = PTR_LAB_00039948 + 0x1c28;\n    sas_tport_addr[0] = '\0';\n    sas_tport_addr[1] = '\0';\n    sas_tport_addr[2] = '\0';\n    sas_tport_addr[3] = '\0';\n    local_60 = (int *)(PTR_LAB_00039948 + 0x5e90);\n    sas_tport_addr[4] = '\0';\n    sas_tport_addr[5] = '\0';\n    sas_tport_addr[6] = '\0';\n    sas_tport_addr[7] = '\0';\n    off = -1;\n    pbVar6 = (byte *)m_assoc;\n    local_44 = buff;\n    unaff_s2 = (byte *)len;\n    unaff_s6 = PTR_LAB_00039948;\n    goto LAB_00015f98;\n  }" { (expression_statement "local_4c = sas_tport_addr;" (assignment_expression "local_4c = sas_tport_addr" identifier = identifier) ;) (expression_statement "unaff_s1 = 0;" (assignment_expression "unaff_s1 = 0" identifier = number_literal) ;) (expression_statement "local_54 = PTR_LAB_00039948;" (assignment_expression "local_54 = PTR_LAB_00039948" identifier = identifier) ;) (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s3 = PTR_LAB_00039948 + 0x1c30;" (assignment_expression "unaff_s3 = PTR_LAB_00039948 + 0x1c30" identifier = (binary_expression "PTR_LAB_00039948 + 0x1c30" identifier + number_literal)) ;) (expression_statement "local_48 = PTR_LAB_00039948;" (assignment_expression "local_48 = PTR_LAB_00039948" identifier = identifier) ;) (expression_statement "local_5c = PTR_LAB_00039948 + 0x1c28;" (assignment_expression "local_5c = PTR_LAB_00039948 + 0x1c28" identifier = (binary_expression "PTR_LAB_00039948 + 0x1c28" identifier + number_literal)) ;) (expression_statement "sas_tport_addr[0] = '\0';" (assignment_expression "sas_tport_addr[0] = '\0'" (subscript_expression "sas_tport_addr[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sas_tport_addr[1] = '\0';" (assignment_expression "sas_tport_addr[1] = '\0'" (subscript_expression "sas_tport_addr[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sas_tport_addr[2] = '\0';" (assignment_expression "sas_tport_addr[2] = '\0'" (subscript_expression "sas_tport_addr[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sas_tport_addr[3] = '\0';" (assignment_expression "sas_tport_addr[3] = '\0'" (subscript_expression "sas_tport_addr[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_60 = (int *)(PTR_LAB_00039948 + 0x5e90);" (assignment_expression "local_60 = (int *)(PTR_LAB_00039948 + 0x5e90)" identifier = (cast_expression "(int *)(PTR_LAB_00039948 + 0x5e90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00039948 + 0x5e90)" ( (binary_expression "PTR_LAB_00039948 + 0x5e90" identifier + number_literal) )))) ;) (expression_statement "sas_tport_addr[4] = '\0';" (assignment_expression "sas_tport_addr[4] = '\0'" (subscript_expression "sas_tport_addr[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sas_tport_addr[5] = '\0';" (assignment_expression "sas_tport_addr[5] = '\0'" (subscript_expression "sas_tport_addr[5]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sas_tport_addr[6] = '\0';" (assignment_expression "sas_tport_addr[6] = '\0'" (subscript_expression "sas_tport_addr[6]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sas_tport_addr[7] = '\0';" (assignment_expression "sas_tport_addr[7] = '\0'" (subscript_expression "sas_tport_addr[7]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "off = -1;" (assignment_expression "off = -1" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)m_assoc;" (assignment_expression "pbVar6 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44 = buff;" (assignment_expression "local_44 = buff" identifier = identifier) ;) (expression_statement "unaff_s2 = (byte *)len;" (assignment_expression "unaff_s2 = (byte *)len" identifier = (cast_expression "(byte *)len" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "unaff_s6 = PTR_LAB_00039948;" (assignment_expression "unaff_s6 = PTR_LAB_00039948" identifier = identifier) ;) (goto_statement "goto LAB_00015f98;" goto statement_identifier ;) })) (if_statement "if (buff[2] == '\0') {\n    puVar9 = puVar10;\n    iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp);\n    pbVar6 = (byte *)m_assoc;\n    local_58 = in_t1;\n    puVar10 = puVar9;\n  }\n  else {\n    iVar4 = *(int *)(m_desig_type + 0x20);\n    pbVar6 = (byte *)m_assoc;\n    if (iVar4 != 0) {\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }\n  }" if (parenthesized_expression "(buff[2] == '\0')" ( (binary_expression "buff[2] == '\0'" (subscript_expression "buff[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar9 = puVar10;\n    iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp);\n    pbVar6 = (byte *)m_assoc;\n    local_58 = in_t1;\n    puVar10 = puVar9;\n  }" { (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp);" (assignment_expression "iVar4 = decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp)" identifier = (call_expression "decode_dev_ids(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp)" identifier (argument_list "(print_if_found,buff,len,m_assoc,m_desig_type,in_stack_ffffff94,\n                           (opts_t *)&_gp)" ( identifier , identifier , identifier , identifier , identifier , identifier , (cast_expression "(opts_t *)&_gp" ( (type_descriptor "opts_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&_gp" & identifier)) )))) ;) (expression_statement "pbVar6 = (byte *)m_assoc;" (assignment_expression "pbVar6 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }) (else_clause "else {\n    iVar4 = *(int *)(m_desig_type + 0x20);\n    pbVar6 = (byte *)m_assoc;\n    if (iVar4 != 0) {\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }\n  }" else (compound_statement "{\n    iVar4 = *(int *)(m_desig_type + 0x20);\n    pbVar6 = (byte *)m_assoc;\n    if (iVar4 != 0) {\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }\n  }" { (expression_statement "iVar4 = *(int *)(m_desig_type + 0x20);" (assignment_expression "iVar4 = *(int *)(m_desig_type + 0x20)" identifier = (pointer_expression "*(int *)(m_desig_type + 0x20)" * (cast_expression "(int *)(m_desig_type + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(m_desig_type + 0x20)" ( (binary_expression "m_desig_type + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)m_assoc;" (assignment_expression "pbVar6 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar4 != 0) {\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);\n      local_58 = in_t1;\n      puVar9 = puVar10;\n      goto LAB_00015f38;\n    }" { (expression_statement "(*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4);" (call_expression "(*(code *)PTR_pr2serr_00039a44)(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4)" (parenthesized_expression "(*(code *)PTR_pr2serr_00039a44)" ( (pointer_expression "*(code *)PTR_pr2serr_00039a44" * (cast_expression "(code *)PTR_pr2serr_00039a44" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00039948 + 0x1de0,PTR_LAB_00039948 + 0x65e4)" ( (binary_expression "PTR_LAB_00039948 + 0x1de0" identifier + number_literal) , (binary_expression "PTR_LAB_00039948 + 0x65e4" identifier + number_literal) ))) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (goto_statement "goto LAB_00015f38;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00015ed8:\n  do {\n    local_44 = pbVar6;\n    if (local_2c == *(int *)puVar3) {\n      return iVar4;\n    }\n    iVar4 = local_2c;\n    pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();\n    m_assoc = (int)unaff_s4;\n    if ((int *)len == (int *)0x3) {\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }\n    else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }\nLAB_00016030:\n    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }\n    len = (int)&off;\n    m_assoc = (int)unaff_s4;\n    iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);\n    puVar9 = puVar10;\n    if (iVar4 == 0) {\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }\n    else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    local_44 = pbVar6;\n    if (local_2c == *(int *)puVar3) {\n      return iVar4;\n    }\n    iVar4 = local_2c;\n    pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();\n    m_assoc = (int)unaff_s4;\n    if ((int *)len == (int *)0x3) {\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }\n    else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }\nLAB_00016030:\n    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }\n    len = (int)&off;\n    m_assoc = (int)unaff_s4;\n    iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);\n    puVar9 = puVar10;\n    if (iVar4 == 0) {\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }\n    else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    local_44 = pbVar6;\n    if (local_2c == *(int *)puVar3) {\n      return iVar4;\n    }\n    iVar4 = local_2c;\n    pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();\n    m_assoc = (int)unaff_s4;\n    if ((int *)len == (int *)0x3) {\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }\n    else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }\nLAB_00016030:\n    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }\n    len = (int)&off;\n    m_assoc = (int)unaff_s4;\n    iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);\n    puVar9 = puVar10;\n    if (iVar4 == 0) {\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }\n    else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }\n  }" { (expression_statement "local_44 = pbVar6;" (assignment_expression "local_44 = pbVar6" identifier = identifier) ;) (if_statement "if (local_2c == *(int *)puVar3) {\n      return iVar4;\n    }" if (parenthesized_expression "(local_2c == *(int *)puVar3)" ( (binary_expression "local_2c == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return iVar4;\n    }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "iVar4 = local_2c;" (assignment_expression "iVar4 = local_2c" identifier = identifier) ;) (expression_statement "pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))();" (assignment_expression "pbVar6 = (byte *)(**(code **)(puVar9 + -0x7ec8))()" identifier = (cast_expression "(byte *)(**(code **)(puVar9 + -0x7ec8))()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar9 + -0x7ec8))()" (parenthesized_expression "(**(code **)(puVar9 + -0x7ec8))" ( (pointer_expression "**(code **)(puVar9 + -0x7ec8)" * (pointer_expression "*(code **)(puVar9 + -0x7ec8)" * (cast_expression "(code **)(puVar9 + -0x7ec8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7ec8)" ( (binary_expression "puVar9 + -0x7ec8" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "m_assoc = (int)unaff_s4;" (assignment_expression "m_assoc = (int)unaff_s4" identifier = (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((int *)len == (int *)0x3) {\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }\n    else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }" if (parenthesized_expression "((int *)len == (int *)0x3)" ( (binary_expression "(int *)len == (int *)0x3" (cast_expression "(int *)len" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(int *)0x3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000165d0:\n      pbVar6 = local_58;\n      if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      len = (uint)sas_tport_addr._0_4_ >> 0x18;\n      if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }\n    }" { (labeled_statement "LAB_000165d0:\n      pbVar6 = local_58;" statement_identifier : (expression_statement "pbVar6 = local_58;" (assignment_expression "pbVar6 = local_58" identifier = identifier) ;)) (if_statement "if (unaff_s8 != &DAT_00000008) goto LAB_0001644c;" if (parenthesized_expression "(unaff_s8 != &DAT_00000008)" ( (binary_expression "unaff_s8 != &DAT_00000008" identifier != (pointer_expression "&DAT_00000008" & identifier)) )) (goto_statement "goto LAB_0001644c;" goto statement_identifier ;)) (if_statement "if ((in_t2 == 0) || (iVar4 != 1)) {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }" if (parenthesized_expression "((in_t2 == 0) || (iVar4 != 1))" ( (binary_expression "(in_t2 == 0) || (iVar4 != 1)" (parenthesized_expression "(in_t2 == 0)" ( (binary_expression "in_t2 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) ))) )) (compound_statement "{\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }" { (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,local_5c);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,local_5c)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s8 = local_44 + 8;" (assignment_expression "unaff_s8 = local_44 + 8" identifier = (binary_expression "local_44 + 8" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);" do (compound_statement "{\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        }" { (expression_statement "len = (int)*unaff_s6;" (assignment_expression "len = (int)*unaff_s6" identifier = (cast_expression "(int)*unaff_s6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*unaff_s6" * identifier))) ;) (expression_statement "unaff_s6 = unaff_s6 + 1;" (assignment_expression "unaff_s6 = unaff_s6 + 1" identifier = (binary_expression "unaff_s6 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar10 + -0x7f38))(1,unaff_s3);" (call_expression "(**(code **)(puVar10 + -0x7f38))(1,unaff_s3)" (parenthesized_expression "(**(code **)(puVar10 + -0x7f38))" ( (pointer_expression "**(code **)(puVar10 + -0x7f38)" * (pointer_expression "*(code **)(puVar10 + -0x7f38)" * (cast_expression "(code **)(puVar10 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f38)" ( (binary_expression "puVar10 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s6 != unaff_s8)" ( (binary_expression "unaff_s6 != unaff_s8" identifier != identifier) )) ;) (expression_statement "pcVar8 = *(code **)(puVar10 + -0x7f20);" (assignment_expression "pcVar8 = *(code **)(puVar10 + -0x7f20)" identifier = (pointer_expression "*(code **)(puVar10 + -0x7f20)" * (cast_expression "(code **)(puVar10 + -0x7f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f20)" ( (binary_expression "puVar10 + -0x7f20" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00016020;" goto statement_identifier ;) })) (expression_statement "len = (uint)sas_tport_addr._0_4_ >> 0x18;" (assignment_expression "len = (uint)sas_tport_addr._0_4_ >> 0x18" identifier = (binary_expression "(uint)sas_tport_addr._0_4_ >> 0x18" (cast_expression "(uint)sas_tport_addr._0_4_" ( (type_descriptor "uint" type_identifier) ) (field_expression "sas_tport_addr._0_4_" identifier . field_identifier)) >> number_literal)) ;) (if_statement "if (local_50 == (int *)0x0) {\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }\n      else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }" if (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }\n        sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);\n        unaff_s1 = unaff_s1 + 1;\n        sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);\n      }" { (if_statement "if ((int *)len != (int *)0x0) {\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }" if (parenthesized_expression "((int *)len != (int *)0x0)" ( (binary_expression "(int *)len != (int *)0x0" (cast_expression "(int *)len" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          unaff_s8 = (byte *)&local_2c;\n          (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n          pbVar6 = local_4c;\n          puVar9 = puVar10;\n          while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }\n          (**(code **)(puVar9 + -0x7f20))(10);\n          puVar10 = puVar9;\n        }" { (expression_statement "unaff_s8 = (byte *)&local_2c;" (assignment_expression "unaff_s8 = (byte *)&local_2c" identifier = (cast_expression "(byte *)&local_2c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_2c" & identifier))) ;) (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,local_5c);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,local_5c)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "pbVar6 = local_4c;" (assignment_expression "pbVar6 = local_4c" identifier = identifier) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (while_statement "while( true ) {\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pbVar6 = pbVar6 + 1;\n            (**(code **)(puVar9 + -0x7f38))(1,unaff_s3);\n            if (unaff_s8 == pbVar6) break;\n            len = (int)*pbVar6;\n          }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,unaff_s3);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,unaff_s3)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) (if_statement "if (unaff_s8 == pbVar6) break;" if (parenthesized_expression "(unaff_s8 == pbVar6)" ( (binary_expression "unaff_s8 == pbVar6" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "len = (int)*pbVar6;" (assignment_expression "len = (int)*pbVar6" identifier = (cast_expression "(int)*pbVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pbVar6" * identifier))) ;) })) (expression_statement "(**(code **)(puVar9 + -0x7f20))(10);" (call_expression "(**(code **)(puVar9 + -0x7f20))(10)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f20))" ( (pointer_expression "**(code **)(puVar9 + -0x7f20)" * (pointer_expression "*(code **)(puVar9 + -0x7f20)" * (cast_expression "(code **)(puVar9 + -0x7f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f20)" ( (binary_expression "puVar9 + -0x7f20" identifier + number_literal) ))))) )) (argument_list "(10)" ( number_literal ))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) })) (expression_statement "sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4);" (assignment_expression "sas_tport_addr._0_4_ = *(undefined4 *)(unaff_s6 + 4)" (field_expression "sas_tport_addr._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(unaff_s6 + 4)" * (cast_expression "(undefined4 *)(unaff_s6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6 + 4)" ( (binary_expression "unaff_s6 + 4" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8);" (assignment_expression "sas_tport_addr._4_4_ = *(undefined4 *)(unaff_s6 + 8)" (field_expression "sas_tport_addr._4_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(unaff_s6 + 8)" * (cast_expression "(undefined4 *)(unaff_s6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6 + 8)" ( (binary_expression "unaff_s6 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }" else (compound_statement "{\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 8;\n        unaff_s6 = local_44;\n        puVar9 = puVar10;\n        do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        len = (int)local_50;\n        (**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);\n        local_50 = (int *)0x0;\n        puVar10 = puVar9;\n      }" { (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,local_5c);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,local_5c)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s8 = local_44 + 8;" (assignment_expression "unaff_s8 = local_44 + 8" identifier = (binary_expression "local_44 + 8" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (do_statement "do {\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          bVar1 = *unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);\n        }" { (expression_statement "bVar1 = *unaff_s6;" (assignment_expression "bVar1 = *unaff_s6" identifier = (pointer_expression "*unaff_s6" * identifier)) ;) (expression_statement "unaff_s6 = unaff_s6 + 1;" (assignment_expression "unaff_s6 = unaff_s6 + 1" identifier = (binary_expression "unaff_s6 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,unaff_s3,bVar1)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,unaff_s3,bVar1)" ( number_literal , identifier , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "len = (int)local_50;" (assignment_expression "len = (int)local_50" identifier = (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar9 + -0x7fc8) + 0x1ce8)" ( number_literal , (binary_expression "*(int *)(puVar9 + -0x7fc8) + 0x1ce8" (pointer_expression "*(int *)(puVar9 + -0x7fc8)" * (cast_expression "(int *)(puVar9 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -0x7fc8)" ( (binary_expression "puVar9 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }))) }) (else_clause "else {\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }" else (compound_statement "{\n      if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }\n      if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;\n      if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;\n      (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);\n      len = 0;\n      unaff_s1 = unaff_s1 + 1;\n      puVar9 = puVar10;\n      (**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);\n      puVar10 = puVar9;\n    }" { (if_statement "if ((uint)len < (int *)0x4) {\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }" if (parenthesized_expression "((uint)len < (int *)0x4)" ( (binary_expression "(uint)len < (int *)0x4" (cast_expression "(uint)len" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(int *)0x4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if ((int *)len != (int *)0x2) goto LAB_00016428;\n        if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 0xc;\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        goto LAB_00016020;\n      }" { (if_statement "if ((int *)len != (int *)0x2) goto LAB_00016428;" if (parenthesized_expression "((int *)len != (int *)0x2)" ( (binary_expression "(int *)len != (int *)0x2" (cast_expression "(int *)len" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00016428;" goto statement_identifier ;)) (if_statement "if (unaff_s8 != &DAT_00000008) goto LAB_000163d0;" if (parenthesized_expression "(unaff_s8 != &DAT_00000008)" ( (binary_expression "unaff_s8 != &DAT_00000008" identifier != (pointer_expression "&DAT_00000008" & identifier)) )) (goto_statement "goto LAB_000163d0;" goto statement_identifier ;)) (expression_statement "unaff_s8 = unaff_s6 + 0xc;" (assignment_expression "unaff_s8 = unaff_s6 + 0xc" identifier = (binary_expression "unaff_s6 + 0xc" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,local_5c);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,local_5c)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        }" { (expression_statement "len = (int)*unaff_s6;" (assignment_expression "len = (int)*unaff_s6" identifier = (cast_expression "(int)*unaff_s6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*unaff_s6" * identifier))) ;) (expression_statement "unaff_s6 = unaff_s6 + 1;" (assignment_expression "unaff_s6 = unaff_s6 + 1" identifier = (binary_expression "unaff_s6 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar10 + -0x7f38))(1,unaff_s3);" (call_expression "(**(code **)(puVar10 + -0x7f38))(1,unaff_s3)" (parenthesized_expression "(**(code **)(puVar10 + -0x7f38))" ( (pointer_expression "**(code **)(puVar10 + -0x7f38)" * (pointer_expression "*(code **)(puVar10 + -0x7f38)" * (cast_expression "(code **)(puVar10 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f38)" ( (binary_expression "puVar10 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "pcVar8 = *(code **)(puVar10 + -0x7f20);" (assignment_expression "pcVar8 = *(code **)(puVar10 + -0x7f20)" identifier = (pointer_expression "*(code **)(puVar10 + -0x7f20)" * (cast_expression "(code **)(puVar10 + -0x7f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f20)" ( (binary_expression "puVar10 + -0x7f20" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00016020;" goto statement_identifier ;) })) (if_statement "if ((undefined1 *)len == &DAT_00000005) goto LAB_000165d0;" if (parenthesized_expression "((undefined1 *)len == &DAT_00000005)" ( (binary_expression "(undefined1 *)len == &DAT_00000005" (cast_expression "(undefined1 *)len" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (pointer_expression "&DAT_00000005" & identifier)) )) (goto_statement "goto LAB_000165d0;" goto statement_identifier ;)) (if_statement "if ((undefined1 *)len != &DAT_00000006) goto LAB_00016428;" if (parenthesized_expression "((undefined1 *)len != &DAT_00000006)" ( (binary_expression "(undefined1 *)len != &DAT_00000006" (cast_expression "(undefined1 *)len" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (pointer_expression "&DAT_00000006" & identifier)) )) (goto_statement "goto LAB_00016428;" goto statement_identifier ;)) (if_statement "if (unaff_s8 == (byte *)0x10) goto LAB_00015fd8;" if (parenthesized_expression "(unaff_s8 == (byte *)0x10)" ( (binary_expression "unaff_s8 == (byte *)0x10" identifier == (cast_expression "(byte *)0x10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015fd8;" goto statement_identifier ;)) (expression_statement "(**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8);" (call_expression "(**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8)" (parenthesized_expression "(**(code **)(puVar9 + -0x7ecc))" ( (pointer_expression "**(code **)(puVar9 + -0x7ecc)" * (pointer_expression "*(code **)(puVar9 + -0x7ecc)" * (cast_expression "(code **)(puVar9 + -0x7ecc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7ecc)" ( (binary_expression "puVar9 + -0x7ecc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar9 + -0x7fc8) + 0x1cf0,unaff_s8)" ( (binary_expression "*(int *)(puVar9 + -0x7fc8) + 0x1cf0" (pointer_expression "*(int *)(puVar9 + -0x7fc8)" * (cast_expression "(int *)(puVar9 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -0x7fc8)" ( (binary_expression "puVar9 + -0x7fc8" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "len = 0;" (assignment_expression "len = 0" identifier = number_literal) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "(**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8);" (call_expression "(**(code **)(puVar10 + -0x7f60))(local_44,unaff_s8)" (parenthesized_expression "(**(code **)(puVar10 + -0x7f60))" ( (pointer_expression "**(code **)(puVar10 + -0x7f60)" * (pointer_expression "*(code **)(puVar10 + -0x7f60)" * (cast_expression "(code **)(puVar10 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f60)" ( (binary_expression "puVar10 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "(local_44,unaff_s8)" ( identifier , identifier ))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }))) (labeled_statement "LAB_00016030:\n    for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }" statement_identifier : (for_statement "for (; pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }" for ( ; (comma_expression "pbVar6 = local_44, local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0" (assignment_expression "pbVar6 = local_44" identifier = identifier) , (comma_expression "local_44 = buff, unaff_s4 = (byte *)m_assoc, unaff_s1 == 0" (assignment_expression "local_44 = buff" identifier = identifier) , (comma_expression "unaff_s4 = (byte *)m_assoc, unaff_s1 == 0" (assignment_expression "unaff_s4 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "unaff_s1 == 0" identifier == number_literal)))) ; (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ) (compound_statement "{\nLAB_00015f98:\n      buff = local_44;\n      unaff_s4 = (byte *)m_assoc;\n      if (local_44[2] == 0) break;\n      iVar4 = 0;\n      if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;\n      pbVar6 = (byte *)(uint)(*local_44 >> 4);\n      if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      pbVar6 = (byte *)0x10;\nLAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);\n      puVar7 = local_48 + 0x1cac;\n      m_assoc = (int)unaff_s4;\n      puVar9 = puVar10;\n      local_58 = pbVar6;\nLAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);\n      len = 0;\n      (**(code **)(puVar9 + -0x7f60))(local_44,local_58);\n      puVar10 = puVar9;\n    }" { (labeled_statement "LAB_00015f98:\n      buff = local_44;" statement_identifier : (expression_statement "buff = local_44;" (assignment_expression "buff = local_44" identifier = identifier) ;)) (expression_statement "unaff_s4 = (byte *)m_assoc;" (assignment_expression "unaff_s4 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_44[2] == 0) break;" if (parenthesized_expression "(local_44[2] == 0)" ( (binary_expression "local_44[2] == 0" (subscript_expression "local_44[2]" identifier [ number_literal ]) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if ((byte *)m_assoc != (byte *)0x0) goto LAB_00015ed8;" if (parenthesized_expression "((byte *)m_assoc != (byte *)0x0)" ( (binary_expression "(byte *)m_assoc != (byte *)0x0" (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015ed8;" goto statement_identifier ;)) (expression_statement "pbVar6 = (byte *)(uint)(*local_44 >> 4);" (assignment_expression "pbVar6 = (byte *)(uint)(*local_44 >> 4)" identifier = (cast_expression "(byte *)(uint)(*local_44 >> 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(*local_44 >> 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*local_44 >> 4)" ( (binary_expression "*local_44 >> 4" (pointer_expression "*local_44" * identifier) >> number_literal) ))))) ;) (if_statement "if (pbVar6 != (byte *)0x3) {\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }" if (parenthesized_expression "(pbVar6 != (byte *)0x3)" ( (binary_expression "pbVar6 != (byte *)0x3" identifier != (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }\n        if (pbVar6 == &DAT_00000005) goto LAB_00016448;\n        if (pbVar6 != &DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);\n        unaff_s8 = local_44 + 0x10;\n        unaff_s6 = local_44;\n        do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar8 = *(code **)(puVar10 + -0x7f20);\n        unaff_s4 = (byte *)m_assoc;\nLAB_00016020:\n        (*pcVar8)(10);\n        puVar9 = puVar10;\n        goto LAB_0001602c;\n      }" { (if_statement "if (pbVar6 < (byte *)0x4) {\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }" if (parenthesized_expression "(pbVar6 < (byte *)0x4)" ( (binary_expression "pbVar6 < (byte *)0x4" identifier < (cast_expression "(byte *)0x4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_58 = (byte *)0x10;\n          if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }\n          goto LAB_000163e8;\n        }" { (expression_statement "local_58 = (byte *)0x10;" (assignment_expression "local_58 = (byte *)0x10" identifier = (cast_expression "(byte *)0x10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar6 == (byte *)0x2) {\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }\n          else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }" if (parenthesized_expression "(pbVar6 == (byte *)0x2)" ( (binary_expression "pbVar6 == (byte *)0x2" identifier == (cast_expression "(byte *)0x2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000163d0:\n            pbVar6 = local_58;\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);\n            puVar9 = puVar10;\n            local_58 = pbVar6;\n          }" { (labeled_statement "LAB_000163d0:\n            pbVar6 = local_58;" statement_identifier : (expression_statement "pbVar6 = local_58;" (assignment_expression "pbVar6 = local_58" identifier = identifier) ;)) (expression_statement "pcVar8 = *(code **)(puVar9 + -0x7ecc);" (assignment_expression "pcVar8 = *(code **)(puVar9 + -0x7ecc)" identifier = (pointer_expression "*(code **)(puVar9 + -0x7ecc)" * (cast_expression "(code **)(puVar9 + -0x7ecc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7ecc)" ( (binary_expression "puVar9 + -0x7ecc" identifier + number_literal) ))))) ;) (expression_statement "puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74);" (assignment_expression "puVar7 = (undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74)" identifier = (cast_expression "(undefined *)(*(int *)(puVar9 + -0x7fc8) + 0x1c74)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar9 + -0x7fc8) + 0x1c74)" ( (binary_expression "*(int *)(puVar9 + -0x7fc8) + 0x1c74" (pointer_expression "*(int *)(puVar9 + -0x7fc8)" * (cast_expression "(int *)(puVar9 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -0x7fc8)" ( (binary_expression "puVar9 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "local_58 = pbVar6;" (assignment_expression "local_58 = pbVar6" identifier = identifier) ;) }) (else_clause "else {\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }" else (compound_statement "{\nLAB_00016418:\n            local_58 = (byte *)0x10;\nLAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);\n            puVar7 = local_54 + 0x1d28;\n            m_assoc = (int)unaff_s4;\n            puVar9 = puVar10;\n          }" { (labeled_statement "LAB_00016418:\n            local_58 = (byte *)0x10;" statement_identifier : (expression_statement "local_58 = (byte *)0x10;" (assignment_expression "local_58 = (byte *)0x10" identifier = (cast_expression "(byte *)0x10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_00016428:\n            pcVar8 = *(code **)(puVar9 + -0x7ecc);" statement_identifier : (expression_statement "pcVar8 = *(code **)(puVar9 + -0x7ecc);" (assignment_expression "pcVar8 = *(code **)(puVar9 + -0x7ecc)" identifier = (pointer_expression "*(code **)(puVar9 + -0x7ecc)" * (cast_expression "(code **)(puVar9 + -0x7ecc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7ecc)" ( (binary_expression "puVar9 + -0x7ecc" identifier + number_literal) ))))) ;)) (expression_statement "puVar7 = local_54 + 0x1d28;" (assignment_expression "puVar7 = local_54 + 0x1d28" identifier = (binary_expression "local_54 + 0x1d28" identifier + number_literal)) ;) (expression_statement "m_assoc = (int)unaff_s4;" (assignment_expression "m_assoc = (int)unaff_s4" identifier = (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) }))) (goto_statement "goto LAB_000163e8;" goto statement_identifier ;) })) (if_statement "if (pbVar6 == &DAT_00000005) goto LAB_00016448;" if (parenthesized_expression "(pbVar6 == &DAT_00000005)" ( (binary_expression "pbVar6 == &DAT_00000005" identifier == (pointer_expression "&DAT_00000005" & identifier)) )) (goto_statement "goto LAB_00016448;" goto statement_identifier ;)) (if_statement "if (pbVar6 != &DAT_00000006) goto LAB_00016418;" if (parenthesized_expression "(pbVar6 != &DAT_00000006)" ( (binary_expression "pbVar6 != &DAT_00000006" identifier != (pointer_expression "&DAT_00000006" & identifier)) )) (goto_statement "goto LAB_00016418;" goto statement_identifier ;)) (labeled_statement "LAB_00015fd8:\n        (**(code **)(puVar9 + -0x7f38))(1,local_5c);" statement_identifier : (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,local_5c);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,local_5c)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;)) (expression_statement "unaff_s8 = local_44 + 0x10;" (assignment_expression "unaff_s8 = local_44 + 0x10" identifier = (binary_expression "local_44 + 0x10" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          len = (int)*unaff_s6;\n          unaff_s6 = unaff_s6 + 1;\n          (**(code **)(puVar10 + -0x7f38))(1,unaff_s3);\n        }" { (expression_statement "len = (int)*unaff_s6;" (assignment_expression "len = (int)*unaff_s6" identifier = (cast_expression "(int)*unaff_s6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*unaff_s6" * identifier))) ;) (expression_statement "unaff_s6 = unaff_s6 + 1;" (assignment_expression "unaff_s6 = unaff_s6 + 1" identifier = (binary_expression "unaff_s6 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar10 + -0x7f38))(1,unaff_s3);" (call_expression "(**(code **)(puVar10 + -0x7f38))(1,unaff_s3)" (parenthesized_expression "(**(code **)(puVar10 + -0x7f38))" ( (pointer_expression "**(code **)(puVar10 + -0x7f38)" * (pointer_expression "*(code **)(puVar10 + -0x7f38)" * (cast_expression "(code **)(puVar10 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f38)" ( (binary_expression "puVar10 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "pcVar8 = *(code **)(puVar10 + -0x7f20);" (assignment_expression "pcVar8 = *(code **)(puVar10 + -0x7f20)" identifier = (pointer_expression "*(code **)(puVar10 + -0x7f20)" * (cast_expression "(code **)(puVar10 + -0x7f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f20)" ( (binary_expression "puVar10 + -0x7f20" identifier + number_literal) ))))) ;) (expression_statement "unaff_s4 = (byte *)m_assoc;" (assignment_expression "unaff_s4 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_00016020:\n        (*pcVar8)(10);" statement_identifier : (expression_statement "(*pcVar8)(10);" (call_expression "(*pcVar8)(10)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(10)" ( number_literal ))) ;)) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (goto_statement "goto LAB_0001602c;" goto statement_identifier ;) })) (labeled_statement "LAB_00016448:\n      pbVar6 = (byte *)0x10;" statement_identifier : (expression_statement "pbVar6 = (byte *)0x10;" (assignment_expression "pbVar6 = (byte *)0x10" identifier = (cast_expression "(byte *)0x10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_0001644c:\n      pcVar8 = *(code **)(puVar9 + -0x7ecc);" statement_identifier : (expression_statement "pcVar8 = *(code **)(puVar9 + -0x7ecc);" (assignment_expression "pcVar8 = *(code **)(puVar9 + -0x7ecc)" identifier = (pointer_expression "*(code **)(puVar9 + -0x7ecc)" * (cast_expression "(code **)(puVar9 + -0x7ecc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7ecc)" ( (binary_expression "puVar9 + -0x7ecc" identifier + number_literal) ))))) ;)) (expression_statement "puVar7 = local_48 + 0x1cac;" (assignment_expression "puVar7 = local_48 + 0x1cac" identifier = (binary_expression "local_48 + 0x1cac" identifier + number_literal)) ;) (expression_statement "m_assoc = (int)unaff_s4;" (assignment_expression "m_assoc = (int)unaff_s4" identifier = (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "local_58 = pbVar6;" (assignment_expression "local_58 = pbVar6" identifier = identifier) ;) (labeled_statement "LAB_000163e8:\n      (*pcVar8)(puVar7,pbVar6);" statement_identifier : (expression_statement "(*pcVar8)(puVar7,pbVar6);" (call_expression "(*pcVar8)(puVar7,pbVar6)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(puVar7,pbVar6)" ( identifier , identifier ))) ;)) (expression_statement "len = 0;" (assignment_expression "len = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar9 + -0x7f60))(local_44,local_58);" (call_expression "(**(code **)(puVar9 + -0x7f60))(local_44,local_58)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f60))" ( (pointer_expression "**(code **)(puVar9 + -0x7f60)" * (pointer_expression "*(code **)(puVar9 + -0x7f60)" * (cast_expression "(code **)(puVar9 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f60)" ( (binary_expression "puVar9 + -0x7f60" identifier + number_literal) ))))) )) (argument_list "(local_44,local_58)" ( identifier , identifier ))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }))) (expression_statement "len = (int)&off;" (assignment_expression "len = (int)&off" identifier = (cast_expression "(int)&off" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&off" & identifier))) ;) (expression_statement "m_assoc = (int)unaff_s4;" (assignment_expression "m_assoc = (int)unaff_s4" identifier = (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff);" (assignment_expression "iVar4 = (**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff)" identifier = (call_expression "(**(code **)(puVar9 + -0x7f28))(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f28))" ( (pointer_expression "**(code **)(puVar9 + -0x7f28)" * (pointer_expression "*(code **)(puVar9 + -0x7f28)" * (cast_expression "(code **)(puVar9 + -0x7f28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f28)" ( (binary_expression "puVar9 + -0x7f28" identifier + number_literal) ))))) )) (argument_list "(buff,unaff_s2,len,unaff_s4,0xffffffff,0xffffffff)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }\n    else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s6 = buff + off;\n      unaff_s8 = (byte *)(uint)unaff_s6[3];\n      local_58 = unaff_s8;\n      if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }\n      (**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);\n      iVar4 = 0x61;\n      pbVar6 = (byte *)m_assoc;\n      puVar10 = puVar9;\n    }" { (expression_statement "unaff_s6 = buff + off;" (assignment_expression "unaff_s6 = buff + off" identifier = (binary_expression "buff + off" identifier + identifier)) ;) (expression_statement "unaff_s8 = (byte *)(uint)unaff_s6[3];" (assignment_expression "unaff_s8 = (byte *)(uint)unaff_s6[3]" identifier = (cast_expression "(byte *)(uint)unaff_s6[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)unaff_s6[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "unaff_s6[3]" identifier [ number_literal ])))) ;) (expression_statement "local_58 = unaff_s8;" (assignment_expression "local_58 = unaff_s8" identifier = identifier) ;) (if_statement "if ((int)(unaff_s8 + off + 3) < (int)unaff_s2) {\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }" if (parenthesized_expression "((int)(unaff_s8 + off + 3) < (int)unaff_s2)" ( (binary_expression "(int)(unaff_s8 + off + 3) < (int)unaff_s2" (cast_expression "(int)(unaff_s8 + off + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s8 + off + 3)" ( (binary_expression "unaff_s8 + off + 3" (binary_expression "unaff_s8 + off" identifier + identifier) + number_literal) ))) < (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        bVar1 = unaff_s6[1];\n        local_44 = unaff_s6 + 4;\n        len = (int)*unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar5 = bVar1 & 0xf;\n        if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        m_assoc = (int)unaff_s4;\n        puVar10 = puVar9;\n        goto LAB_00016030;\n      }" { (expression_statement "bVar1 = unaff_s6[1];" (assignment_expression "bVar1 = unaff_s6[1]" identifier = (subscript_expression "unaff_s6[1]" identifier [ number_literal ])) ;) (expression_statement "local_44 = unaff_s6 + 4;" (assignment_expression "local_44 = unaff_s6 + 4" identifier = (binary_expression "unaff_s6 + 4" identifier + number_literal)) ;) (expression_statement "len = (int)*unaff_s6;" (assignment_expression "len = (int)*unaff_s6" identifier = (cast_expression "(int)*unaff_s6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*unaff_s6" * identifier))) ;) (if_statement "if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          in_t2 = (uint)(*unaff_s6 >> 4 == 6);\n        }" { (expression_statement "in_t2 = (uint)(*unaff_s6 >> 4 == 6);" (assignment_expression "in_t2 = (uint)(*unaff_s6 >> 4 == 6)" identifier = (call_expression "(uint)(*unaff_s6 >> 4 == 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*unaff_s6 >> 4 == 6)" ( (binary_expression "*unaff_s6 >> 4 == 6" (binary_expression "*unaff_s6 >> 4" (pointer_expression "*unaff_s6" * identifier) >> number_literal) == number_literal) )))) ;) }) (else_clause "else {\n          in_t2 = 0;\n        }" else (compound_statement "{\n          in_t2 = 0;\n        }" { (expression_statement "in_t2 = 0;" (assignment_expression "in_t2 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar5 = bVar1 & 0xf;" (assignment_expression "uVar5 = bVar1 & 0xf" identifier = (binary_expression "bVar1 & 0xf" identifier & number_literal)) ;) (if_statement "if (uVar5 < 0xb) {\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }" if (parenthesized_expression "(uVar5 < 0xb)" ( (binary_expression "uVar5 < 0xb" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);\n          return iVar4;\n        }" { comment comment (expression_statement "iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf);" (assignment_expression "iVar4 = (*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf)" identifier = (call_expression "(*(code *)(puVar10 + local_60[uVar5]))(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf)" (parenthesized_expression "(*(code *)(puVar10 + local_60[uVar5]))" ( (pointer_expression "*(code *)(puVar10 + local_60[uVar5])" * (cast_expression "(code *)(puVar10 + local_60[uVar5])" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + local_60[uVar5])" ( (binary_expression "puVar10 + local_60[uVar5]" identifier + (subscript_expression "local_60[uVar5]" identifier [ identifier ])) )))) )) (argument_list "(((uint)bVar1 << 0x1a) >> 0x1e,len & 0xf)" ( (binary_expression "((uint)bVar1 << 0x1a) >> 0x1e" (parenthesized_expression "((uint)bVar1 << 0x1a)" ( (binary_expression "(uint)bVar1 << 0x1a" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) )) >> number_literal) , (binary_expression "len & 0xf" identifier & number_literal) )))) ;) (return_statement "return iVar4;" return identifier ;) })) (labeled_statement "LAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;" statement_identifier : (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;)) (expression_statement "m_assoc = (int)unaff_s4;" (assignment_expression "m_assoc = (int)unaff_s4" identifier = (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (goto_statement "goto LAB_00016030;" goto statement_identifier ;) })) (expression_statement "(**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off);" (call_expression "(**(code **)(puVar10 + -0x7ecc))(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off)" (parenthesized_expression "(**(code **)(puVar10 + -0x7ecc))" ( (pointer_expression "**(code **)(puVar10 + -0x7ecc)" * (pointer_expression "*(code **)(puVar10 + -0x7ecc)" * (cast_expression "(code **)(puVar10 + -0x7ecc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7ecc)" ( (binary_expression "puVar10 + -0x7ecc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar10 + -0x7fc8) + 0x1b60,(int)unaff_s2 - off)" ( (binary_expression "*(int *)(puVar10 + -0x7fc8) + 0x1b60" (pointer_expression "*(int *)(puVar10 + -0x7fc8)" * (cast_expression "(int *)(puVar10 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x7fc8)" ( (binary_expression "puVar10 + -0x7fc8" identifier + number_literal) )))) + number_literal) , (binary_expression "(int)unaff_s2 - off" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) ;) (expression_statement "iVar4 = 0x61;" (assignment_expression "iVar4 = 0x61" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)m_assoc;" (assignment_expression "pbVar6 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }) (else_clause "else {\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }" else (compound_statement "{\n      piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);\n      len = (int)piVar2;\n      if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }\n      if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n    }" { (expression_statement "piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18);" (assignment_expression "piVar2 = (int *)((uint)sas_tport_addr._0_4_ >> 0x18)" identifier = (cast_expression "(int *)((uint)sas_tport_addr._0_4_ >> 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)sas_tport_addr._0_4_ >> 0x18)" ( (binary_expression "(uint)sas_tport_addr._0_4_ >> 0x18" (cast_expression "(uint)sas_tport_addr._0_4_" ( (type_descriptor "uint" type_identifier) ) (field_expression "sas_tport_addr._0_4_" identifier . field_identifier)) >> number_literal) )))) ;) (expression_statement "len = (int)piVar2;" (assignment_expression "len = (int)piVar2" identifier = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar2 != (int *)0x0) {\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s2 = (byte *)&local_2c;\n        (**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);\n        unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;\n        buff = local_4c;\n        puVar9 = puVar10;\n        while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }\n        (**(code **)(puVar9 + -0x7f20))(10);\n        local_60 = piVar2;\n      }" { (expression_statement "unaff_s2 = (byte *)&local_2c;" (assignment_expression "unaff_s2 = (byte *)&local_2c" identifier = (cast_expression "(byte *)&local_2c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_2c" & identifier))) ;) (expression_statement "(**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28);" (call_expression "(**(code **)(puVar10 + -0x7f38))(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28)" (parenthesized_expression "(**(code **)(puVar10 + -0x7f38))" ( (pointer_expression "**(code **)(puVar10 + -0x7f38)" * (pointer_expression "*(code **)(puVar10 + -0x7f38)" * (cast_expression "(code **)(puVar10 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x7f38)" ( (binary_expression "puVar10 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar10 + -0x7fc8) + 0x1c28)" ( number_literal , (binary_expression "*(int *)(puVar10 + -0x7fc8) + 0x1c28" (pointer_expression "*(int *)(puVar10 + -0x7fc8)" * (cast_expression "(int *)(puVar10 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x7fc8)" ( (binary_expression "puVar10 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30;" (assignment_expression "unaff_s1 = *(int *)(puVar10 + -0x7fc8) + 0x1c30" identifier = (binary_expression "*(int *)(puVar10 + -0x7fc8) + 0x1c30" (pointer_expression "*(int *)(puVar10 + -0x7fc8)" * (cast_expression "(int *)(puVar10 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x7fc8)" ( (binary_expression "puVar10 + -0x7fc8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "buff = local_4c;" (assignment_expression "buff = local_4c" identifier = identifier) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (while_statement "while( true ) {\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          buff = buff + 1;\n          (**(code **)(puVar9 + -0x7f38))(1,unaff_s1);\n          if (unaff_s2 == buff) break;\n          len = (int)*buff;\n        }" { (expression_statement "buff = buff + 1;" (assignment_expression "buff = buff + 1" identifier = (binary_expression "buff + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar9 + -0x7f38))(1,unaff_s1);" (call_expression "(**(code **)(puVar9 + -0x7f38))(1,unaff_s1)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f38))" ( (pointer_expression "**(code **)(puVar9 + -0x7f38)" * (pointer_expression "*(code **)(puVar9 + -0x7f38)" * (cast_expression "(code **)(puVar9 + -0x7f38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f38)" ( (binary_expression "puVar9 + -0x7f38" identifier + number_literal) ))))) )) (argument_list "(1,unaff_s1)" ( number_literal , identifier ))) ;) (if_statement "if (unaff_s2 == buff) break;" if (parenthesized_expression "(unaff_s2 == buff)" ( (binary_expression "unaff_s2 == buff" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "len = (int)*buff;" (assignment_expression "len = (int)*buff" identifier = (cast_expression "(int)*buff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*buff" * identifier))) ;) })) (expression_statement "(**(code **)(puVar9 + -0x7f20))(10);" (call_expression "(**(code **)(puVar9 + -0x7f20))(10)" (parenthesized_expression "(**(code **)(puVar9 + -0x7f20))" ( (pointer_expression "**(code **)(puVar9 + -0x7f20)" * (pointer_expression "*(code **)(puVar9 + -0x7f20)" * (cast_expression "(code **)(puVar9 + -0x7f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7f20)" ( (binary_expression "puVar9 + -0x7f20" identifier + number_literal) ))))) )) (argument_list "(10)" ( number_literal ))) ;) (expression_statement "local_60 = piVar2;" (assignment_expression "local_60 = piVar2" identifier = identifier) ;) })) (if_statement "if (iVar4 == -2) {\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }\n      else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }" if (parenthesized_expression "(iVar4 == -2)" ( (binary_expression "iVar4 == -2" identifier == number_literal) )) (compound_statement "{\n        (**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);\n        iVar4 = 0x61;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }" { (expression_statement "(**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off);" (call_expression "(**(code **)(puVar9 + -0x7ecc))(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off)" (parenthesized_expression "(**(code **)(puVar9 + -0x7ecc))" ( (pointer_expression "**(code **)(puVar9 + -0x7ecc)" * (pointer_expression "*(code **)(puVar9 + -0x7ecc)" * (cast_expression "(code **)(puVar9 + -0x7ecc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x7ecc)" ( (binary_expression "puVar9 + -0x7ecc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar9 + -0x7fc8) + 0x1bc0,off)" ( (binary_expression "*(int *)(puVar9 + -0x7fc8) + 0x1bc0" (pointer_expression "*(int *)(puVar9 + -0x7fc8)" * (cast_expression "(int *)(puVar9 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -0x7fc8)" ( (binary_expression "puVar9 + -0x7fc8" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "iVar4 = 0x61;" (assignment_expression "iVar4 = 0x61" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)m_assoc;" (assignment_expression "pbVar6 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }) (else_clause "else {\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }" else (compound_statement "{\nLAB_00015f38:\n        iVar4 = 0;\n        pbVar6 = (byte *)m_assoc;\n        puVar10 = puVar9;\n      }" { (labeled_statement "LAB_00015f38:\n        iVar4 = 0;" statement_identifier : (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;)) (expression_statement "pbVar6 = (byte *)m_assoc;" (assignment_expression "pbVar6 = (byte *)m_assoc" identifier = (cast_expression "(byte *)m_assoc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) }))) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "int FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)" identifier (parameter_list "(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *in_t1;" type_identifier (pointer_declarator "*in_t1" * identifier) ;) (declaration "uint in_t2;" type_identifier identifier ;) (declaration "int unaff_s1;" primitive_type identifier ;) (declaration "uint *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "int unaff_s3;" primitive_type identifier ;) (declaration "uint *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "uint *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);" (assignment_expression "puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" identifier = (pointer_expression "*(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" * (cast_expression "(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered transfer length: " + in_t9 + 0x14)" ( (binary_expression ""  Maximum scattered transfer length: " + in_t9 + 0x14" (binary_expression ""  Maximum scattered transfer length: " + in_t9" (string_literal ""  Maximum scattered transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (expression_statement "local_2c = *puVar5;" (assignment_expression "local_2c = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) (if_statement "if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }" if (parenthesized_expression "(*(char *)(param_5 + 4) != '\0')" ( (binary_expression "*(char *)(param_5 + 4) != '\0'" (pointer_expression "*(char *)(param_5 + 4)" * (cast_expression "(char *)(param_5 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }" { (expression_statement "local_4c = &local_34;" (assignment_expression "local_4c = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "unaff_s1 = 0;" (assignment_expression "unaff_s1 = 0" identifier = number_literal) ;) (expression_statement "unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" identifier = (pointer_expression "*(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) ;) (expression_statement "local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" identifier = (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) ;) (expression_statement "local_50 = (uint *)0x0;" (assignment_expression "local_50 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;" (assignment_expression "unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;" (assignment_expression "local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_60 = unaff_s6 + 0x17a4;" (assignment_expression "local_60 = unaff_s6 + 0x17a4" identifier = (binary_expression "unaff_s6 + 0x17a4" identifier + number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0xffffffff;" (assignment_expression "local_38 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) (expression_statement "local_44 = param_2;" (assignment_expression "local_44 = param_2" identifier = identifier) ;) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" identifier = identifier) ;) (expression_statement "local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" identifier = (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00015f98;" goto statement_identifier ;) })) (if_statement "if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" if (parenthesized_expression "(*(byte *)((int)param_2 + 2) == 0)" ( (binary_expression "*(byte *)((int)param_2 + 2) == 0" (pointer_expression "*(byte *)((int)param_2 + 2)" * (cast_expression "(byte *)((int)param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 2)" ( (binary_expression "(int)param_2 + 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }" { (expression_statement "iVar2 = FUN_00015c24();" (assignment_expression "iVar2 = FUN_00015c24()" identifier = (call_expression "FUN_00015c24()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) }) (else_clause "else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" else (compound_statement "{\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" { (expression_statement "iVar2 = *(int *)(param_5 + 0x20);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x20)" identifier = (pointer_expression "*(int *)(param_5 + 0x20)" * (cast_expression "(int *)(param_5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }" { (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" +\n                                in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" identifier = identifier) ;) (goto_statement "goto LAB_00015f38;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  }" { (expression_statement "local_44 = puVar4;" (assignment_expression "local_44 = puVar4" identifier = identifier) ;) (if_statement "if (local_2c == *puVar5) {\n      return iVar2;\n    }" if (parenthesized_expression "(local_2c == *puVar5)" ( (binary_expression "local_2c == *puVar5" identifier == (pointer_expression "*puVar5" * identifier)) )) (compound_statement "{\n      return iVar2;\n    }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "uVar3 = local_2c;" (assignment_expression "uVar3 = local_2c" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();" (assignment_expression "puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))()" identifier = (cast_expression "(uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)("  Maximum scattered transfer length: " + in_t9))()" (parenthesized_expression "(**(code **)("  Maximum scattered transfer length: " + in_t9))" ( (pointer_expression "**(code **)("  Maximum scattered transfer length: " + in_t9)" * (pointer_expression "*(code **)("  Maximum scattered transfer length: " + in_t9)" * (cast_expression "(code **)("  Maximum scattered transfer length: " + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered transfer length: " + in_t9)" ( (binary_expression ""  Maximum scattered transfer length: " + in_t9" (string_literal ""  Maximum scattered transfer length: "" " string_content ") + identifier) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (if_statement "if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" if (parenthesized_expression "(param_3 == (uint *)0x3)" ( (binary_expression "param_3 == (uint *)0x3" identifier == (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }" { (labeled_statement "LAB_000165d0:\n      puVar4 = local_58;" statement_identifier : (expression_statement "puVar4 = local_58;" (assignment_expression "puVar4 = local_58" identifier = identifier) ;)) (if_statement "if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;" if (parenthesized_expression "(unaff_s8 != (uint *)&DAT_00000008)" ( (binary_expression "unaff_s8 != (uint *)&DAT_00000008" identifier != (cast_expression "(uint *)&DAT_00000008" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000008" & identifier))) )) (goto_statement "goto LAB_0001644c;" goto statement_identifier ;)) (if_statement "if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" if (parenthesized_expression "((in_t2 == 0) || (uVar3 != 1))" ( (binary_expression "(in_t2 == 0) || (uVar3 != 1)" (parenthesized_expression "(in_t2 == 0)" ( (binary_expression "in_t2 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) ))) )) (compound_statement "{\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" { (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s8 = local_44 + 2;" (assignment_expression "unaff_s8 = local_44 + 2" identifier = (binary_expression "local_44 + 2" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);" do (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" { (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s6 != unaff_s8)" ( (binary_expression "unaff_s6 != unaff_s8" identifier != identifier) )) ;) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00016020;" goto statement_identifier ;) })) (expression_statement "param_3 = (uint *)(local_34 >> 0x18);" (assignment_expression "param_3 = (uint *)(local_34 >> 0x18)" identifier = (cast_expression "(uint *)(local_34 >> 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 >> 0x18)" ( (binary_expression "local_34 >> 0x18" identifier >> number_literal) )))) ;) (if_statement "if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" if (parenthesized_expression "(local_50 == (uint *)0x0)" ( (binary_expression "local_50 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }" { (if_statement "if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }" { (expression_statement "unaff_s8 = &local_2c;" (assignment_expression "unaff_s8 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "puVar4 = local_4c;" (assignment_expression "puVar4 = local_4c" identifier = identifier) ;) (while_statement "while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }" { (expression_statement "puVar4 = (uint *)((int)puVar4 + 1);" (assignment_expression "puVar4 = (uint *)((int)puVar4 + 1)" identifier = (cast_expression "(uint *)((int)puVar4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 1)" ( (binary_expression "(int)puVar4 + 1" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) (if_statement "if (unaff_s8 == puVar4) break;" if (parenthesized_expression "(unaff_s8 == puVar4)" ( (binary_expression "unaff_s8 == puVar4" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "param_3 = (uint *)(uint)*(byte *)puVar4;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)puVar4" identifier = (binary_expression "(uint *)(uint)*(byte *)puVar4" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)puVar4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);" (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(10)" ( number_literal ))) ;) })) (expression_statement "local_34 = unaff_s6[1];" (assignment_expression "local_34 = unaff_s6[1]" identifier = (subscript_expression "unaff_s6[1]" identifier [ number_literal ])) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "local_30 = unaff_s6[2];" (assignment_expression "local_30 = unaff_s6[2]" identifier = (subscript_expression "unaff_s6[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" else (compound_statement "{\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" { (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s8 = local_44 + 2;" (assignment_expression "unaff_s8 = local_44 + 2" identifier = (binary_expression "local_44 + 2" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        }" { (expression_statement "bVar1 = *(byte *)unaff_s6;" (assignment_expression "bVar1 = *(byte *)unaff_s6" identifier = (pointer_expression "*(byte *)unaff_s6" * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3,bVar1)" ( number_literal , identifier , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = local_50;" (assignment_expression "param_3 = local_50" identifier = identifier) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8)" ( number_literal , (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "local_50 = (uint *)0x0;" (assignment_expression "local_50 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" else (compound_statement "{\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" { (if_statement "if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" if (parenthesized_expression "(param_3 < (uint *)0x4)" ( (binary_expression "param_3 < (uint *)0x4" identifier < (cast_expression "(uint *)0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" { (if_statement "if (param_3 != (uint *)0x2) goto LAB_00016428;" if (parenthesized_expression "(param_3 != (uint *)0x2)" ( (binary_expression "param_3 != (uint *)0x2" identifier != (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00016428;" goto statement_identifier ;)) (if_statement "if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;" if (parenthesized_expression "(unaff_s8 != (uint *)&DAT_00000008)" ( (binary_expression "unaff_s8 != (uint *)&DAT_00000008" identifier != (cast_expression "(uint *)&DAT_00000008" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000008" & identifier))) )) (goto_statement "goto LAB_000163d0;" goto statement_identifier ;)) (expression_statement "unaff_s8 = unaff_s6 + 3;" (assignment_expression "unaff_s8 = unaff_s6 + 3" identifier = (binary_expression "unaff_s6 + 3" identifier + number_literal)) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" { (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00016020;" goto statement_identifier ;) })) (if_statement "if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;" if (parenthesized_expression "(param_3 == (uint *)&DAT_00000005)" ( (binary_expression "param_3 == (uint *)&DAT_00000005" identifier == (cast_expression "(uint *)&DAT_00000005" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000005" & identifier))) )) (goto_statement "goto LAB_000165d0;" goto statement_identifier ;)) (if_statement "if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;" if (parenthesized_expression "(param_3 != (uint *)&DAT_00000006)" ( (binary_expression "param_3 != (uint *)&DAT_00000006" identifier != (cast_expression "(uint *)&DAT_00000006" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000006" & identifier))) )) (goto_statement "goto LAB_00016428;" goto statement_identifier ;)) (if_statement "if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;" if (parenthesized_expression "(unaff_s8 == (uint *)0x10)" ( (binary_expression "unaff_s8 == (uint *)0x10" identifier == (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015fd8;" goto statement_identifier ;)) (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "param_3 = (uint *)0x0;" (assignment_expression "param_3 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);" (call_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8)" (parenthesized_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9 + 0x14" (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9" (string_literal ""  Optimal stream write size: %u blocks\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(local_44,unaff_s8)" ( identifier , identifier ))) ;) }))) (labeled_statement "LAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" statement_identifier : (for_statement "for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" for ( ; (comma_expression "puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "puVar4 = local_44" identifier = identifier) , (comma_expression "local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "local_44 = param_2" identifier = identifier) , (comma_expression "unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "unaff_s4 = param_4" identifier = identifier) , (binary_expression "unaff_s1 == 0" identifier == number_literal)))) ; (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ) (compound_statement "{\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" { (labeled_statement "LAB_00015f98:\n      param_2 = local_44;" statement_identifier : (expression_statement "param_2 = local_44;" (assignment_expression "param_2 = local_44" identifier = identifier) ;)) (expression_statement "unaff_s4 = param_4;" (assignment_expression "unaff_s4 = param_4" identifier = identifier) ;) (if_statement "if (*(byte *)((int)local_44 + 2) == 0) break;" if (parenthesized_expression "(*(byte *)((int)local_44 + 2) == 0)" ( (binary_expression "*(byte *)((int)local_44 + 2) == 0" (pointer_expression "*(byte *)((int)local_44 + 2)" * (cast_expression "(byte *)((int)local_44 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_44 + 2)" ( (binary_expression "(int)local_44 + 2" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_4 != (uint *)0x0) goto LAB_00015ed8;" if (parenthesized_expression "(param_4 != (uint *)0x0)" ( (binary_expression "param_4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015ed8;" goto statement_identifier ;)) (expression_statement "puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);" (assignment_expression "puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4)" identifier = (cast_expression "(uint *)(uint)(*(byte *)local_44 >> 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(*(byte *)local_44 >> 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)local_44 >> 4)" ( (binary_expression "*(byte *)local_44 >> 4" (pointer_expression "*(byte *)local_44" * (cast_expression "(byte *)local_44" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) >> number_literal) ))))) ;) (if_statement "if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }" if (parenthesized_expression "(puVar4 != (uint *)0x3)" ( (binary_expression "puVar4 != (uint *)0x3" identifier != (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }" { (if_statement "if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }" if (parenthesized_expression "(puVar4 < (uint *)0x4)" ( (binary_expression "puVar4 < (uint *)0x4" identifier < (cast_expression "(uint *)0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }" { (expression_statement "local_58 = (uint *)0x10;" (assignment_expression "local_58 = (uint *)0x10" identifier = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" if (parenthesized_expression "(puVar4 == (uint *)0x2)" ( (binary_expression "puVar4 == (uint *)0x2" identifier == (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }" { (labeled_statement "LAB_000163d0:\n            puVar4 = local_58;" statement_identifier : (expression_statement "puVar4 = local_58;" (assignment_expression "puVar4 = local_58" identifier = identifier) ;)) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;" (assignment_expression "iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "local_58 = puVar4;" (assignment_expression "local_58 = puVar4" identifier = identifier) ;) }) (else_clause "else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" else (compound_statement "{\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" { (labeled_statement "LAB_00016418:\n            local_58 = (uint *)0x10;" statement_identifier : (expression_statement "local_58 = (uint *)0x10;" (assignment_expression "local_58 = (uint *)0x10" identifier = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" statement_identifier : (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) ;)) (expression_statement "iVar2 = local_54 + 0x1d28;" (assignment_expression "iVar2 = local_54 + 0x1d28" identifier = (binary_expression "local_54 + 0x1d28" identifier + number_literal)) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) }))) (goto_statement "goto LAB_000163e8;" goto statement_identifier ;) })) (if_statement "if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;" if (parenthesized_expression "(puVar4 == (uint *)&DAT_00000005)" ( (binary_expression "puVar4 == (uint *)&DAT_00000005" identifier == (cast_expression "(uint *)&DAT_00000005" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000005" & identifier))) )) (goto_statement "goto LAB_00016448;" goto statement_identifier ;)) (if_statement "if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;" if (parenthesized_expression "(puVar4 != (uint *)&DAT_00000006)" ( (binary_expression "puVar4 != (uint *)&DAT_00000006" identifier != (cast_expression "(uint *)&DAT_00000006" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000006" & identifier))) )) (goto_statement "goto LAB_00016418;" goto statement_identifier ;)) (labeled_statement "LAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" statement_identifier : (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,local_5c)" ( number_literal , identifier ))) ;)) (expression_statement "unaff_s8 = local_44 + 4;" (assignment_expression "unaff_s8 = local_44 + 4" identifier = (binary_expression "local_44 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" identifier = identifier) ;) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" do (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" { (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" identifier = (cast_expression "(uint *)((int)unaff_s6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s3)" ( number_literal , identifier ))) ;) }) while (parenthesized_expression "(unaff_s8 != unaff_s6)" ( (binary_expression "unaff_s8 != unaff_s6" identifier != identifier) )) ;) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) ;) (expression_statement "unaff_s4 = param_4;" (assignment_expression "unaff_s4 = param_4" identifier = identifier) ;) (labeled_statement "LAB_00016020:\n        (*pcVar6)(10);" statement_identifier : (expression_statement "(*pcVar6)(10);" (call_expression "(*pcVar6)(10)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(10)" ( number_literal ))) ;)) (goto_statement "goto LAB_0001602c;" goto statement_identifier ;) })) (labeled_statement "LAB_00016448:\n      puVar4 = (uint *)0x10;" statement_identifier : (expression_statement "puVar4 = (uint *)0x10;" (assignment_expression "puVar4 = (uint *)0x10" identifier = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" statement_identifier : (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" identifier = (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) ;)) (expression_statement "iVar2 = local_48 + 0x1cac;" (assignment_expression "iVar2 = local_48 + 0x1cac" identifier = (binary_expression "local_48 + 0x1cac" identifier + number_literal)) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (expression_statement "local_58 = puVar4;" (assignment_expression "local_58 = puVar4" identifier = identifier) ;) (labeled_statement "LAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);" statement_identifier : (expression_statement "(*pcVar6)(iVar2,puVar4);" (call_expression "(*pcVar6)(iVar2,puVar4)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(iVar2,puVar4)" ( identifier , identifier ))) ;)) (expression_statement "param_3 = (uint *)0x0;" (assignment_expression "param_3 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);" (call_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58)" (parenthesized_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" ( (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9 + 0x14" (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9" (string_literal ""  Optimal stream write size: %u blocks\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(local_44,local_58)" ( identifier , identifier ))) ;) }))) (expression_statement "param_3 = &local_38;" (assignment_expression "param_3 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (expression_statement "iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);" (assignment_expression "iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" identifier = (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" * (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 4" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }" { (expression_statement "unaff_s6 = (uint *)((int)param_2 + local_38);" (assignment_expression "unaff_s6 = (uint *)((int)param_2 + local_38)" identifier = (cast_expression "(uint *)((int)param_2 + local_38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + local_38)" ( (binary_expression "(int)param_2 + local_38" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "unaff_s8 = (uint *)(uint)(byte)*unaff_s6;" (assignment_expression "unaff_s8 = (uint *)(uint)(byte)*unaff_s6" identifier = (binary_expression "(uint *)(uint)(byte)*unaff_s6" (cast_expression "(uint *)(uint)(byte)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier )))) * identifier)) ;) (expression_statement "local_58 = unaff_s8;" (assignment_expression "local_58 = unaff_s8" identifier = identifier) ;) (if_statement "if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }" if (parenthesized_expression "((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2)" ( (binary_expression "(int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2" (cast_expression "(int)((int)unaff_s8 + local_38 + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s8 + local_38 + 3)" ( (binary_expression "(int)unaff_s8 + local_38 + 3" (binary_expression "(int)unaff_s8 + local_38" (cast_expression "(int)unaff_s8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))) < (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }" { (expression_statement "bVar1 = *(byte *)((int)unaff_s6 + 1);" (assignment_expression "bVar1 = *(byte *)((int)unaff_s6 + 1)" identifier = (pointer_expression "*(byte *)((int)unaff_s6 + 1)" * (cast_expression "(byte *)((int)unaff_s6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_44 = unaff_s6 + 1;" (assignment_expression "local_44 = unaff_s6 + 1" identifier = (binary_expression "unaff_s6 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" identifier = (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }" { (expression_statement "in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);" (assignment_expression "in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6)" identifier = (call_expression "(uint)(*(byte *)unaff_s6 >> 4 == 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)unaff_s6 >> 4 == 6)" ( (binary_expression "*(byte *)unaff_s6 >> 4 == 6" (binary_expression "*(byte *)unaff_s6 >> 4" (pointer_expression "*(byte *)unaff_s6" * (cast_expression "(byte *)unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) >> number_literal) == number_literal) )))) ;) }) (else_clause "else {\n          in_t2 = 0;\n        }" else (compound_statement "{\n          in_t2 = 0;\n        }" { (expression_statement "in_t2 = 0;" (assignment_expression "in_t2 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar3 = bVar1 & 0xf;" (assignment_expression "uVar3 = bVar1 & 0xf" identifier = (binary_expression "bVar1 & 0xf" identifier & number_literal)) ;) (if_statement "if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }" if (parenthesized_expression "(uVar3 < 0xb)" ( (binary_expression "uVar3 < 0xb" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }" { (expression_statement "iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);" (assignment_expression "iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" identifier = (call_expression "(*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" (parenthesized_expression "(*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))" ( (pointer_expression "*(code *)(local_60[uVar3] + in_t9 + 0x2bab0)" * (cast_expression "(code *)(local_60[uVar3] + in_t9 + 0x2bab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60[uVar3] + in_t9 + 0x2bab0)" ( (binary_expression "local_60[uVar3] + in_t9 + 0x2bab0" (binary_expression "local_60[uVar3] + in_t9" (subscript_expression "local_60[uVar3]" identifier [ identifier ]) + identifier) + number_literal) )))) )) (argument_list "(((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" ( (binary_expression "((uint)bVar1 << 0x1a) >> 0x1e" (parenthesized_expression "((uint)bVar1 << 0x1a)" ( (binary_expression "(uint)bVar1 << 0x1a" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) )) >> number_literal) , (binary_expression "(uint)param_3 & 0xf" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (return_statement "return iVar2;" return identifier ;) })) (labeled_statement "LAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;" statement_identifier : (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;)) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" identifier = identifier) ;) (goto_statement "goto LAB_00016030;" goto statement_identifier ;) })) (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , (binary_expression "(int)unaff_s2 - local_38" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) ;) (expression_statement "iVar2 = 0x61;" (assignment_expression "iVar2 = 0x61" identifier = number_literal) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) }) (else_clause "else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" else (compound_statement "{\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" { (expression_statement "puVar4 = (uint *)(local_34 >> 0x18);" (assignment_expression "puVar4 = (uint *)(local_34 >> 0x18)" identifier = (cast_expression "(uint *)(local_34 >> 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 >> 0x18)" ( (binary_expression "local_34 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "param_3 = puVar4;" (assignment_expression "param_3 = puVar4" identifier = identifier) ;) (if_statement "if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }" { (expression_statement "unaff_s2 = &local_2c;" (assignment_expression "unaff_s2 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28)" ( number_literal , (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;" (assignment_expression "unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30" identifier = (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "param_2 = local_4c;" (assignment_expression "param_2 = local_4c" identifier = identifier) ;) (while_statement "while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }" { (expression_statement "param_2 = (uint *)((int)param_2 + 1);" (assignment_expression "param_2 = (uint *)((int)param_2 + 1)" identifier = (cast_expression "(uint *)((int)param_2 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 1)" ( (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" ( (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" * (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" ( (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" " string_content escape_sequence ") + identifier) + number_literal) ))))) )) (argument_list "(1,unaff_s1)" ( number_literal , identifier ))) ;) (if_statement "if (unaff_s2 == param_2) break;" if (parenthesized_expression "(unaff_s2 == param_2)" ( (binary_expression "unaff_s2 == param_2" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "param_3 = (uint *)(uint)*(byte *)param_2;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)param_2" identifier = (binary_expression "(uint *)(uint)*(byte *)param_2" (cast_expression "(uint *)(uint)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);" (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" * (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" ( (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(10)" ( number_literal ))) ;) (expression_statement "local_60 = puVar4;" (assignment_expression "local_60 = puVar4" identifier = identifier) ;) })) (if_statement "if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" if (parenthesized_expression "(iVar2 == -2)" ( (binary_expression "iVar2 == -2" identifier == number_literal) )) (compound_statement "{\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }" { (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" ( (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" * (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" ( (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" " string_content ") + identifier) + number_literal) ))))) )) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38)" ( (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" * (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" ( (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" " string_content escape_sequence ") + identifier) + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "iVar2 = 0x61;" (assignment_expression "iVar2 = 0x61" identifier = number_literal) ;) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) }) (else_clause "else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" else (compound_statement "{\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" { (labeled_statement "LAB_00015f38:\n        iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" identifier = identifier) ;) }))) }))) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (string_literal " string_content ") + IDENT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression 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 = (pointer_expression & IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) )) (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (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 ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) }))) (labeled_statement statement_identifier : (for_statement for ( ; (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)))) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( LIT ))) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT )))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) >> LIT) == LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ IDENT ]) + IDENT) + LIT) )))) )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) )) >> LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) ))))) )) (argument_list ( LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) )) (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content ") + IDENT) + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " string_content escape_sequence ") + IDENT) + LIT) )))) + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "int FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_00015e60(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)" (identifier "FUN_00015e60") (parameter_list "(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint *in_t1;\n  uint in_t2;\n  int unaff_s1;\n  uint *unaff_s2;\n  int unaff_s3;\n  uint *unaff_s4;\n  uint *puVar5;\n  uint *unaff_s6;\n  int in_t9;\n  code *pcVar6;\n  uint *unaff_s8;\n  uint *local_60;\n  int local_5c;\n  uint *local_58;\n  int local_54;\n  uint *local_50;\n  uint *local_4c;\n  int local_48;\n  uint *local_44;\n  uint local_38;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  \n  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);\n  local_2c = *puVar5;\n  local_58 = in_t1;\n  if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }\n  if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }\nLAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint *in_t1;" (type_identifier "uint") (pointer_declarator "*in_t1" (* "*") (identifier "in_t1")) (; ";")) (declaration "uint in_t2;" (type_identifier "uint") (identifier "in_t2") (; ";")) (declaration "int unaff_s1;" (primitive_type "int") (identifier "unaff_s1") (; ";")) (declaration "uint *unaff_s2;" (type_identifier "uint") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "int unaff_s3;" (primitive_type "int") (identifier "unaff_s3") (; ";")) (declaration "uint *unaff_s4;" (type_identifier "uint") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint *unaff_s6;" (type_identifier "uint") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "int in_t9;" (primitive_type "int") (identifier "in_t9") (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "uint *unaff_s8;" (type_identifier "uint") (pointer_declarator "*unaff_s8" (* "*") (identifier "unaff_s8")) (; ";")) (declaration "uint *local_60;" (type_identifier "uint") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "uint *local_58;" (type_identifier "uint") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "uint *local_50;" (type_identifier "uint") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "uint *local_4c;" (type_identifier "uint") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "uint *local_44;" (type_identifier "uint") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (expression_statement "puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);" (assignment_expression "puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" (identifier "puVar5") (= "=") (pointer_expression "*(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" (* "*") (cast_expression "(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered transfer length: " + in_t9 + 0x14)" (( "(") (binary_expression ""  Maximum scattered transfer length: " + in_t9 + 0x14" (binary_expression ""  Maximum scattered transfer length: " + in_t9" (string_literal ""  Maximum scattered transfer length: "" (" """) (string_content "  Maximum scattered transfer length: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_2c = *puVar5;" (assignment_expression "local_2c = *puVar5" (identifier "local_2c") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" (identifier "local_58") (= "=") (identifier "in_t1")) (; ";")) (if_statement "if (*(char *)(param_5 + 4) != '\0') {\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_5 + 4) != '\0')" (( "(") (binary_expression "*(char *)(param_5 + 4) != '\0'" (pointer_expression "*(char *)(param_5 + 4)" (* "*") (cast_expression "(char *)(param_5 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 4)" (( "(") (binary_expression "param_5 + 4" (identifier "param_5") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_4c = &local_34;\n    unaff_s1 = 0;\n    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    local_50 = (uint *)0x0;\n    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;\n    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;\n    local_34 = 0;\n    local_60 = unaff_s6 + 0x17a4;\n    local_30 = 0;\n    local_38 = 0xffffffff;\n    puVar4 = param_4;\n    local_44 = param_2;\n    unaff_s2 = param_3;\n    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);\n    goto LAB_00015f98;\n  }" ({ "{") (expression_statement "local_4c = &local_34;" (assignment_expression "local_4c = &local_34" (identifier "local_4c") (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "unaff_s1 = 0;" (assignment_expression "unaff_s1 = 0" (identifier "unaff_s1") (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (identifier "unaff_s6") (= "=") (pointer_expression "*(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (identifier "local_48") (= "=") (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_50 = (uint *)0x0;" (assignment_expression "local_50 = (uint *)0x0" (identifier "local_50") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30;" (assignment_expression "unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30" (identifier "unaff_s3") (= "=") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c30" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1c30"))) (; ";")) (expression_statement "local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28;" (assignment_expression "local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28" (identifier "local_5c") (= "=") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n               0x1c28" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1c28"))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60 = unaff_s6 + 0x17a4;" (assignment_expression "local_60 = unaff_s6 + 0x17a4" (identifier "local_60") (= "=") (binary_expression "unaff_s6 + 0x17a4" (identifier "unaff_s6") (+ "+") (number_literal "0x17a4"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0xffffffff;" (assignment_expression "local_38 = 0xffffffff" (identifier "local_38") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" (identifier "puVar4") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_44 = param_2;" (assignment_expression "local_44 = param_2" (identifier "local_44") (= "=") (identifier "param_2")) (; ";")) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" (identifier "unaff_s2") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);" (assignment_expression "local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (identifier "local_54") (= "=") (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (goto_statement "goto LAB_00015f98;" (goto "goto") (statement_identifier "LAB_00015f98") (; ";")) (} "}"))) (if_statement "if (*(byte *)((int)param_2 + 2) == 0) {\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }\n  else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" (if "if") (parenthesized_expression "(*(byte *)((int)param_2 + 2) == 0)" (( "(") (binary_expression "*(byte *)((int)param_2 + 2) == 0" (pointer_expression "*(byte *)((int)param_2 + 2)" (* "*") (cast_expression "(byte *)((int)param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 2)" (( "(") (binary_expression "(int)param_2 + 2" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "2")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar2 = FUN_00015c24();\n    puVar4 = param_4;\n    local_58 = in_t1;\n  }" ({ "{") (expression_statement "iVar2 = FUN_00015c24();" (assignment_expression "iVar2 = FUN_00015c24()" (identifier "iVar2") (= "=") (call_expression "FUN_00015c24()" (identifier "FUN_00015c24") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" (identifier "puVar4") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" (identifier "local_58") (= "=") (identifier "in_t1")) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" (else "else") (compound_statement "{\n    iVar2 = *(int *)(param_5 + 0x20);\n    puVar4 = param_4;\n    if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }\n  }" ({ "{") (expression_statement "iVar2 = *(int *)(param_5 + 0x20);" (assignment_expression "iVar2 = *(int *)(param_5 + 0x20)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_5 + 0x20)" (* "*") (cast_expression "(int *)(param_5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x20)" (( "(") (binary_expression "param_5 + 0x20" (identifier "param_5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" (identifier "puVar4") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (iVar2 != 0) {\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);\n      local_58 = in_t1;\n      goto LAB_00015f38;\n    }" ({ "{") (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" (( "(") (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" (" """) (string_content "  Maximum scattered LBA range descriptor count: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4)" (( "(") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1de0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1de0")) (, ",") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28) + 0x65e4" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" +\n                                in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" +\n                                in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x65e4")) () ")"))) (; ";")) (expression_statement "local_58 = in_t1;" (assignment_expression "local_58 = in_t1" (identifier "local_58") (= "=") (identifier "in_t1")) (; ";")) (goto_statement "goto LAB_00015f38;" (goto "goto") (statement_identifier "LAB_00015f38") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00015ed8:\n  do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );" (statement_identifier "LAB_00015ed8") (: ":") (do_statement "do {\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  } while( true );" (do "do") (compound_statement "{\n    local_44 = puVar4;\n    if (local_2c == *puVar5) {\n      return iVar2;\n    }\n    uVar3 = local_2c;\n    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();\n    param_4 = unaff_s4;\n    if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }\nLAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }\n    param_3 = &local_38;\n    param_4 = unaff_s4;\n    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);\n    if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }\n  }" ({ "{") (expression_statement "local_44 = puVar4;" (assignment_expression "local_44 = puVar4" (identifier "local_44") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (local_2c == *puVar5) {\n      return iVar2;\n    }" (if "if") (parenthesized_expression "(local_2c == *puVar5)" (( "(") (binary_expression "local_2c == *puVar5" (identifier "local_2c") (== "==") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) () ")")) (compound_statement "{\n      return iVar2;\n    }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "uVar3 = local_2c;" (assignment_expression "uVar3 = local_2c" (identifier "uVar3") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();" (assignment_expression "puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))()" (identifier "puVar4") (= "=") (cast_expression "(uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)("  Maximum scattered transfer length: " + in_t9))()" (parenthesized_expression "(**(code **)("  Maximum scattered transfer length: " + in_t9))" (( "(") (pointer_expression "**(code **)("  Maximum scattered transfer length: " + in_t9)" (* "*") (pointer_expression "*(code **)("  Maximum scattered transfer length: " + in_t9)" (* "*") (cast_expression "(code **)("  Maximum scattered transfer length: " + in_t9)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered transfer length: " + in_t9)" (( "(") (binary_expression ""  Maximum scattered transfer length: " + in_t9" (string_literal ""  Maximum scattered transfer length: "" (" """) (string_content "  Maximum scattered transfer length: ") (" """)) (+ "+") (identifier "in_t9")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" (identifier "param_4") (= "=") (identifier "unaff_s4")) (; ";")) (if_statement "if (param_3 == (uint *)0x3) {\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }\n    else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" (if "if") (parenthesized_expression "(param_3 == (uint *)0x3)" (( "(") (binary_expression "param_3 == (uint *)0x3" (identifier "param_3") (== "==") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (compound_statement "{\nLAB_000165d0:\n      puVar4 = local_58;\n      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;\n      if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      param_3 = (uint *)(local_34 >> 0x18);\n      if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }\n    }" ({ "{") (labeled_statement "LAB_000165d0:\n      puVar4 = local_58;" (statement_identifier "LAB_000165d0") (: ":") (expression_statement "puVar4 = local_58;" (assignment_expression "puVar4 = local_58" (identifier "puVar4") (= "=") (identifier "local_58")) (; ";"))) (if_statement "if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;" (if "if") (parenthesized_expression "(unaff_s8 != (uint *)&DAT_00000008)" (( "(") (binary_expression "unaff_s8 != (uint *)&DAT_00000008" (identifier "unaff_s8") (!= "!=") (cast_expression "(uint *)&DAT_00000008" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000008" (& "&") (identifier "DAT_00000008")))) () ")")) (goto_statement "goto LAB_0001644c;" (goto "goto") (statement_identifier "LAB_0001644c") (; ";"))) (if_statement "if ((in_t2 == 0) || (uVar3 != 1)) {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" (if "if") (parenthesized_expression "((in_t2 == 0) || (uVar3 != 1))" (( "(") (binary_expression "(in_t2 == 0) || (uVar3 != 1)" (parenthesized_expression "(in_t2 == 0)" (( "(") (binary_expression "in_t2 == 0" (identifier "in_t2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar3 != 1)" (( "(") (binary_expression "uVar3 != 1" (identifier "uVar3") (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" ({ "{") (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,local_5c)" (( "(") (number_literal "1") (, ",") (identifier "local_5c") () ")"))) (; ";")) (expression_statement "unaff_s8 = local_44 + 2;" (assignment_expression "unaff_s8 = local_44 + 2" (identifier "unaff_s8") (= "=") (binary_expression "local_44 + 2" (identifier "local_44") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" (identifier "unaff_s6") (= "=") (identifier "local_44")) (; ";")) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s6 != unaff_s8);" (do "do") (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" ({ "{") (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" (identifier "param_3") (= "=") (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)unaff_s6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s6")))) (; ";")) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" (identifier "unaff_s6") (= "=") (cast_expression "(uint *)((int)unaff_s6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s6 + 1)" (( "(") (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,unaff_s3)" (( "(") (number_literal "1") (, ",") (identifier "unaff_s3") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s6 != unaff_s8)" (( "(") (binary_expression "unaff_s6 != unaff_s8" (identifier "unaff_s6") (!= "!=") (identifier "unaff_s8")) () ")")) (; ";")) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" (" """) (string_content "  Maximum scattered LBA range transfer length: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (goto_statement "goto LAB_00016020;" (goto "goto") (statement_identifier "LAB_00016020") (; ";")) (} "}"))) (expression_statement "param_3 = (uint *)(local_34 >> 0x18);" (assignment_expression "param_3 = (uint *)(local_34 >> 0x18)" (identifier "param_3") (= "=") (cast_expression "(uint *)(local_34 >> 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 >> 0x18)" (( "(") (binary_expression "local_34 >> 0x18" (identifier "local_34") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (local_50 == (uint *)0x0) {\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }\n      else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(local_50 == (uint *)0x0)" (( "(") (binary_expression "local_50 == (uint *)0x0" (identifier "local_50") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }\n        local_34 = unaff_s6[1];\n        unaff_s1 = unaff_s1 + 1;\n        local_30 = unaff_s6[2];\n      }" ({ "{") (if_statement "if (param_3 != (uint *)0x0) {\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }" (if "if") (parenthesized_expression "(param_3 != (uint *)0x0)" (( "(") (binary_expression "param_3 != (uint *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          unaff_s8 = &local_2c;\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n          puVar4 = local_4c;\n          while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }\n          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        }" ({ "{") (expression_statement "unaff_s8 = &local_2c;" (assignment_expression "unaff_s8 = &local_2c" (identifier "unaff_s8") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,local_5c)" (( "(") (number_literal "1") (, ",") (identifier "local_5c") () ")"))) (; ";")) (expression_statement "puVar4 = local_4c;" (assignment_expression "puVar4 = local_4c" (identifier "puVar4") (= "=") (identifier "local_4c")) (; ";")) (while_statement "while( true ) {\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            puVar4 = (uint *)((int)puVar4 + 1);\n            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n            if (unaff_s8 == puVar4) break;\n            param_3 = (uint *)(uint)*(byte *)puVar4;\n          }" ({ "{") (expression_statement "puVar4 = (uint *)((int)puVar4 + 1);" (assignment_expression "puVar4 = (uint *)((int)puVar4 + 1)" (identifier "puVar4") (= "=") (cast_expression "(uint *)((int)puVar4 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 1)" (( "(") (binary_expression "(int)puVar4 + 1" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,unaff_s3)" (( "(") (number_literal "1") (, ",") (identifier "unaff_s3") () ")"))) (; ";")) (if_statement "if (unaff_s8 == puVar4) break;" (if "if") (parenthesized_expression "(unaff_s8 == puVar4)" (( "(") (binary_expression "unaff_s8 == puVar4" (identifier "unaff_s8") (== "==") (identifier "puVar4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_3 = (uint *)(uint)*(byte *)puVar4;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)puVar4" (identifier "param_3") (= "=") (binary_expression "(uint *)(uint)*(byte *)puVar4" (cast_expression "(uint *)(uint)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)puVar4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4")))) (; ";")) (} "}"))) (expression_statement "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);" (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))" (( "(") (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (* "*") (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" (" """) (string_content "  Maximum scattered LBA range transfer length: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (} "}"))) (expression_statement "local_34 = unaff_s6[1];" (assignment_expression "local_34 = unaff_s6[1]" (identifier "local_34") (= "=") (subscript_expression "unaff_s6[1]" (identifier "unaff_s6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + 1" (identifier "unaff_s1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30 = unaff_s6[2];" (assignment_expression "local_30 = unaff_s6[2]" (identifier "local_30") (= "=") (subscript_expression "unaff_s6[2]" (identifier "unaff_s6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" (else "else") (compound_statement "{\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 2;\n        unaff_s6 = local_44;\n        do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);\n        unaff_s1 = unaff_s1 + 1;\n        param_3 = local_50;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);\n        local_50 = (uint *)0x0;\n      }" ({ "{") (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,local_5c)" (( "(") (number_literal "1") (, ",") (identifier "local_5c") () ")"))) (; ";")) (expression_statement "unaff_s8 = local_44 + 2;" (assignment_expression "unaff_s8 = local_44 + 2" (identifier "unaff_s8") (= "=") (binary_expression "local_44 + 2" (identifier "local_44") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" (identifier "unaff_s6") (= "=") (identifier "local_44")) (; ";")) (do_statement "do {\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        } while (unaff_s8 != unaff_s6);" (do "do") (compound_statement "{\n          bVar1 = *(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);\n        }" ({ "{") (expression_statement "bVar1 = *(byte *)unaff_s6;" (assignment_expression "bVar1 = *(byte *)unaff_s6" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)unaff_s6" (* "*") (cast_expression "(byte *)unaff_s6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s6")))) (; ";")) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" (identifier "unaff_s6") (= "=") (cast_expression "(uint *)((int)unaff_s6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s6 + 1)" (( "(") (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,unaff_s3,bVar1)" (( "(") (number_literal "1") (, ",") (identifier "unaff_s3") (, ",") (identifier "bVar1") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s8 != unaff_s6)" (( "(") (binary_expression "unaff_s8 != unaff_s6" (identifier "unaff_s8") (!= "!=") (identifier "unaff_s6")) () ")")) (; ";")) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + 1" (identifier "unaff_s1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3 = local_50;" (assignment_expression "param_3 = local_50" (identifier "param_3") (= "=") (identifier "local_50")) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1ce8" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1ce8")) () ")"))) (; ";")) (expression_statement "local_50 = (uint *)0x0;" (assignment_expression "local_50 = (uint *)0x0" (identifier "local_50") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" (else "else") (compound_statement "{\n      if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }\n      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;\n      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;\n      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);\n      param_3 = (uint *)0x0;\n      unaff_s1 = unaff_s1 + 1;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);\n    }" ({ "{") (if_statement "if (param_3 < (uint *)0x4) {\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" (if "if") (parenthesized_expression "(param_3 < (uint *)0x4)" (( "(") (binary_expression "param_3 < (uint *)0x4" (identifier "param_3") (< "<") (cast_expression "(uint *)0x4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x4"))) () ")")) (compound_statement "{\n        if (param_3 != (uint *)0x2) goto LAB_00016428;\n        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;\n        unaff_s8 = unaff_s6 + 3;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        goto LAB_00016020;\n      }" ({ "{") (if_statement "if (param_3 != (uint *)0x2) goto LAB_00016428;" (if "if") (parenthesized_expression "(param_3 != (uint *)0x2)" (( "(") (binary_expression "param_3 != (uint *)0x2" (identifier "param_3") (!= "!=") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00016428;" (goto "goto") (statement_identifier "LAB_00016428") (; ";"))) (if_statement "if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;" (if "if") (parenthesized_expression "(unaff_s8 != (uint *)&DAT_00000008)" (( "(") (binary_expression "unaff_s8 != (uint *)&DAT_00000008" (identifier "unaff_s8") (!= "!=") (cast_expression "(uint *)&DAT_00000008" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000008" (& "&") (identifier "DAT_00000008")))) () ")")) (goto_statement "goto LAB_000163d0;" (goto "goto") (statement_identifier "LAB_000163d0") (; ";"))) (expression_statement "unaff_s8 = unaff_s6 + 3;" (assignment_expression "unaff_s8 = unaff_s6 + 3" (identifier "unaff_s8") (= "=") (binary_expression "unaff_s6 + 3" (identifier "unaff_s6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,local_5c)" (( "(") (number_literal "1") (, ",") (identifier "local_5c") () ")"))) (; ";")) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" (identifier "unaff_s6") (= "=") (identifier "local_44")) (; ";")) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" (do "do") (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" ({ "{") (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" (identifier "param_3") (= "=") (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)unaff_s6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s6")))) (; ";")) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" (identifier "unaff_s6") (= "=") (cast_expression "(uint *)((int)unaff_s6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s6 + 1)" (( "(") (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,unaff_s3)" (( "(") (number_literal "1") (, ",") (identifier "unaff_s3") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s8 != unaff_s6)" (( "(") (binary_expression "unaff_s8 != unaff_s6" (identifier "unaff_s8") (!= "!=") (identifier "unaff_s6")) () ")")) (; ";")) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" (" """) (string_content "  Maximum scattered LBA range transfer length: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (goto_statement "goto LAB_00016020;" (goto "goto") (statement_identifier "LAB_00016020") (; ";")) (} "}"))) (if_statement "if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;" (if "if") (parenthesized_expression "(param_3 == (uint *)&DAT_00000005)" (( "(") (binary_expression "param_3 == (uint *)&DAT_00000005" (identifier "param_3") (== "==") (cast_expression "(uint *)&DAT_00000005" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000005" (& "&") (identifier "DAT_00000005")))) () ")")) (goto_statement "goto LAB_000165d0;" (goto "goto") (statement_identifier "LAB_000165d0") (; ";"))) (if_statement "if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;" (if "if") (parenthesized_expression "(param_3 != (uint *)&DAT_00000006)" (( "(") (binary_expression "param_3 != (uint *)&DAT_00000006" (identifier "param_3") (!= "!=") (cast_expression "(uint *)&DAT_00000006" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000006" (& "&") (identifier "DAT_00000006")))) () ")")) (goto_statement "goto LAB_00016428;" (goto "goto") (statement_identifier "LAB_00016428") (; ";"))) (if_statement "if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;" (if "if") (parenthesized_expression "(unaff_s8 == (uint *)0x10)" (( "(") (binary_expression "unaff_s8 == (uint *)0x10" (identifier "unaff_s8") (== "==") (cast_expression "(uint *)0x10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x10"))) () ")")) (goto_statement "goto LAB_00015fd8;" (goto "goto") (statement_identifier "LAB_00015fd8") (; ";"))) (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" (( "(") (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" (" """) (string_content "  Maximum scattered LBA range descriptor count: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0,unaff_s8)" (( "(") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1cf0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1cf0")) (, ",") (identifier "unaff_s8") () ")"))) (; ";")) (expression_statement "param_3 = (uint *)0x0;" (assignment_expression "param_3 = (uint *)0x0" (identifier "param_3") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + 1" (identifier "unaff_s1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);" (call_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8)" (parenthesized_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9 + 0x14" (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9" (string_literal ""  Optimal stream write size: %u blocks\n"" (" """) (string_content "  Optimal stream write size: %u blocks") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(local_44,unaff_s8)" (( "(") (identifier "local_44") (, ",") (identifier "unaff_s8") () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_00016030:\n    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" (statement_identifier "LAB_00016030") (: ":") (for_statement "for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;\n        unaff_s1 = unaff_s1 + 1) {\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" (for "for") (( "(") (; ";") (comma_expression "puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "puVar4 = local_44" (identifier "puVar4") (= "=") (identifier "local_44")) (, ",") (comma_expression "local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "local_44 = param_2" (identifier "local_44") (= "=") (identifier "param_2")) (, ",") (comma_expression "unaff_s4 = param_4, unaff_s1 == 0" (assignment_expression "unaff_s4 = param_4" (identifier "unaff_s4") (= "=") (identifier "param_4")) (, ",") (binary_expression "unaff_s1 == 0" (identifier "unaff_s1") (== "==") (number_literal "0"))))) (; ";") (assignment_expression "unaff_s1 = unaff_s1 + 1" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + 1" (identifier "unaff_s1") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\nLAB_00015f98:\n      param_2 = local_44;\n      unaff_s4 = param_4;\n      if (*(byte *)((int)local_44 + 2) == 0) break;\n      iVar2 = 0;\n      if (param_4 != (uint *)0x0) goto LAB_00015ed8;\n      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);\n      if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }\nLAB_00016448:\n      puVar4 = (uint *)0x10;\nLAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n      iVar2 = local_48 + 0x1cac;\n      param_4 = unaff_s4;\n      local_58 = puVar4;\nLAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);\n      param_3 = (uint *)0x0;\n      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);\n    }" ({ "{") (labeled_statement "LAB_00015f98:\n      param_2 = local_44;" (statement_identifier "LAB_00015f98") (: ":") (expression_statement "param_2 = local_44;" (assignment_expression "param_2 = local_44" (identifier "param_2") (= "=") (identifier "local_44")) (; ";"))) (expression_statement "unaff_s4 = param_4;" (assignment_expression "unaff_s4 = param_4" (identifier "unaff_s4") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (*(byte *)((int)local_44 + 2) == 0) break;" (if "if") (parenthesized_expression "(*(byte *)((int)local_44 + 2) == 0)" (( "(") (binary_expression "*(byte *)((int)local_44 + 2) == 0" (pointer_expression "*(byte *)((int)local_44 + 2)" (* "*") (cast_expression "(byte *)((int)local_44 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_44 + 2)" (( "(") (binary_expression "(int)local_44 + 2" (cast_expression "(int)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_44")) (+ "+") (number_literal "2")) () ")")))) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_4 != (uint *)0x0) goto LAB_00015ed8;" (if "if") (parenthesized_expression "(param_4 != (uint *)0x0)" (( "(") (binary_expression "param_4 != (uint *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00015ed8;" (goto "goto") (statement_identifier "LAB_00015ed8") (; ";"))) (expression_statement "puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);" (assignment_expression "puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(uint)(*(byte *)local_44 >> 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(*(byte *)local_44 >> 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(byte *)local_44 >> 4)" (( "(") (binary_expression "*(byte *)local_44 >> 4" (pointer_expression "*(byte *)local_44" (* "*") (cast_expression "(byte *)local_44" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))) (>> ">>") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (puVar4 != (uint *)0x3) {\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }" (if "if") (parenthesized_expression "(puVar4 != (uint *)0x3)" (( "(") (binary_expression "puVar4 != (uint *)0x3" (identifier "puVar4") (!= "!=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (compound_statement "{\n        if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }\n        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;\n        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;\nLAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);\n        unaff_s8 = local_44 + 4;\n        unaff_s6 = local_44;\n        do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);\n        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);\n        unaff_s4 = param_4;\nLAB_00016020:\n        (*pcVar6)(10);\n        goto LAB_0001602c;\n      }" ({ "{") (if_statement "if (puVar4 < (uint *)0x4) {\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }" (if "if") (parenthesized_expression "(puVar4 < (uint *)0x4)" (( "(") (binary_expression "puVar4 < (uint *)0x4" (identifier "puVar4") (< "<") (cast_expression "(uint *)0x4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x4"))) () ")")) (compound_statement "{\n          local_58 = (uint *)0x10;\n          if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }\n          goto LAB_000163e8;\n        }" ({ "{") (expression_statement "local_58 = (uint *)0x10;" (assignment_expression "local_58 = (uint *)0x10" (identifier "local_58") (= "=") (cast_expression "(uint *)0x10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x10"))) (; ";")) (if_statement "if (puVar4 == (uint *)0x2) {\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }\n          else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" (if "if") (parenthesized_expression "(puVar4 == (uint *)0x2)" (( "(") (binary_expression "puVar4 == (uint *)0x2" (identifier "puVar4") (== "==") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (compound_statement "{\nLAB_000163d0:\n            puVar4 = local_58;\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;\n            local_58 = puVar4;\n          }" ({ "{") (labeled_statement "LAB_000163d0:\n            puVar4 = local_58;" (statement_identifier "LAB_000163d0") (: ":") (expression_statement "puVar4 = local_58;" (assignment_expression "puVar4 = local_58" (identifier "puVar4") (= "=") (identifier "local_58")) (; ";"))) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" (" """) (string_content "  Maximum scattered LBA range descriptor count: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74;" (assignment_expression "iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74" (identifier "iVar2") (= "=") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                    + 0x1c74" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1c74"))) (; ";")) (expression_statement "local_58 = puVar4;" (assignment_expression "local_58 = puVar4" (identifier "local_58") (= "=") (identifier "puVar4")) (; ";")) (} "}")) (else_clause "else {\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" (else "else") (compound_statement "{\nLAB_00016418:\n            local_58 = (uint *)0x10;\nLAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);\n            iVar2 = local_54 + 0x1d28;\n            param_4 = unaff_s4;\n          }" ({ "{") (labeled_statement "LAB_00016418:\n            local_58 = (uint *)0x10;" (statement_identifier "LAB_00016418") (: ":") (expression_statement "local_58 = (uint *)0x10;" (assignment_expression "local_58 = (uint *)0x10" (identifier "local_58") (= "=") (cast_expression "(uint *)0x10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x10"))) (; ";"))) (labeled_statement "LAB_00016428:\n            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (statement_identifier "LAB_00016428") (: ":") (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" (" """) (string_content "  Maximum scattered LBA range descriptor count: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x30")) () ")"))))) (; ";"))) (expression_statement "iVar2 = local_54 + 0x1d28;" (assignment_expression "iVar2 = local_54 + 0x1d28" (identifier "iVar2") (= "=") (binary_expression "local_54 + 0x1d28" (identifier "local_54") (+ "+") (number_literal "0x1d28"))) (; ";")) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" (identifier "param_4") (= "=") (identifier "unaff_s4")) (; ";")) (} "}")))) (goto_statement "goto LAB_000163e8;" (goto "goto") (statement_identifier "LAB_000163e8") (; ";")) (} "}"))) (if_statement "if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;" (if "if") (parenthesized_expression "(puVar4 == (uint *)&DAT_00000005)" (( "(") (binary_expression "puVar4 == (uint *)&DAT_00000005" (identifier "puVar4") (== "==") (cast_expression "(uint *)&DAT_00000005" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000005" (& "&") (identifier "DAT_00000005")))) () ")")) (goto_statement "goto LAB_00016448;" (goto "goto") (statement_identifier "LAB_00016448") (; ";"))) (if_statement "if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;" (if "if") (parenthesized_expression "(puVar4 != (uint *)&DAT_00000006)" (( "(") (binary_expression "puVar4 != (uint *)&DAT_00000006" (identifier "puVar4") (!= "!=") (cast_expression "(uint *)&DAT_00000006" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000006" (& "&") (identifier "DAT_00000006")))) () ")")) (goto_statement "goto LAB_00016418;" (goto "goto") (statement_identifier "LAB_00016418") (; ";"))) (labeled_statement "LAB_00015fd8:\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (statement_identifier "LAB_00015fd8") (: ":") (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,local_5c)" (( "(") (number_literal "1") (, ",") (identifier "local_5c") () ")"))) (; ";"))) (expression_statement "unaff_s8 = local_44 + 4;" (assignment_expression "unaff_s8 = local_44 + 4" (identifier "unaff_s8") (= "=") (binary_expression "local_44 + 4" (identifier "local_44") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "unaff_s6 = local_44;" (assignment_expression "unaff_s6 = local_44" (identifier "unaff_s6") (= "=") (identifier "local_44")) (; ";")) (do_statement "do {\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        } while (unaff_s8 != unaff_s6);" (do "do") (compound_statement "{\n          param_3 = (uint *)(uint)*(byte *)unaff_s6;\n          unaff_s6 = (uint *)((int)unaff_s6 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);\n        }" ({ "{") (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" (identifier "param_3") (= "=") (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)unaff_s6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s6")))) (; ";")) (expression_statement "unaff_s6 = (uint *)((int)unaff_s6 + 1);" (assignment_expression "unaff_s6 = (uint *)((int)unaff_s6 + 1)" (identifier "unaff_s6") (= "=") (cast_expression "(uint *)((int)unaff_s6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s6 + 1)" (( "(") (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,unaff_s3)" (( "(") (number_literal "1") (, ",") (identifier "unaff_s3") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s8 != unaff_s6)" (( "(") (binary_expression "unaff_s8 != unaff_s6" (identifier "unaff_s8") (!= "!=") (identifier "unaff_s6")) () ")")) (; ";")) (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" (" """) (string_content "  Maximum scattered LBA range transfer length: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "unaff_s4 = param_4;" (assignment_expression "unaff_s4 = param_4" (identifier "unaff_s4") (= "=") (identifier "param_4")) (; ";")) (labeled_statement "LAB_00016020:\n        (*pcVar6)(10);" (statement_identifier "LAB_00016020") (: ":") (expression_statement "(*pcVar6)(10);" (call_expression "(*pcVar6)(10)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";"))) (goto_statement "goto LAB_0001602c;" (goto "goto") (statement_identifier "LAB_0001602c") (; ";")) (} "}"))) (labeled_statement "LAB_00016448:\n      puVar4 = (uint *)0x10;" (statement_identifier "LAB_00016448") (: ":") (expression_statement "puVar4 = (uint *)0x10;" (assignment_expression "puVar4 = (uint *)0x10" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x10"))) (; ";"))) (labeled_statement "LAB_0001644c:\n      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (statement_identifier "LAB_0001644c") (: ":") (expression_statement "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);" (assignment_expression "pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" (" """) (string_content "  Maximum scattered LBA range descriptor count: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x30")) () ")"))))) (; ";"))) (expression_statement "iVar2 = local_48 + 0x1cac;" (assignment_expression "iVar2 = local_48 + 0x1cac" (identifier "iVar2") (= "=") (binary_expression "local_48 + 0x1cac" (identifier "local_48") (+ "+") (number_literal "0x1cac"))) (; ";")) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" (identifier "param_4") (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "local_58 = puVar4;" (assignment_expression "local_58 = puVar4" (identifier "local_58") (= "=") (identifier "puVar4")) (; ";")) (labeled_statement "LAB_000163e8:\n      (*pcVar6)(iVar2,puVar4);" (statement_identifier "LAB_000163e8") (: ":") (expression_statement "(*pcVar6)(iVar2,puVar4);" (call_expression "(*pcVar6)(iVar2,puVar4)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(iVar2,puVar4)" (( "(") (identifier "iVar2") (, ",") (identifier "puVar4") () ")"))) (; ";"))) (expression_statement "param_3 = (uint *)0x0;" (assignment_expression "param_3 = (uint *)0x0" (identifier "param_3") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);" (call_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58)" (parenthesized_expression "(**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9 + 0x14" (binary_expression ""  Optimal stream write size: %u blocks\n" + in_t9" (string_literal ""  Optimal stream write size: %u blocks\n"" (" """) (string_content "  Optimal stream write size: %u blocks") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(local_44,local_58)" (( "(") (identifier "local_44") (, ",") (identifier "local_58") () ")"))) (; ";")) (} "}")))) (expression_statement "param_3 = &local_38;" (assignment_expression "param_3 = &local_38" (identifier "param_3") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (; ";")) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" (identifier "param_4") (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);" (assignment_expression "iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" (identifier "iVar2") (= "=") (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))\n                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))" (( "(") (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" (* "*") (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 4)" (( "(") (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 4" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" (" """) (string_content "  Maximum scattered LBA range transfer length: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s2") (, ",") (identifier "param_3") (, ",") (identifier "unaff_s4") (, ",") (number_literal "0xffffffff") (, ",") (number_literal "0xffffffff") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }\n    else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      unaff_s6 = (uint *)((int)param_2 + local_38);\n      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;\n      local_58 = unaff_s8;\n      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }\n      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);\n      iVar2 = 0x61;\n      puVar4 = param_4;\n    }" ({ "{") (expression_statement "unaff_s6 = (uint *)((int)param_2 + local_38);" (assignment_expression "unaff_s6 = (uint *)((int)param_2 + local_38)" (identifier "unaff_s6") (= "=") (cast_expression "(uint *)((int)param_2 + local_38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + local_38)" (( "(") (binary_expression "(int)param_2 + local_38" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "local_38")) () ")")))) (; ";")) (expression_statement "unaff_s8 = (uint *)(uint)(byte)*unaff_s6;" (assignment_expression "unaff_s8 = (uint *)(uint)(byte)*unaff_s6" (identifier "unaff_s8") (= "=") (binary_expression "(uint *)(uint)(byte)*unaff_s6" (cast_expression "(uint *)(uint)(byte)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")")))) (* "*") (identifier "unaff_s6"))) (; ";")) (expression_statement "local_58 = unaff_s8;" (assignment_expression "local_58 = unaff_s8" (identifier "local_58") (= "=") (identifier "unaff_s8")) (; ";")) (if_statement "if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }" (if "if") (parenthesized_expression "((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2)" (( "(") (binary_expression "(int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2" (cast_expression "(int)((int)unaff_s8 + local_38 + 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)unaff_s8 + local_38 + 3)" (( "(") (binary_expression "(int)unaff_s8 + local_38 + 3" (binary_expression "(int)unaff_s8 + local_38" (cast_expression "(int)unaff_s8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s8")) (+ "+") (identifier "local_38")) (+ "+") (number_literal "3")) () ")"))) (< "<") (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2"))) () ")")) (compound_statement "{\n        bVar1 = *(byte *)((int)unaff_s6 + 1);\n        local_44 = unaff_s6 + 1;\n        param_3 = (uint *)(uint)*(byte *)unaff_s6;\n        if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }\n        uVar3 = bVar1 & 0xf;\n        if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }\nLAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;\n        param_4 = unaff_s4;\n        goto LAB_00016030;\n      }" ({ "{") (expression_statement "bVar1 = *(byte *)((int)unaff_s6 + 1);" (assignment_expression "bVar1 = *(byte *)((int)unaff_s6 + 1)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((int)unaff_s6 + 1)" (* "*") (cast_expression "(byte *)((int)unaff_s6 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s6 + 1)" (( "(") (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "local_44 = unaff_s6 + 1;" (assignment_expression "local_44 = unaff_s6 + 1" (identifier "local_44") (= "=") (binary_expression "unaff_s6 + 1" (identifier "unaff_s6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3 = (uint *)(uint)*(byte *)unaff_s6;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)unaff_s6" (identifier "param_3") (= "=") (binary_expression "(uint *)(uint)*(byte *)unaff_s6" (cast_expression "(uint *)(uint)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)unaff_s6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s6")))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }\n        else {\n          in_t2 = 0;\n        }" (if "if") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);\n        }" ({ "{") (expression_statement "in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);" (assignment_expression "in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6)" (identifier "in_t2") (= "=") (call_expression "(uint)(*(byte *)unaff_s6 >> 4 == 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(byte *)unaff_s6 >> 4 == 6)" (( "(") (binary_expression "*(byte *)unaff_s6 >> 4 == 6" (binary_expression "*(byte *)unaff_s6 >> 4" (pointer_expression "*(byte *)unaff_s6" (* "*") (cast_expression "(byte *)unaff_s6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s6"))) (>> ">>") (number_literal "4")) (== "==") (number_literal "6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          in_t2 = 0;\n        }" (else "else") (compound_statement "{\n          in_t2 = 0;\n        }" ({ "{") (expression_statement "in_t2 = 0;" (assignment_expression "in_t2 = 0" (identifier "in_t2") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "uVar3 = bVar1 & 0xf;" (assignment_expression "uVar3 = bVar1 & 0xf" (identifier "uVar3") (= "=") (binary_expression "bVar1 & 0xf" (identifier "bVar1") (& "&") (number_literal "0xf"))) (; ";")) (if_statement "if (uVar3 < 0xb) {\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }" (if "if") (parenthesized_expression "(uVar3 < 0xb)" (( "(") (binary_expression "uVar3 < 0xb" (identifier "uVar3") (< "<") (number_literal "0xb")) () ")")) (compound_statement "{\n                    \n                    \n          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);\n          return iVar2;\n        }" ({ "{") (expression_statement "iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);" (assignment_expression "iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" (identifier "iVar2") (= "=") (call_expression "(*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))\n                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" (parenthesized_expression "(*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))" (( "(") (pointer_expression "*(code *)(local_60[uVar3] + in_t9 + 0x2bab0)" (* "*") (cast_expression "(code *)(local_60[uVar3] + in_t9 + 0x2bab0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_60[uVar3] + in_t9 + 0x2bab0)" (( "(") (binary_expression "local_60[uVar3] + in_t9 + 0x2bab0" (binary_expression "local_60[uVar3] + in_t9" (subscript_expression "local_60[uVar3]" (identifier "local_60") ([ "[") (identifier "uVar3") (] "]")) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x2bab0")) () ")")))) () ")")) (argument_list "(((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf)" (( "(") (binary_expression "((uint)bVar1 << 0x1a) >> 0x1e" (parenthesized_expression "((uint)bVar1 << 0x1a)" (( "(") (binary_expression "(uint)bVar1 << 0x1a" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (<< "<<") (number_literal "0x1a")) () ")")) (>> ">>") (number_literal "0x1e")) (, ",") (binary_expression "(uint)param_3 & 0xf" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (& "&") (number_literal "0xf")) () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (labeled_statement "LAB_0001602c:\n        unaff_s1 = unaff_s1 + 1;" (statement_identifier "LAB_0001602c") (: ":") (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + 1" (identifier "unaff_s1") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "param_4 = unaff_s4;" (assignment_expression "param_4 = unaff_s4" (identifier "param_4") (= "=") (identifier "unaff_s4")) (; ";")) (goto_statement "goto LAB_00016030;" (goto "goto") (statement_identifier "LAB_00016030") (; ";")) (} "}"))) (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" (( "(") (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" (" """) (string_content "  Maximum scattered LBA range descriptor count: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60,(int)unaff_s2 - local_38)" (( "(") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +\n                 0x1b60" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1b60")) (, ",") (binary_expression "(int)unaff_s2 - local_38" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (- "-") (identifier "local_38")) () ")"))) (; ";")) (expression_statement "iVar2 = 0x61;" (assignment_expression "iVar2 = 0x61" (identifier "iVar2") (= "=") (number_literal "0x61")) (; ";")) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" (identifier "puVar4") (= "=") (identifier "param_4")) (; ";")) (} "}")) (else_clause "else {\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" (else "else") (compound_statement "{\n      puVar4 = (uint *)(local_34 >> 0x18);\n      param_3 = puVar4;\n      if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }\n      if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }\n    }" ({ "{") (expression_statement "puVar4 = (uint *)(local_34 >> 0x18);" (assignment_expression "puVar4 = (uint *)(local_34 >> 0x18)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(local_34 >> 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 >> 0x18)" (( "(") (binary_expression "local_34 >> 0x18" (identifier "local_34") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "param_3 = puVar4;" (assignment_expression "param_3 = puVar4" (identifier "param_3") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (puVar4 != (uint *)0x0) {\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }" (if "if") (parenthesized_expression "(puVar4 != (uint *)0x0)" (( "(") (binary_expression "puVar4 != (uint *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        unaff_s2 = &local_2c;\n        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);\n        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;\n        param_2 = local_4c;\n        while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }\n        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);\n        local_60 = puVar4;\n      }" ({ "{") (expression_statement "unaff_s2 = &local_2c;" (assignment_expression "unaff_s2 = &local_2c" (identifier "unaff_s2") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))\n                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             ) + 0x1c28" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28\n                             )" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1c28")) () ")"))) (; ";")) (expression_statement "unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30;" (assignment_expression "unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30" (identifier "unaff_s1") (= "=") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1c30" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1c30"))) (; ";")) (expression_statement "param_2 = local_4c;" (assignment_expression "param_2 = local_4c" (identifier "param_2") (= "=") (identifier "local_4c")) (; ";")) (while_statement "while( true ) {\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          param_2 = (uint *)((int)param_2 + 1);\n          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);\n          if (unaff_s2 == param_2) break;\n          param_3 = (uint *)(uint)*(byte *)param_2;\n        }" ({ "{") (expression_statement "param_2 = (uint *)((int)param_2 + 1);" (assignment_expression "param_2 = (uint *)((int)param_2 + 1)" (identifier "param_2") (= "=") (cast_expression "(uint *)((int)param_2 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 1)" (( "(") (binary_expression "(int)param_2 + 1" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);" (call_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1)" (parenthesized_expression "(**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))" (( "(") (pointer_expression "**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (pointer_expression "*(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (* "*") (cast_expression "(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Stream granularity size: %u\n" + in_t9 + 0x14)" (( "(") (binary_expression ""  Stream granularity size: %u\n" + in_t9 + 0x14" (binary_expression ""  Stream granularity size: %u\n" + in_t9" (string_literal ""  Stream granularity size: %u\n"" (" """) (string_content "  Stream granularity size: %u") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(1,unaff_s1)" (( "(") (number_literal "1") (, ",") (identifier "unaff_s1") () ")"))) (; ";")) (if_statement "if (unaff_s2 == param_2) break;" (if "if") (parenthesized_expression "(unaff_s2 == param_2)" (( "(") (binary_expression "unaff_s2 == param_2" (identifier "unaff_s2") (== "==") (identifier "param_2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_3 = (uint *)(uint)*(byte *)param_2;" (assignment_expression "param_3 = (uint *)(uint)*(byte *)param_2" (identifier "param_3") (= "=") (binary_expression "(uint *)(uint)*(byte *)param_2" (cast_expression "(uint *)(uint)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")))) (; ";")) (} "}"))) (expression_statement "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);" (call_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))" (( "(") (pointer_expression "**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (* "*") (pointer_expression "*(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc)" (( "(") (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9 + 0xc" (binary_expression ""  Maximum scattered LBA range transfer length: " + in_t9" (string_literal ""  Maximum scattered LBA range transfer length: "" (" """) (string_content "  Maximum scattered LBA range transfer length: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (expression_statement "local_60 = puVar4;" (assignment_expression "local_60 = puVar4" (identifier "local_60") (= "=") (identifier "puVar4")) (; ";")) (} "}"))) (if_statement "if (iVar2 == -2) {\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }\n      else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" (if "if") (parenthesized_expression "(iVar2 == -2)" (( "(") (binary_expression "iVar2 == -2" (identifier "iVar2") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);\n        iVar2 = 0x61;\n        puVar4 = param_4;\n      }" ({ "{") (expression_statement "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38);" (call_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))\n                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38)" (parenthesized_expression "(**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))" (( "(") (pointer_expression "**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (pointer_expression "*(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (* "*") (cast_expression "(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30)" (( "(") (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30" (binary_expression ""  Maximum scattered LBA range descriptor count: " + in_t9" (string_literal ""  Maximum scattered LBA range descriptor count: "" (" """) (string_content "  Maximum scattered LBA range descriptor count: ") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0,local_38)" (( "(") (binary_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)\n                   + 0x1bc0" (pointer_expression "*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (* "*") (cast_expression "(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)" (( "(") (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28" (binary_expression ""Block limits extension VPD page length too short=%d\n" + in_t9" (string_literal ""Block limits extension VPD page length too short=%d\n"" (" """) (string_content "Block limits extension VPD page length too short=%d") (escape_sequence "\n") (" """)) (+ "+") (identifier "in_t9")) (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x1bc0")) (, ",") (identifier "local_38") () ")"))) (; ";")) (expression_statement "iVar2 = 0x61;" (assignment_expression "iVar2 = 0x61" (identifier "iVar2") (= "=") (number_literal "0x61")) (; ";")) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" (identifier "puVar4") (= "=") (identifier "param_4")) (; ";")) (} "}")) (else_clause "else {\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" (else "else") (compound_statement "{\nLAB_00015f38:\n        iVar2 = 0;\n        puVar4 = param_4;\n      }" ({ "{") (labeled_statement "LAB_00015f38:\n        iVar2 = 0;" (statement_identifier "LAB_00015f38") (: ":") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";"))) (expression_statement "puVar4 = param_4;" (assignment_expression "puVar4 = param_4" (identifier "puVar4") (= "=") (identifier "param_4")) (; ";")) (} "}")))) (} "}")))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))
(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: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (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: (binary_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: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)))) (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))) (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: (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: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (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)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (string_literal (string_content)) right: (identifier))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier) (identifier))))) condition: (parenthesized_expression (binary_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: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier))))))) (labeled_statement label: (statement_identifier) (for_statement condition: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (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 (labeled_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (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))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (number_literal))))) (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))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (number_literal) (number_literal))))) (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)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier)))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (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 (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))) right: (number_literal)) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier)) right: (number_literal)))))) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)) (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (return_statement (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content)) right: (identifier)) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (string_literal (string_content) (escape_sequence)) right: (identifier)) right: (number_literal))))) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))))) condition: (parenthesized_expression (true)))))))

int MASKED(undefined4 param_1,uint *param_2,uint *param_3,uint *param_4,int param_5)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  uint *in_t1;
  uint in_t2;
  int unaff_s1;
  uint *unaff_s2;
  int unaff_s3;
  uint *unaff_s4;
  uint *puVar5;
  uint *unaff_s6;
  int in_t9;
  code *pcVar6;
  uint *unaff_s8;
  uint *local_60;
  int local_5c;
  uint *local_58;
  int local_54;
  uint *local_50;
  uint *local_4c;
  int local_48;
  uint *local_44;
  uint local_38;
  uint local_34;
  uint local_30;
  uint local_2c;
  
  puVar5 = *(uint **)("  Maximum scattered transfer length: " + in_t9 + 0x14);
  local_2c = *puVar5;
  local_58 = in_t1;
  if (*(char *)(param_5 + 4) != '\0') {
    local_4c = &local_34;
    unaff_s1 = 0;
    unaff_s6 = *(uint **)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);
    local_48 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);
    local_50 = (uint *)0x0;
    unaff_s3 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
               0x1c30;
    local_5c = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
               0x1c28;
    local_34 = 0;
    local_60 = unaff_s6 + 0x17a4;
    local_30 = 0;
    local_38 = 0xffffffff;
    puVar4 = param_4;
    local_44 = param_2;
    unaff_s2 = param_3;
    local_54 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28);
    goto LAB_00015f98;
  }
  if (*(byte *)((int)param_2 + 2) == 0) {
    iVar2 = FUN_00015c24();
    puVar4 = param_4;
    local_58 = in_t1;
  }
  else {
    iVar2 = *(int *)(param_5 + 0x20);
    puVar4 = param_4;
    if (iVar2 != 0) {
      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
                 0x1de0,*(int *)("Block limits extension VPD page length too short=%d\n" +
                                in_t9 + 0x28) + 0x65e4);
      local_58 = in_t1;
      goto LAB_00015f38;
    }
  }
LAB_00015ed8:
  do {
    local_44 = puVar4;
    if (local_2c == *puVar5) {
      return iVar2;
    }
    uVar3 = local_2c;
    puVar4 = (uint *)(**(code **)("  Maximum scattered transfer length: " + in_t9))();
    param_4 = unaff_s4;
    if (param_3 == (uint *)0x3) {
LAB_000165d0:
      puVar4 = local_58;
      if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_0001644c;
      if ((in_t2 == 0) || (uVar3 != 1)) {
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s8 = local_44 + 2;
        unaff_s6 = local_44;
        do {
          param_3 = (uint *)(uint)*(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
        } while (unaff_s6 != unaff_s8);
        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);
        goto LAB_00016020;
      }
      param_3 = (uint *)(local_34 >> 0x18);
      if (local_50 == (uint *)0x0) {
        if (param_3 != (uint *)0x0) {
          unaff_s8 = &local_2c;
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
          puVar4 = local_4c;
          while( true ) {
            puVar4 = (uint *)((int)puVar4 + 1);
            (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
            if (unaff_s8 == puVar4) break;
            param_3 = (uint *)(uint)*(byte *)puVar4;
          }
          (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);
        }
        local_34 = unaff_s6[1];
        unaff_s1 = unaff_s1 + 1;
        local_30 = unaff_s6[2];
      }
      else {
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s8 = local_44 + 2;
        unaff_s6 = local_44;
        do {
          bVar1 = *(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3,bVar1);
        } while (unaff_s8 != unaff_s6);
        unaff_s1 = unaff_s1 + 1;
        param_3 = local_50;
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))
                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28
                             ) + 0x1ce8);
        local_50 = (uint *)0x0;
      }
    }
    else {
      if (param_3 < (uint *)0x4) {
        if (param_3 != (uint *)0x2) goto LAB_00016428;
        if (unaff_s8 != (uint *)&DAT_00000008) goto LAB_000163d0;
        unaff_s8 = unaff_s6 + 3;
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s6 = local_44;
        do {
          param_3 = (uint *)(uint)*(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
        } while (unaff_s8 != unaff_s6);
        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);
        goto LAB_00016020;
      }
      if (param_3 == (uint *)&DAT_00000005) goto LAB_000165d0;
      if (param_3 != (uint *)&DAT_00000006) goto LAB_00016428;
      if (unaff_s8 == (uint *)0x10) goto LAB_00015fd8;
      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
                 0x1cf0,unaff_s8);
      param_3 = (uint *)0x0;
      unaff_s1 = unaff_s1 + 1;
      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,unaff_s8);
    }
LAB_00016030:
    for (; puVar4 = local_44, local_44 = param_2, unaff_s4 = param_4, unaff_s1 == 0;
        unaff_s1 = unaff_s1 + 1) {
LAB_00015f98:
      param_2 = local_44;
      unaff_s4 = param_4;
      if (*(byte *)((int)local_44 + 2) == 0) break;
      iVar2 = 0;
      if (param_4 != (uint *)0x0) goto LAB_00015ed8;
      puVar4 = (uint *)(uint)(*(byte *)local_44 >> 4);
      if (puVar4 != (uint *)0x3) {
        if (puVar4 < (uint *)0x4) {
          local_58 = (uint *)0x10;
          if (puVar4 == (uint *)0x2) {
LAB_000163d0:
            puVar4 = local_58;
            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);
            iVar2 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)
                    + 0x1c74;
            local_58 = puVar4;
          }
          else {
LAB_00016418:
            local_58 = (uint *)0x10;
LAB_00016428:
            pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);
            iVar2 = local_54 + 0x1d28;
            param_4 = unaff_s4;
          }
          goto LAB_000163e8;
        }
        if (puVar4 == (uint *)&DAT_00000005) goto LAB_00016448;
        if (puVar4 != (uint *)&DAT_00000006) goto LAB_00016418;
LAB_00015fd8:
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,local_5c);
        unaff_s8 = local_44 + 4;
        unaff_s6 = local_44;
        do {
          param_3 = (uint *)(uint)*(byte *)unaff_s6;
          unaff_s6 = (uint *)((int)unaff_s6 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s3);
        } while (unaff_s8 != unaff_s6);
        pcVar6 = *(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc);
        unaff_s4 = param_4;
LAB_00016020:
        (*pcVar6)(10);
        goto LAB_0001602c;
      }
LAB_00016448:
      puVar4 = (uint *)0x10;
LAB_0001644c:
      pcVar6 = *(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30);
      iVar2 = local_48 + 0x1cac;
      param_4 = unaff_s4;
      local_58 = puVar4;
LAB_000163e8:
      (*pcVar6)(iVar2,puVar4);
      param_3 = (uint *)0x0;
      (**(code **)("  Optimal stream write size: %u blocks\n" + in_t9 + 0x14))(local_44,local_58);
    }
    param_3 = &local_38;
    param_4 = unaff_s4;
    iVar2 = (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 4))
                      (param_2,unaff_s2,param_3,unaff_s4,0xffffffff,0xffffffff);
    if (iVar2 == 0) {
      unaff_s6 = (uint *)((int)param_2 + local_38);
      unaff_s8 = (uint *)(uint)(byte)*unaff_s6;
      local_58 = unaff_s8;
      if ((int)((int)unaff_s8 + local_38 + 3) < (int)unaff_s2) {
        bVar1 = *(byte *)((int)unaff_s6 + 1);
        local_44 = unaff_s6 + 1;
        param_3 = (uint *)(uint)*(byte *)unaff_s6;
        if ((char)bVar1 < '\0') {
          in_t2 = (uint)(*(byte *)unaff_s6 >> 4 == 6);
        }
        else {
          in_t2 = 0;
        }
        uVar3 = bVar1 & 0xf;
        if (uVar3 < 0xb) {
                    /* WARNING: Could not recover jumptable at 0x000160cc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar2 = (*(code *)(local_60[uVar3] + in_t9 + 0x2bab0))
                            (((uint)bVar1 << 0x1a) >> 0x1e,(uint)param_3 & 0xf);
          return iVar2;
        }
LAB_0001602c:
        unaff_s1 = unaff_s1 + 1;
        param_4 = unaff_s4;
        goto LAB_00016030;
      }
      (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28) +
                 0x1b60,(int)unaff_s2 - local_38);
      iVar2 = 0x61;
      puVar4 = param_4;
    }
    else {
      puVar4 = (uint *)(local_34 >> 0x18);
      param_3 = puVar4;
      if (puVar4 != (uint *)0x0) {
        unaff_s2 = &local_2c;
        (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))
                  (1,*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28
                             ) + 0x1c28);
        unaff_s1 = *(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)
                   + 0x1c30;
        param_2 = local_4c;
        while( true ) {
          param_2 = (uint *)((int)param_2 + 1);
          (**(code **)("  Stream granularity size: %u\n" + in_t9 + 0x14))(1,unaff_s1);
          if (unaff_s2 == param_2) break;
          param_3 = (uint *)(uint)*(byte *)param_2;
        }
        (**(code **)("  Maximum scattered LBA range transfer length: " + in_t9 + 0xc))(10);
        local_60 = puVar4;
      }
      if (iVar2 == -2) {
        (**(code **)("  Maximum scattered LBA range descriptor count: " + in_t9 + 0x30))
                  (*(int *)("Block limits extension VPD page length too short=%d\n" + in_t9 + 0x28)
                   + 0x1bc0,local_38);
        iVar2 = 0x61;
        puVar4 = param_4;
      }
      else {
LAB_00015f38:
        iVar2 = 0;
        puVar4 = param_4;
      }
    }
  } while( true );
}

