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

int __regparm3 print_read_cap(int fd,opts_t *op)

{
  int iVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  byte bVar6;
  uint *puVar7;
  int iVar8;
  int iVar9;
  byte bVar10;
  undefined4 extraout_ECX;
  uint uVar11;
  int iVar12;
  uint uVar13;
  uint uVar14;
  int in_GS_OFFSET;
  bool bVar15;
  undefined8 uVar16;
  uint uStackY_b8;
  uint uStackY_b0;
  uint local_88;
  uint local_84;
  uint local_80;
  uint uStack_7c;
  uint8_t *free_resp_buff;
  char b [80];
  
  iVar9 = *(int *)(in_GS_OFFSET + 0x14);
  free_resp_buff = (uint8_t *)0x0;
  uVar16 = sg_memalign(0x20,0,&free_resp_buff,0);
  puVar7 = (uint *)uVar16;
  if (puVar7 == (uint *)0x0) {
    uVar14 = 0xffffffff;
    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);
  }
  else {
    if (op->do_rcap16 == false) {
      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));
      if (iVar8 == 0) {
        uVar14 = *puVar7;
        uVar13 = puVar7[1];
        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18
        ;
        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18
        ;
        if (uVar11 == 0xffffffff) {
          uVar14 = 0xfffffffe;
          if (op->verbose != 0) {
            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");
          }
        }
        else {
          puts("Read Capacity (10) results:");
          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);
          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);
          iVar8 = *(int *)((int)&op->total_byte_count + 4);
          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;
          iVar12 = (int)((ulonglong)lVar5 >> 0x20);
          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);
          iVar1 = iVar8 - iVar12;
          local_88 = uVar11;
          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {
            op->total_byte_count = lVar5;
          }
        }
        goto LAB_00013d47;
      }
    }
    else {
      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);
      if (iVar8 == 0) {
        uVar14 = *puVar7;
        uVar13 = puVar7[1];
        uVar11 = puVar7[2];
        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |
                   uVar13 << 0x18;
        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |
                   uVar14 << 0x18;
        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18
        ;
        puts("Read Capacity (16) results:");
        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1
                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);
        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",
                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,
                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);
        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",
                     *(byte *)((int)puVar7 + 0xd) & 0xf);
        __printf_chk(1,"   Lowest aligned logical block address=%d\n",
                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |
                     *(ushort *)((int)puVar7 + 0xe) >> 8);
        iVar8 = local_80 + (0xfffffffe < local_84);
        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);
        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);
        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;
        uVar11 = (uint)lVar5;
        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;
        iVar8 = *(int *)((int)&op->total_byte_count + 4);
        uVar13 = (uint)((uint)op->total_byte_count < uVar11);
        iVar1 = iVar8 - iVar12;
        local_88 = uVar14;
        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {
          *(uint *)&op->total_byte_count = uVar11;
          *(int *)((int)&op->total_byte_count + 4) = iVar12;
        }
        goto LAB_00013d47;
      }
    }
    sg_get_category_sense_str(iVar8,0x50,b,op->verbose);
    uVar14 = 0xffffffff;
    pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);
  }
LAB_00013d47:
  if (free_resp_buff != (uint8_t *)0x0) {
    free(free_resp_buff);
  }
  if (iVar9 != *(int *)(in_GS_OFFSET + 0x14)) {
    __stack_chk_fail_local();
    uStackY_b0 = 0;
    uStackY_b8 = local_88;
    if ((int)local_84 < 0) {
      uStackY_b8 = -local_88;
      uStackY_b0 = 0xffffffff;
      local_84 = -(local_84 + (local_88 != 0));
    }
    if ((int)uStack_7c < 0) {
      bVar15 = local_80 != 0;
      local_80 = -local_80;
      uStackY_b0 = ~uStackY_b0;
      uStack_7c = -(uStack_7c + bVar15);
    }
    if (uStack_7c == 0) {
      if (local_84 < local_80) {
        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);
      }
      else {
        if (local_80 == 0) {
          local_80 = 1 / 0;
        }
        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /
                     (ulonglong)local_80);
      }
    }
    else if (local_84 < uStack_7c) {
      iVar9 = 0;
    }
    else {
      uVar14 = 0x1f;
      if (uStack_7c != 0) {
        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {
        }
      }
      if ((uVar14 ^ 0x1f) == 0) {
        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {
          iVar9 = 1;
        }
      }
      else {
        bVar6 = (byte)(uVar14 ^ 0x1f);
        bVar10 = 0x20 - bVar6;
        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));
        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),
                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));
        uVar4 = uVar3 / uVar2;
        iVar9 = (int)uVar4;
        uVar14 = (uint)(uVar3 % uVar2);
        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));
        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);
        if ((uVar14 < uVar13) ||
           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {
          iVar9 = iVar9 + -1;
        }
      }
    }
    if (uStackY_b0 != 0) {
      iVar9 = -iVar9;
    }
    return iVar9;
  }
  return uVar14;
}



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

uint __regparm3 FUN_00013c70(undefined4 param_1,int param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  byte bVar5;
  uint *puVar6;
  int iVar7;
  byte bVar8;
  undefined4 extraout_ECX;
  uint uVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  int in_GS_OFFSET;
  bool bVar13;
  undefined8 uVar14;
  uint uStackY_b8;
  uint uStackY_b0;
  uint local_88;
  uint local_84;
  uint local_80;
  uint uStack_7c;
  void *local_74;
  undefined1 local_70 [80];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x13c7d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_74 = (void *)0x0;
  uVar14 = sg_memalign(0x20,0,&local_74,0);
  puVar6 = (uint *)uVar14;
  if (puVar6 == (uint *)0x0) {
    uVar12 = 0xffffffff;
    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);
  }
  else {
    if (*(char *)(param_2 + 0xd) == '\0') {
      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),
                               (int)((ulonglong)uVar14 >> 0x20));
      if (iVar7 == 0) {
        uVar12 = *puVar6;
        uVar11 = puVar6[1];
        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18
        ;
        if (uVar9 == 0xffffffff) {
          uVar12 = 0xfffffffe;
          if (*(int *)(param_2 + 0x3c) != 0) {
            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");
          }
        }
        else {
          puts("Read Capacity (10) results:");
          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);
          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);
          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;
          iVar10 = (int)((ulonglong)lVar4 >> 0x20);
          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);
          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;
          local_88 = uVar9;
          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=
              (int)(iVar7 - uVar11) < 0) {
            *(longlong *)(param_2 + 0x48) = lVar4;
          }
        }
        goto LAB_00013d47;
      }
    }
    else {
      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));
      if (iVar7 == 0) {
        uVar12 = *puVar6;
        uVar11 = puVar6[1];
        uVar9 = puVar6[2];
        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                   uVar11 << 0x18;
        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                   uVar12 << 0x18;
        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
        puts("Read Capacity (16) results:");
        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1
                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);
        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",
                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,
                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);
        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",
                     *(byte *)((int)puVar6 + 0xd) & 0xf);
        __printf_chk(1,"   Lowest aligned logical block address=%d\n",
                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |
                     *(ushort *)((int)puVar6 + 0xe) >> 8);
        iVar7 = local_80 + (0xfffffffe < local_84);
        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);
        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);
        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;
        uVar9 = (uint)lVar4;
        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;
        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);
        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;
        local_88 = uVar12;
        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=
            (int)(iVar7 - uVar11) < 0) {
          *(uint *)(param_2 + 0x48) = uVar9;
          *(int *)(param_2 + 0x4c) = iVar10;
        }
        goto LAB_00013d47;
      }
    }
    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));
    uVar12 = 0xffffffff;
    pr2serr("READ CAPACITY (%d): %s\n",
            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);
  }
LAB_00013d47:
  if (local_74 != (void *)0x0) {
    free(local_74);
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
    FUN_00014200();
    uStackY_b0 = 0;
    uStackY_b8 = local_88;
    if ((int)local_84 < 0) {
      uStackY_b8 = -local_88;
      uStackY_b0 = 0xffffffff;
      local_84 = -(local_84 + (local_88 != 0));
    }
    if ((int)uStack_7c < 0) {
      bVar13 = local_80 != 0;
      local_80 = -local_80;
      uStackY_b0 = ~uStackY_b0;
      uStack_7c = -(uStack_7c + bVar13);
    }
    if (uStack_7c == 0) {
      if (local_84 < local_80) {
        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);
      }
      else {
        if (local_80 == 0) {
          local_80 = 1 / 0;
        }
        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)
                       / (ulonglong)local_80);
      }
    }
    else if (local_84 < uStack_7c) {
      uVar12 = 0;
    }
    else {
      uVar12 = 0x1f;
      if (uStack_7c != 0) {
        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {
        }
      }
      if ((uVar12 ^ 0x1f) == 0) {
        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {
          uVar12 = 1;
        }
      }
      else {
        bVar5 = (byte)(uVar12 ^ 0x1f);
        bVar8 = 0x20 - bVar5;
        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));
        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),
                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));
        uVar3 = uVar2 / uVar1;
        uVar12 = (uint)uVar3;
        uVar11 = (uint)(uVar2 % uVar1);
        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));
        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);
        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))
        {
          uVar12 = uVar12 - 1;
        }
      }
    }
    if (uStackY_b0 != 0) {
      uVar12 = -uVar12;
    }
    return uVar12;
  }
  return uVar12;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00013af0
ADD EBX,0x52af
SUB ESP,0x7c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x6c],EAX
XOR EAX,EAX
MOV dword ptr [ESP + 0x18],0x0
PUSH 0x0
LEA EAX,[ESP + 0x1c]
PUSH EAX
PUSH 0x0
PUSH 0x20
CALL 0x000112d0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00013efd
CMP byte ptr [EBP + 0xd],0x0
MOV EDI,EAX
MOV EAX,dword ptr [EBP + 0x3c]
JNZ 0x00013d76
PUSH EDX
PUSH EAX
PUSH 0x1
PUSH 0x8
PUSH EDI
PUSH 0x0
PUSH 0x0
PUSH ESI
CALL 0x00011050
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x00013e9f
MOV EDX,dword ptr [EDI]
MOV ESI,dword ptr [EDI + 0x4]
BSWAP EDX
BSWAP ESI
CMP EDX,-0x1
JZ 0x00013ed7
MOV dword ptr [ESP + 0x4],EDX
LEA EAX,[EBX + 0xffffdd5f]
SUB ESP,0xc
PUSH EAX
CALL 0x00011120
MOV EDX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xffffcf44]
ADD ESP,0xc
LEA EDI,[EDX + 0x1]
PUSH EDI
PUSH EAX
PUSH 0x1
CALL 0x00011200
ADD ESP,0xc
LEA EAX,[EBX + 0xffffced8]
PUSH ESI
PUSH EAX
PUSH 0x1
CALL 0x00011200
MOV EAX,EDI
MOV ECX,dword ptr [EBP + 0x4c]
ADD ESP,0x10
MUL ESI
CMP dword ptr [EBP + 0x48],EAX
SBB ECX,EDX
JGE 0x00013d47
MOV dword ptr [EBP + 0x48],EAX
MOV dword ptr [EBP + 0x4c],EDX
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JZ 0x00013d5b
SUB ESP,0xc
PUSH EAX
CALL 0x000110a0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x6c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,ESI
JNZ 0x00013f1d
ADD ESP,0x7c
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
PUSH 0x1
PUSH 0x20
PUSH EDI
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH ESI
CALL 0x00011070
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x00013e9f
MOV EAX,dword ptr [EDI]
MOV EDX,dword ptr [EDI + 0x4]
SUB ESP,0xc
MOV ESI,dword ptr [EDI + 0x8]
BSWAP EDX
BSWAP EAX
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x18],EAX
BSWAP ESI
LEA EAX,[EBX + 0xffffdd43]
MOV dword ptr [ESP + 0x10],ESI
PUSH EAX
CALL 0x00011120
MOVZX EAX,byte ptr [EDI + 0xd]
MOVZX EDX,byte ptr [EDI + 0xc]
SHR AL,0x4
MOVZX EAX,AL
MOV dword ptr [ESP],EAX
MOV EAX,EDX
AND EDX,0x1
SHR AL,0x1
AND EAX,0x7
PUSH EAX
LEA EAX,[EBX + 0xffffcde8]
PUSH EDX
PUSH EAX
PUSH 0x1
CALL 0x00011200
MOVSX EAX,byte ptr [EDI + 0xe]
ADD ESP,0x20
MOV EDX,EAX
SHR EAX,0x1f
SHR DL,0x6
AND EDX,0x1
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffffce20]
PUSH EAX
PUSH 0x1
CALL 0x00011200
MOVZX EAX,byte ptr [EDI + 0xd]
ADD ESP,0xc
AND EAX,0xf
PUSH EAX
LEA EAX,[EBX + 0xffffce54]
PUSH EAX
PUSH 0x1
CALL 0x00011200
MOVZX EAX,word ptr [EDI + 0xe]
ADD ESP,0xc
ROL AX,0x8
AND EAX,0x3fff
PUSH EAX
LEA EAX,[EBX + 0xffffce88]
PUSH EAX
PUSH 0x1
CALL 0x00011200
MOV ESI,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xffffceb4]
ADD ESI,0x1
ADC EDI,0x0
PUSH EDI
PUSH ESI
PUSH EAX
PUSH 0x1
CALL 0x00011200
ADD ESP,0x1c
LEA EAX,[EBX + 0xffffced8]
PUSH dword ptr [ESP + 0x8]
PUSH EAX
PUSH 0x1
CALL 0x00011200
MOV ECX,dword ptr [ESP + 0x14]
MOV EAX,ESI
MUL dword ptr [ESP + 0x14]
ADD ESP,0x10
IMUL ECX,EDI
ADD EDX,ECX
MOV ECX,dword ptr [EBP + 0x4c]
CMP dword ptr [EBP + 0x48],EAX
SBB ECX,EDX
JGE 0x00013e96
MOV dword ptr [EBP + 0x48],EAX
MOV dword ptr [EBP + 0x4c],EDX
MOV ESI,dword ptr [ESP + 0x4]
JMP 0x00013d47
PUSH dword ptr [EBP + 0x3c]
LEA ESI,[ESP + 0x20]
PUSH ESI
PUSH 0x50
PUSH EAX
CALL 0x00011270
ADD ESP,0xc
CMP byte ptr [EBP + 0xd],0x1
SBB EAX,EAX
PUSH ESI
OR ESI,0xffffffff
AND EAX,0xfffffffa
ADD EAX,0x10
PUSH EAX
LEA EAX,[EBX + 0xffffdd7b]
PUSH EAX
CALL 0x00011100
ADD ESP,0x10
JMP 0x00013d47
CMP dword ptr [EBP + 0x3c],0x0
MOV ESI,0xfffffffe
JZ 0x00013d47
SUB ESP,0xc
LEA EAX,[EBX + 0xffffcef8]
PUSH EAX
CALL 0x00011120
ADD ESP,0x10
JMP 0x00013d47
LEA EAX,[EBX + 0xffffe210]
PUSH ECX
OR ESI,0xffffffff
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xffffdd28]
PUSH EAX
CALL 0x00011100
ADD ESP,0x10
JMP 0x00013d47
CALL 0x00014200
NOP
NOP
NOP
NOP
NOP
NOP
NOP
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint __regparm3 FUN_00013c70(undefined4 param_1,int param_2)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}\n\n" comment (function_definition "uint __regparm3 FUN_00013c70(undefined4 param_1,int param_2)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00013c70(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (declaration "longlong lVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "uint uStackY_b8;" type_identifier identifier ;) (declaration "uint uStackY_b0;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint uStack_7c;" type_identifier identifier ;) (declaration "void *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "undefined1 local_70 [80];" type_identifier (array_declarator "local_70 [80]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x13c7d;" (assignment_expression "uStack_14 = 0x13c7d" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_74 = (void *)0x0;" (assignment_expression "local_74 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = sg_memalign(0x20,0,&local_74,0);" (assignment_expression "uVar14 = sg_memalign(0x20,0,&local_74,0)" identifier = (call_expression "sg_memalign(0x20,0,&local_74,0)" identifier (argument_list "(0x20,0,&local_74,0)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , number_literal )))) ;) (expression_statement "puVar6 = (uint *)uVar14;" (assignment_expression "puVar6 = (uint *)uVar14" identifier = (cast_expression "(uint *)uVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" if (parenthesized_expression "(puVar6 == (uint *)0x0)" ( (binary_expression "puVar6 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }" { (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);" (call_expression "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" identifier (argument_list "("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" ( (string_literal ""%s: unable to obtain heap\n"" " string_content escape_sequence ") , (string_literal ""print_read_cap"" " string_content ") , identifier , identifier ))) ;) }) (else_clause "else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" else (compound_statement "{\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" { (if_statement "if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0xd) == '\0')" ( (binary_expression "*(char *)(param_2 + 0xd) == '\0'" (pointer_expression "*(char *)(param_2 + 0xd)" * (cast_expression "(char *)(param_2 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd)" ( (binary_expression "param_2 + 0xd" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }" { (expression_statement "iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));" (assignment_expression "iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" identifier = (call_expression "sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" identifier (argument_list "(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" ( identifier , number_literal , number_literal , identifier , number_literal , number_literal , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) , (cast_expression "(int)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (if_statement "if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }" { (expression_statement "uVar12 = *puVar6;" (assignment_expression "uVar12 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;" (assignment_expression "uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" if (parenthesized_expression "(uVar9 == 0xffffffff)" ( (binary_expression "uVar9 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }" { (expression_statement "uVar12 = 0xfffffffe;" (assignment_expression "uVar12 = 0xfffffffe" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" { (expression_statement "puts("Read Capacity (10) response indicates that Read Capacity (16) is required");" (call_expression "puts("Read Capacity (10) response indicates that Read Capacity (16) is required")" identifier (argument_list "("Read Capacity (10) response indicates that Read Capacity (16) is required")" ( (string_literal ""Read Capacity (10) response indicates that Read Capacity (16) is required"" " string_content ") ))) ;) })) }) (else_clause "else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" else (compound_statement "{\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" { (expression_statement "puts("Read Capacity (10) results:");" (call_expression "puts("Read Capacity (10) results:")" identifier (argument_list "("Read Capacity (10) results:")" ( (string_literal ""Read Capacity (10) results:"" " string_content ") ))) ;) (expression_statement "__printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);" (call_expression "__printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1)" identifier (argument_list "(1,"   Number of logical blocks=%u\n",uVar9 + 1)" ( number_literal , (string_literal ""   Number of logical blocks=%u\n"" " string_content escape_sequence ") , (binary_expression "uVar9 + 1" identifier + number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12)" identifier (argument_list "(1,"   Logical block size=%u bytes\n",uVar12)" ( number_literal , (string_literal ""   Logical block size=%u bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;" (assignment_expression "lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12" identifier = (binary_expression "(ulonglong)(uVar9 + 1) * (ulonglong)uVar12" (call_expression "(ulonglong)(uVar9 + 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) ))) * (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar10 = (int)((ulonglong)lVar4 >> 0x20);" (assignment_expression "iVar10 = (int)((ulonglong)lVar4 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);" (assignment_expression "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 0x48) < (uint)lVar4)" ( (binary_expression "*(uint *)(param_2 + 0x48) < (uint)lVar4" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) < (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar7 = *(int *)(param_2 + 0x4c) - iVar10;" (assignment_expression "iVar7 = *(int *)(param_2 + 0x4c) - iVar10" identifier = (binary_expression "*(int *)(param_2 + 0x4c) - iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "local_88 = uVar9;" (assignment_expression "local_88 = uVar9" identifier = identifier) ;) (if_statement "if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }" if (parenthesized_expression "((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0)" ( (binary_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)" (call_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10)" identifier (argument_list "(*(int *)(param_2 + 0x4c),iVar10)" ( (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar7,uVar11)" identifier (argument_list "(iVar7,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar11) < 0" (cast_expression "(int)(iVar7 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar11)" ( (binary_expression "iVar7 - uVar11" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }" { (expression_statement "*(longlong *)(param_2 + 0x48) = lVar4;" (assignment_expression "*(longlong *)(param_2 + 0x48) = lVar4" (pointer_expression "*(longlong *)(param_2 + 0x48)" * (cast_expression "(longlong *)(param_2 + 0x48)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) })) }))) (goto_statement "goto LAB_00013d47;" goto statement_identifier ;) })) }) (else_clause "else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" else (compound_statement "{\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" { (expression_statement "iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));" (assignment_expression "iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" identifier = (call_expression "sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" identifier (argument_list "(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" ( identifier , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }" { (expression_statement "uVar12 = *puVar6;" (assignment_expression "uVar12 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar6[2];" (assignment_expression "uVar9 = puVar6[2]" identifier = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;" (assignment_expression "local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (expression_statement "local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;" (assignment_expression "local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "puts("Read Capacity (16) results:");" (call_expression "puts("Read Capacity (16) results:")" identifier (argument_list "("Read Capacity (16) results:")" ( (string_literal ""Read Capacity (16) results:"" " string_content ") ))) ;) (expression_statement "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);" (call_expression "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4)" identifier (argument_list "(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4)" ( number_literal , (string_literal ""   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n"" " string_content escape_sequence ") , (binary_expression "(byte)puVar6[3] & 1" (cast_expression "(byte)puVar6[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[3]" identifier [ number_literal ])) & number_literal) , (binary_expression "(byte)puVar6[3] >> 1 & 7" (binary_expression "(byte)puVar6[3] >> 1" (cast_expression "(byte)puVar6[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[3]" identifier [ number_literal ])) >> number_literal) & number_literal) , (binary_expression "*(byte *)((int)puVar6 + 0xd) >> 4" (pointer_expression "*(byte *)((int)puVar6 + 0xd)" * (cast_expression "(byte *)((int)puVar6 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xd)" ( (binary_expression "(int)puVar6 + 0xd" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);" (call_expression "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1)" identifier (argument_list "(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1)" ( number_literal , (string_literal ""   Logical block provisioning: lbpme=%d, lbprz=%d\n"" " string_content escape_sequence ") , (binary_expression "(uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f" (binary_expression "(uint)(int)(char)*(byte *)((int)puVar6 + 0xe)" (call_expression "(uint)(int)(char)" (call_expression "(uint)(int)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(char)" ( identifier ))) * (cast_expression "(byte *)((int)puVar6 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) , (binary_expression "*(byte *)((int)puVar6 + 0xe) >> 6 & 1" (binary_expression "*(byte *)((int)puVar6 + 0xe) >> 6" (pointer_expression "*(byte *)((int)puVar6 + 0xe)" * (cast_expression "(byte *)((int)puVar6 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) & number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);" (call_expression "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf)" identifier (argument_list "(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf)" ( number_literal , (string_literal ""   Logical blocks per physical block exponent=%d\n"" " string_content escape_sequence ") , (binary_expression "*(byte *)((int)puVar6 + 0xd) & 0xf" (pointer_expression "*(byte *)((int)puVar6 + 0xd)" * (cast_expression "(byte *)((int)puVar6 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xd)" ( (binary_expression "(int)puVar6 + 0xd" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);" (call_expression "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8)" identifier (argument_list "(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8)" ( number_literal , (string_literal ""   Lowest aligned logical block address=%d\n"" " string_content escape_sequence ") , (binary_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8" (binary_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8" (parenthesized_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f)" ( (binary_expression "*(ushort *)((int)puVar6 + 0xe) & 0x3f" (pointer_expression "*(ushort *)((int)puVar6 + 0xe)" * (cast_expression "(ushort *)((int)puVar6 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) << number_literal) | (binary_expression "*(ushort *)((int)puVar6 + 0xe) >> 8" (pointer_expression "*(ushort *)((int)puVar6 + 0xe)" * (cast_expression "(ushort *)((int)puVar6 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) ))) ;) (expression_statement "iVar7 = local_80 + (0xfffffffe < local_84);" (assignment_expression "iVar7 = local_80 + (0xfffffffe < local_84)" identifier = (binary_expression "local_80 + (0xfffffffe < local_84)" identifier + (parenthesized_expression "(0xfffffffe < local_84)" ( (binary_expression "0xfffffffe < local_84" number_literal < identifier) )))) ;) (expression_statement "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);" (call_expression "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7)" identifier (argument_list "(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7)" ( number_literal , (string_literal ""   Number of logical blocks=%llu\n"" " string_content escape_sequence ") , (binary_expression "local_84 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12)" identifier (argument_list "(1,"   Logical block size=%u bytes\n",uVar12)" ( number_literal , (string_literal ""   Logical block size=%u bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;" (assignment_expression "lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12" identifier = (binary_expression "(ulonglong)(local_84 + 1) * (ulonglong)uVar12" (call_expression "(ulonglong)(local_84 + 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_84 + 1)" ( (binary_expression "local_84 + 1" identifier + number_literal) ))) * (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = (uint)lVar4;" (assignment_expression "uVar9 = (uint)lVar4" identifier = (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;" (assignment_expression "iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7" identifier = (binary_expression "(int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7" (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "uVar12 * iVar7" identifier * identifier))) ;) (expression_statement "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);" (assignment_expression "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 0x48) < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 0x48) < uVar9)" ( (binary_expression "*(uint *)(param_2 + 0x48) < uVar9" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) < identifier) )))) ;) (expression_statement "iVar7 = *(int *)(param_2 + 0x4c) - iVar10;" (assignment_expression "iVar7 = *(int *)(param_2 + 0x4c) - iVar10" identifier = (binary_expression "*(int *)(param_2 + 0x4c) - iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" identifier = identifier) ;) (if_statement "if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }" if (parenthesized_expression "((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0)" ( (binary_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)" (call_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10)" identifier (argument_list "(*(int *)(param_2 + 0x4c),iVar10)" ( (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar7,uVar11)" identifier (argument_list "(iVar7,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar11) < 0" (cast_expression "(int)(iVar7 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar11)" ( (binary_expression "iVar7 - uVar11" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }" { (expression_statement "*(uint *)(param_2 + 0x48) = uVar9;" (assignment_expression "*(uint *)(param_2 + 0x48) = uVar9" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_2 + 0x4c) = iVar10;" (assignment_expression "*(int *)(param_2 + 0x4c) = iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00013d47;" goto statement_identifier ;) })) }))) (expression_statement "sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));" (call_expression "sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c))" identifier (argument_list "(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c))" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);" (call_expression "pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70)" identifier (argument_list "("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70)" ( (string_literal ""READ CAPACITY (%d): %s\n"" " string_content escape_sequence ") , (binary_expression "(-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10" (parenthesized_expression "(-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa)" ( (binary_expression "-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa" (unary_expression "-(uint)(*(char *)(param_2 + 0xd) == '\0')" - (call_expression "(uint)(*(char *)(param_2 + 0xd) == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_2 + 0xd) == '\0')" ( (binary_expression "*(char *)(param_2 + 0xd) == '\0'" (pointer_expression "*(char *)(param_2 + 0xd)" * (cast_expression "(char *)(param_2 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd)" ( (binary_expression "param_2 + 0xd" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) )) + number_literal) , identifier ))) ;) }))) (labeled_statement "LAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }" statement_identifier : (if_statement "if (local_74 != (void *)0x0) {\n    free(local_74);\n  }" if (parenthesized_expression "(local_74 != (void *)0x0)" ( (binary_expression "local_74 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(local_74);\n  }" { (expression_statement "free(local_74);" (call_expression "free(local_74)" identifier (argument_list "(local_74)" ( identifier ))) ;) }))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }" { (expression_statement "FUN_00014200();" (call_expression "FUN_00014200()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStackY_b0 = 0;" (assignment_expression "uStackY_b0 = 0" identifier = number_literal) ;) (expression_statement "uStackY_b8 = local_88;" (assignment_expression "uStackY_b8 = local_88" identifier = identifier) ;) (if_statement "if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" if (parenthesized_expression "((int)local_84 < 0)" ( (binary_expression "(int)local_84 < 0" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" { (expression_statement "uStackY_b8 = -local_88;" (assignment_expression "uStackY_b8 = -local_88" identifier = (unary_expression "-local_88" - identifier)) ;) (expression_statement "uStackY_b0 = 0xffffffff;" (assignment_expression "uStackY_b0 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_84 = -(local_84 + (local_88 != 0));" (assignment_expression "local_84 = -(local_84 + (local_88 != 0))" identifier = (unary_expression "-(local_84 + (local_88 != 0))" - (parenthesized_expression "(local_84 + (local_88 != 0))" ( (binary_expression "local_84 + (local_88 != 0)" identifier + (parenthesized_expression "(local_88 != 0)" ( (binary_expression "local_88 != 0" identifier != number_literal) ))) )))) ;) })) (if_statement "if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }" if (parenthesized_expression "((int)uStack_7c < 0)" ( (binary_expression "(int)uStack_7c < 0" (cast_expression "(int)uStack_7c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }" { (expression_statement "bVar13 = local_80 != 0;" (assignment_expression "bVar13 = local_80 != 0" identifier = (binary_expression "local_80 != 0" identifier != number_literal)) ;) (expression_statement "local_80 = -local_80;" (assignment_expression "local_80 = -local_80" identifier = (unary_expression "-local_80" - identifier)) ;) (expression_statement "uStackY_b0 = ~uStackY_b0;" (assignment_expression "uStackY_b0 = ~uStackY_b0" identifier = (unary_expression "~uStackY_b0" ~ identifier)) ;) (expression_statement "uStack_7c = -(uStack_7c + bVar13);" (assignment_expression "uStack_7c = -(uStack_7c + bVar13)" identifier = (unary_expression "-(uStack_7c + bVar13)" - (parenthesized_expression "(uStack_7c + bVar13)" ( (binary_expression "uStack_7c + bVar13" identifier + identifier) )))) ;) })) (if_statement "if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" if (parenthesized_expression "(uStack_7c == 0)" ( (binary_expression "uStack_7c == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }" { (if_statement "if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" if (parenthesized_expression "(local_84 < local_80)" ( (binary_expression "local_84 < local_80" identifier < identifier) )) (compound_statement "{\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }" { (expression_statement "uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);" (assignment_expression "uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" identifier = (call_expression "(uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" ( (binary_expression "CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80" (call_expression "CONCAT44(local_84,uStackY_b8)" identifier (argument_list "(local_84,uStackY_b8)" ( identifier , identifier ))) / (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) }) (else_clause "else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" else (compound_statement "{\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" { (if_statement "if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (compound_statement "{\n          local_80 = 1 / 0;\n        }" { (expression_statement "local_80 = 1 / 0;" (assignment_expression "local_80 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);" (assignment_expression "uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" identifier = (call_expression "(uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" ( (binary_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80" (parenthesized_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)" ( (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80" (cast_expression "(ulonglong)local_84" ( (type_descriptor "ulonglong" type_identifier) ) identifier) % (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) << number_literal) | (cast_expression "(ulonglong)uStackY_b8" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )) / (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) }))) }) (else_clause "else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" else (if_statement "if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" if (parenthesized_expression "(local_84 < uStack_7c)" ( (binary_expression "local_84 < uStack_7c" identifier < identifier) )) (compound_statement "{\n      uVar12 = 0;\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" else (compound_statement "{\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" { (expression_statement "uVar12 = 0x1f;" (assignment_expression "uVar12 = 0x1f" identifier = number_literal) ;) (if_statement "if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }" if (parenthesized_expression "(uStack_7c != 0)" ( (binary_expression "uStack_7c != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }" { (for_statement "for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }" for ( ; (binary_expression "uStack_7c >> uVar12 == 0" (binary_expression "uStack_7c >> uVar12" identifier >> identifier) == number_literal) ; (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (if_statement "if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" if (parenthesized_expression "((uVar12 ^ 0x1f) == 0)" ( (binary_expression "(uVar12 ^ 0x1f) == 0" (parenthesized_expression "(uVar12 ^ 0x1f)" ( (binary_expression "uVar12 ^ 0x1f" identifier ^ number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }" { (if_statement "if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }" if (parenthesized_expression "((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8))" ( (binary_expression "(uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)" (parenthesized_expression "(uStack_7c < local_84)" ( (binary_expression "uStack_7c < local_84" identifier < identifier) )) || (parenthesized_expression "(uVar12 = 0, local_80 <= uStackY_b8)" ( (comma_expression "uVar12 = 0, local_80 <= uStackY_b8" (assignment_expression "uVar12 = 0" identifier = number_literal) , (binary_expression "local_80 <= uStackY_b8" identifier <= identifier)) ))) )) (compound_statement "{\n          uVar12 = 1;\n        }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" else (compound_statement "{\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" { (expression_statement "bVar5 = (byte)(uVar12 ^ 0x1f);" (assignment_expression "bVar5 = (byte)(uVar12 ^ 0x1f)" identifier = (call_expression "(byte)(uVar12 ^ 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar12 ^ 0x1f)" ( (binary_expression "uVar12 ^ 0x1f" identifier ^ number_literal) )))) ;) (expression_statement "bVar8 = 0x20 - bVar5;" (assignment_expression "bVar8 = 0x20 - bVar5" identifier = (binary_expression "0x20 - bVar5" number_literal - identifier)) ;) (expression_statement "uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));" (assignment_expression "uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" identifier = (call_expression "(ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" ( (binary_expression "local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f)" (binary_expression "local_80 >> (bVar8 & 0x1f)" identifier >> (parenthesized_expression "(bVar8 & 0x1f)" ( (binary_expression "bVar8 & 0x1f" identifier & number_literal) ))) | (binary_expression "uStack_7c << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))) )))) ;) (expression_statement "uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));" (assignment_expression "uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" identifier = (call_expression "CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" identifier (argument_list "(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" ( (binary_expression "local_84 >> (bVar8 & 0x1f)" identifier >> (parenthesized_expression "(bVar8 & 0x1f)" ( (binary_expression "bVar8 & 0x1f" identifier & number_literal) ))) , (binary_expression "local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f)" (binary_expression "local_84 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) | (binary_expression "uStackY_b8 >> (bVar8 & 0x1f)" identifier >> (parenthesized_expression "(bVar8 & 0x1f)" ( (binary_expression "bVar8 & 0x1f" identifier & number_literal) )))) )))) ;) (expression_statement "uVar3 = uVar2 / uVar1;" (assignment_expression "uVar3 = uVar2 / uVar1" identifier = (binary_expression "uVar2 / uVar1" identifier / identifier)) ;) (expression_statement "uVar12 = (uint)uVar3;" (assignment_expression "uVar12 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = (uint)(uVar2 % uVar1);" (assignment_expression "uVar11 = (uint)(uVar2 % uVar1)" identifier = (call_expression "(uint)(uVar2 % uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 % uVar1)" ( (binary_expression "uVar2 % uVar1" identifier % identifier) )))) ;) (expression_statement "lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));" (assignment_expression "lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f))" identifier = (binary_expression "(uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f))" (parenthesized_expression "(uVar3 & 0xffffffff)" ( (binary_expression "uVar3 & 0xffffffff" identifier & number_literal) )) * (call_expression "(ulonglong)(local_80 << (bVar5 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_80 << (bVar5 & 0x1f))" ( (binary_expression "local_80 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) ))))) ;) (expression_statement "uVar9 = (uint)((ulonglong)lVar4 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)lVar4 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }" if (parenthesized_expression "((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))" ( (binary_expression "(uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)))" (parenthesized_expression "(uVar11 < uVar9)" ( (binary_expression "uVar11 < uVar9" identifier < identifier) )) || (parenthesized_expression "((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)))" ( (parenthesized_expression "(uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))" ( (binary_expression "uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)" (binary_expression "uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4" (binary_expression "uStackY_b8 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) < (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) && (parenthesized_expression "(uVar11 == uVar9)" ( (binary_expression "uVar11 == uVar9" identifier == identifier) ))) )) ))) )) (compound_statement "{\n          uVar12 = uVar12 - 1;\n        }" { (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) })) }))) }))))) (if_statement "if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }" if (parenthesized_expression "(uStackY_b0 != 0)" ( (binary_expression "uStackY_b0 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar12 = -uVar12;\n    }" { (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" identifier = (unary_expression "-uVar12" - identifier)) ;) })) (return_statement "return uVar12;" return identifier ;) })) (return_statement "return uVar12;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 print_read_cap(int fd,opts_t *op)\n\n{\n  int iVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  byte bVar6;\n  uint *puVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  undefined4 extraout_ECX;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  int in_GS_OFFSET;\n  bool bVar15;\n  undefined8 uVar16;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  uint8_t *free_resp_buff;\n  char b [80];\n  \n  iVar9 = *(int *)(in_GS_OFFSET + 0x14);\n  free_resp_buff = (uint8_t *)0x0;\n  uVar16 = sg_memalign(0x20,0,&free_resp_buff,0);\n  puVar7 = (uint *)uVar16;\n  if (puVar7 == (uint *)0x0) {\n    uVar14 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (op->do_rcap16 == false) {\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar8,0x50,b,op->verbose);\n    uVar14 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);\n  }\nLAB_00013d47:\n  if (free_resp_buff != (uint8_t *)0x0) {\n    free(free_resp_buff);\n  }\n  if (iVar9 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar15 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar15);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      iVar9 = -iVar9;\n    }\n    return iVar9;\n  }\n  return uVar14;\n}\n\n" comment (function_definition "int __regparm3 print_read_cap(int fd,opts_t *op)\n\n{\n  int iVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  byte bVar6;\n  uint *puVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  undefined4 extraout_ECX;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  int in_GS_OFFSET;\n  bool bVar15;\n  undefined8 uVar16;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  uint8_t *free_resp_buff;\n  char b [80];\n  \n  iVar9 = *(int *)(in_GS_OFFSET + 0x14);\n  free_resp_buff = (uint8_t *)0x0;\n  uVar16 = sg_memalign(0x20,0,&free_resp_buff,0);\n  puVar7 = (uint *)uVar16;\n  if (puVar7 == (uint *)0x0) {\n    uVar14 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (op->do_rcap16 == false) {\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar8,0x50,b,op->verbose);\n    uVar14 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);\n  }\nLAB_00013d47:\n  if (free_resp_buff != (uint8_t *)0x0) {\n    free(free_resp_buff);\n  }\n  if (iVar9 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar15 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar15);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      iVar9 = -iVar9;\n    }\n    return iVar9;\n  }\n  return uVar14;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "print_read_cap(int fd,opts_t *op)" identifier (parameter_list "(int fd,opts_t *op)" ( (parameter_declaration "int fd" primitive_type identifier) , (parameter_declaration "opts_t *op" type_identifier (pointer_declarator "*op" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  byte bVar6;\n  uint *puVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  undefined4 extraout_ECX;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  int in_GS_OFFSET;\n  bool bVar15;\n  undefined8 uVar16;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  uint8_t *free_resp_buff;\n  char b [80];\n  \n  iVar9 = *(int *)(in_GS_OFFSET + 0x14);\n  free_resp_buff = (uint8_t *)0x0;\n  uVar16 = sg_memalign(0x20,0,&free_resp_buff,0);\n  puVar7 = (uint *)uVar16;\n  if (puVar7 == (uint *)0x0) {\n    uVar14 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (op->do_rcap16 == false) {\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar8,0x50,b,op->verbose);\n    uVar14 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);\n  }\nLAB_00013d47:\n  if (free_resp_buff != (uint8_t *)0x0) {\n    free(free_resp_buff);\n  }\n  if (iVar9 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar15 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar15);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      iVar9 = -iVar9;\n    }\n    return iVar9;\n  }\n  return uVar14;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "uint uStackY_b8;" type_identifier identifier ;) (declaration "uint uStackY_b0;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint uStack_7c;" type_identifier identifier ;) (declaration "uint8_t *free_resp_buff;" primitive_type (pointer_declarator "*free_resp_buff" * identifier) ;) (declaration "char b [80];" primitive_type (array_declarator "b [80]" identifier [ number_literal ]) ;) (expression_statement "iVar9 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar9 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "free_resp_buff = (uint8_t *)0x0;" (assignment_expression "free_resp_buff = (uint8_t *)0x0" identifier = (cast_expression "(uint8_t *)0x0" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar16 = sg_memalign(0x20,0,&free_resp_buff,0);" (assignment_expression "uVar16 = sg_memalign(0x20,0,&free_resp_buff,0)" identifier = (call_expression "sg_memalign(0x20,0,&free_resp_buff,0)" identifier (argument_list "(0x20,0,&free_resp_buff,0)" ( number_literal , number_literal , (pointer_expression "&free_resp_buff" & identifier) , number_literal )))) ;) (expression_statement "puVar7 = (uint *)uVar16;" (assignment_expression "puVar7 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar7 == (uint *)0x0) {\n    uVar14 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (op->do_rcap16 == false) {\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar8,0x50,b,op->verbose);\n    uVar14 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);\n  }" if (parenthesized_expression "(puVar7 == (uint *)0x0)" ( (binary_expression "puVar7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar14 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);" (call_expression "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" identifier (argument_list "("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" ( (string_literal ""%s: unable to obtain heap\n"" " string_content escape_sequence ") , (string_literal ""print_read_cap"" " string_content ") , identifier , identifier ))) ;) }) (else_clause "else {\n    if (op->do_rcap16 == false) {\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar8,0x50,b,op->verbose);\n    uVar14 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);\n  }" else (compound_statement "{\n    if (op->do_rcap16 == false) {\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar8,0x50,b,op->verbose);\n    uVar14 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);\n  }" { (if_statement "if (op->do_rcap16 == false) {\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }" if (parenthesized_expression "(op->do_rcap16 == false)" ( (binary_expression "op->do_rcap16 == false" (field_expression "op->do_rcap16" identifier -> field_identifier) == false) )) (compound_statement "{\n      iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }" { (expression_statement "iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20));" (assignment_expression "iVar8 = sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20))" identifier = (call_expression "sg_ll_readcap_10(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20))" identifier (argument_list "(fd,0,0,puVar7,8,1,op->verbose,(int)((ulonglong)uVar16 >> 0x20))" ( identifier , number_literal , number_literal , identifier , number_literal , number_literal , (field_expression "op->verbose" identifier -> field_identifier) , (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (if_statement "if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;\n        uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;\n        if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }\n        goto LAB_00013d47;\n      }" { (expression_statement "uVar14 = *puVar7;" (assignment_expression "uVar14 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "uVar13 = puVar7[1];" (assignment_expression "uVar13 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18\n        ;" (assignment_expression "uVar11 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" identifier = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18\n        ;" (assignment_expression "uVar14 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" identifier = (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8" (binary_expression "uVar13 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar13 & 0xff0000) >> 8" (parenthesized_expression "(uVar13 & 0xff0000)" ( (binary_expression "uVar13 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar13 & 0xff00) << 8" (parenthesized_expression "(uVar13 & 0xff00)" ( (binary_expression "uVar13 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar13 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar11 == 0xffffffff) {\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }" if (parenthesized_expression "(uVar11 == 0xffffffff)" ( (binary_expression "uVar11 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar14 = 0xfffffffe;\n          if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }" { (expression_statement "uVar14 = 0xfffffffe;" (assignment_expression "uVar14 = 0xfffffffe" identifier = number_literal) ;) (if_statement "if (op->verbose != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" if (parenthesized_expression "(op->verbose != 0)" ( (binary_expression "op->verbose != 0" (field_expression "op->verbose" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" { (expression_statement "puts("Read Capacity (10) response indicates that Read Capacity (16) is required");" (call_expression "puts("Read Capacity (10) response indicates that Read Capacity (16) is required")" identifier (argument_list "("Read Capacity (10) response indicates that Read Capacity (16) is required")" ( (string_literal ""Read Capacity (10) response indicates that Read Capacity (16) is required"" " string_content ") ))) ;) })) }) (else_clause "else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }" else (compound_statement "{\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n          iVar8 = *(int *)((int)&op->total_byte_count + 4);\n          lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;\n          iVar12 = (int)((ulonglong)lVar5 >> 0x20);\n          uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);\n          iVar1 = iVar8 - iVar12;\n          local_88 = uVar11;\n          if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }\n        }" { (expression_statement "puts("Read Capacity (10) results:");" (call_expression "puts("Read Capacity (10) results:")" identifier (argument_list "("Read Capacity (10) results:")" ( (string_literal ""Read Capacity (10) results:"" " string_content ") ))) ;) (expression_statement "__printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1);" (call_expression "__printf_chk(1,"   Number of logical blocks=%u\n",uVar11 + 1)" identifier (argument_list "(1,"   Number of logical blocks=%u\n",uVar11 + 1)" ( number_literal , (string_literal ""   Number of logical blocks=%u\n"" " string_content escape_sequence ") , (binary_expression "uVar11 + 1" identifier + number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar14);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar14)" identifier (argument_list "(1,"   Logical block size=%u bytes\n",uVar14)" ( number_literal , (string_literal ""   Logical block size=%u bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)&op->total_byte_count + 4);" (assignment_expression "iVar8 = *(int *)((int)&op->total_byte_count + 4)" identifier = (pointer_expression "*(int *)((int)&op->total_byte_count + 4)" * (cast_expression "(int *)((int)&op->total_byte_count + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&op->total_byte_count + 4)" ( (binary_expression "(int)&op->total_byte_count + 4" (cast_expression "(int)&op->total_byte_count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&op->total_byte_count" & (field_expression "op->total_byte_count" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14;" (assignment_expression "lVar5 = (ulonglong)(uVar11 + 1) * (ulonglong)uVar14" identifier = (binary_expression "(ulonglong)(uVar11 + 1) * (ulonglong)uVar14" (call_expression "(ulonglong)(uVar11 + 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar11 + 1)" ( (binary_expression "uVar11 + 1" identifier + number_literal) ))) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar5 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5);" (assignment_expression "uVar13 = (uint)((uint)op->total_byte_count < (uint)lVar5)" identifier = (call_expression "(uint)((uint)op->total_byte_count < (uint)lVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)op->total_byte_count < (uint)lVar5)" ( (binary_expression "(uint)op->total_byte_count < (uint)lVar5" (cast_expression "(uint)op->total_byte_count" ( (type_descriptor "uint" type_identifier) ) (field_expression "op->total_byte_count" identifier -> field_identifier)) < (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar1 = iVar8 - iVar12;" (assignment_expression "iVar1 = iVar8 - iVar12" identifier = (binary_expression "iVar8 - iVar12" identifier - identifier)) ;) (expression_statement "local_88 = uVar11;" (assignment_expression "local_88 = uVar11" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n            op->total_byte_count = lVar5;\n          }" if (parenthesized_expression "((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0)" ( (binary_expression "(SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0" (parenthesized_expression "(SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13))" ( (binary_expression "SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)" (call_expression "SBORROW4(iVar8,iVar12)" identifier (argument_list "(iVar8,iVar12)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar1,uVar13)" identifier (argument_list "(iVar1,uVar13)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar1 - uVar13) < 0" (cast_expression "(int)(iVar1 - uVar13)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar1 - uVar13)" ( (binary_expression "iVar1 - uVar13" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n            op->total_byte_count = lVar5;\n          }" { (expression_statement "op->total_byte_count = lVar5;" (assignment_expression "op->total_byte_count = lVar5" (field_expression "op->total_byte_count" identifier -> field_identifier) = identifier) ;) })) }))) (goto_statement "goto LAB_00013d47;" goto statement_identifier ;) })) }) (else_clause "else {\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }" else (compound_statement "{\n      iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);\n      if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }\n    }" { (expression_statement "iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose);" (assignment_expression "iVar8 = sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose)" identifier = (call_expression "sg_ll_readcap_16(fd,0,0,0,puVar7,0x20,1,op->verbose)" identifier (argument_list "(fd,0,0,0,puVar7,0x20,1,op->verbose)" ( identifier , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , (field_expression "op->verbose" identifier -> field_identifier) )))) ;) (if_statement "if (iVar8 == 0) {\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar14 = *puVar7;\n        uVar13 = puVar7[1];\n        uVar11 = puVar7[2];\n        local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;\n        local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;\n        uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);\n        iVar8 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar14);\n        lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;\n        uVar11 = (uint)lVar5;\n        iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;\n        iVar8 = *(int *)((int)&op->total_byte_count + 4);\n        uVar13 = (uint)((uint)op->total_byte_count < uVar11);\n        iVar1 = iVar8 - iVar12;\n        local_88 = uVar14;\n        if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }\n        goto LAB_00013d47;\n      }" { (expression_statement "uVar14 = *puVar7;" (assignment_expression "uVar14 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "uVar13 = puVar7[1];" (assignment_expression "uVar13 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = puVar7[2];" (assignment_expression "uVar11 = puVar7[2]" identifier = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18;" (assignment_expression "local_84 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18" identifier = (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                   uVar13 << 0x18" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8" (binary_expression "uVar13 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar13 & 0xff0000) >> 8" (parenthesized_expression "(uVar13 & 0xff0000)" ( (binary_expression "uVar13 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar13 & 0xff00) << 8" (parenthesized_expression "(uVar13 & 0xff00)" ( (binary_expression "uVar13 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar13 << 0x18" identifier << number_literal))) ;) (expression_statement "local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18;" (assignment_expression "local_80 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18" identifier = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 |\n                   uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;" (assignment_expression "uVar14 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (expression_statement "puts("Read Capacity (16) results:");" (call_expression "puts("Read Capacity (16) results:")" identifier (argument_list "("Read Capacity (16) results:")" ( (string_literal ""Read Capacity (16) results:"" " string_content ") ))) ;) (expression_statement "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4);" (call_expression "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4)" identifier (argument_list "(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar7[3] & 1\n                     ,(byte)puVar7[3] >> 1 & 7,*(byte *)((int)puVar7 + 0xd) >> 4)" ( number_literal , (string_literal ""   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n"" " string_content escape_sequence ") , (binary_expression "(byte)puVar7[3] & 1" (cast_expression "(byte)puVar7[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[3]" identifier [ number_literal ])) & number_literal) , (binary_expression "(byte)puVar7[3] >> 1 & 7" (binary_expression "(byte)puVar7[3] >> 1" (cast_expression "(byte)puVar7[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[3]" identifier [ number_literal ])) >> number_literal) & number_literal) , (binary_expression "*(byte *)((int)puVar7 + 0xd) >> 4" (pointer_expression "*(byte *)((int)puVar7 + 0xd)" * (cast_expression "(byte *)((int)puVar7 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0xd)" ( (binary_expression "(int)puVar7 + 0xd" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1);" (call_expression "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1)" identifier (argument_list "(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar7 + 0xe) >> 6 & 1)" ( number_literal , (string_literal ""   Logical block provisioning: lbpme=%d, lbprz=%d\n"" " string_content escape_sequence ") , (binary_expression "(uint)(int)(char)*(byte *)((int)puVar7 + 0xe) >> 0x1f" (binary_expression "(uint)(int)(char)*(byte *)((int)puVar7 + 0xe)" (call_expression "(uint)(int)(char)" (call_expression "(uint)(int)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(char)" ( identifier ))) * (cast_expression "(byte *)((int)puVar7 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0xe)" ( (binary_expression "(int)puVar7 + 0xe" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) , (binary_expression "*(byte *)((int)puVar7 + 0xe) >> 6 & 1" (binary_expression "*(byte *)((int)puVar7 + 0xe) >> 6" (pointer_expression "*(byte *)((int)puVar7 + 0xe)" * (cast_expression "(byte *)((int)puVar7 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0xe)" ( (binary_expression "(int)puVar7 + 0xe" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) & number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf);" (call_expression "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf)" identifier (argument_list "(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar7 + 0xd) & 0xf)" ( number_literal , (string_literal ""   Logical blocks per physical block exponent=%d\n"" " string_content escape_sequence ") , (binary_expression "*(byte *)((int)puVar7 + 0xd) & 0xf" (pointer_expression "*(byte *)((int)puVar7 + 0xd)" * (cast_expression "(byte *)((int)puVar7 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0xd)" ( (binary_expression "(int)puVar7 + 0xd" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8);" (call_expression "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8)" identifier (argument_list "(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8)" ( number_literal , (string_literal ""   Lowest aligned logical block address=%d\n"" " string_content escape_sequence ") , (binary_expression "(*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar7 + 0xe) >> 8" (binary_expression "(*(ushort *)((int)puVar7 + 0xe) & 0x3f) << 8" (parenthesized_expression "(*(ushort *)((int)puVar7 + 0xe) & 0x3f)" ( (binary_expression "*(ushort *)((int)puVar7 + 0xe) & 0x3f" (pointer_expression "*(ushort *)((int)puVar7 + 0xe)" * (cast_expression "(ushort *)((int)puVar7 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0xe)" ( (binary_expression "(int)puVar7 + 0xe" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) << number_literal) | (binary_expression "*(ushort *)((int)puVar7 + 0xe) >> 8" (pointer_expression "*(ushort *)((int)puVar7 + 0xe)" * (cast_expression "(ushort *)((int)puVar7 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0xe)" ( (binary_expression "(int)puVar7 + 0xe" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) ))) ;) (expression_statement "iVar8 = local_80 + (0xfffffffe < local_84);" (assignment_expression "iVar8 = local_80 + (0xfffffffe < local_84)" identifier = (binary_expression "local_80 + (0xfffffffe < local_84)" identifier + (parenthesized_expression "(0xfffffffe < local_84)" ( (binary_expression "0xfffffffe < local_84" number_literal < identifier) )))) ;) (expression_statement "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8);" (call_expression "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8)" identifier (argument_list "(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar8)" ( number_literal , (string_literal ""   Number of logical blocks=%llu\n"" " string_content escape_sequence ") , (binary_expression "local_84 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar14);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar14)" identifier (argument_list "(1,"   Logical block size=%u bytes\n",uVar14)" ( number_literal , (string_literal ""   Logical block size=%u bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14;" (assignment_expression "lVar5 = (ulonglong)(local_84 + 1) * (ulonglong)uVar14" identifier = (binary_expression "(ulonglong)(local_84 + 1) * (ulonglong)uVar14" (call_expression "(ulonglong)(local_84 + 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_84 + 1)" ( (binary_expression "local_84 + 1" identifier + number_literal) ))) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar11 = (uint)lVar5;" (assignment_expression "uVar11 = (uint)lVar5" identifier = (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8;" (assignment_expression "iVar12 = (int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8" identifier = (binary_expression "(int)((ulonglong)lVar5 >> 0x20) + uVar14 * iVar8" (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "uVar14 * iVar8" identifier * identifier))) ;) (expression_statement "iVar8 = *(int *)((int)&op->total_byte_count + 4);" (assignment_expression "iVar8 = *(int *)((int)&op->total_byte_count + 4)" identifier = (pointer_expression "*(int *)((int)&op->total_byte_count + 4)" * (cast_expression "(int *)((int)&op->total_byte_count + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&op->total_byte_count + 4)" ( (binary_expression "(int)&op->total_byte_count + 4" (cast_expression "(int)&op->total_byte_count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&op->total_byte_count" & (field_expression "op->total_byte_count" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar13 = (uint)((uint)op->total_byte_count < uVar11);" (assignment_expression "uVar13 = (uint)((uint)op->total_byte_count < uVar11)" identifier = (call_expression "(uint)((uint)op->total_byte_count < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)op->total_byte_count < uVar11)" ( (binary_expression "(uint)op->total_byte_count < uVar11" (cast_expression "(uint)op->total_byte_count" ( (type_descriptor "uint" type_identifier) ) (field_expression "op->total_byte_count" identifier -> field_identifier)) < identifier) )))) ;) (expression_statement "iVar1 = iVar8 - iVar12;" (assignment_expression "iVar1 = iVar8 - iVar12" identifier = (binary_expression "iVar8 - iVar12" identifier - identifier)) ;) (expression_statement "local_88 = uVar14;" (assignment_expression "local_88 = uVar14" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0) {\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }" if (parenthesized_expression "((SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0)" ( (binary_expression "(SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)) != (int)(iVar1 - uVar13) < 0" (parenthesized_expression "(SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13))" ( (binary_expression "SBORROW4(iVar8,iVar12) != SBORROW4(iVar1,uVar13)" (call_expression "SBORROW4(iVar8,iVar12)" identifier (argument_list "(iVar8,iVar12)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar1,uVar13)" identifier (argument_list "(iVar1,uVar13)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar1 - uVar13) < 0" (cast_expression "(int)(iVar1 - uVar13)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar1 - uVar13)" ( (binary_expression "iVar1 - uVar13" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n          *(uint *)&op->total_byte_count = uVar11;\n          *(int *)((int)&op->total_byte_count + 4) = iVar12;\n        }" { (expression_statement "*(uint *)&op->total_byte_count = uVar11;" (assignment_expression "*(uint *)&op->total_byte_count = uVar11" (pointer_expression "*(uint *)&op->total_byte_count" * (cast_expression "(uint *)&op->total_byte_count" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&op->total_byte_count" & (field_expression "op->total_byte_count" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&op->total_byte_count + 4) = iVar12;" (assignment_expression "*(int *)((int)&op->total_byte_count + 4) = iVar12" (pointer_expression "*(int *)((int)&op->total_byte_count + 4)" * (cast_expression "(int *)((int)&op->total_byte_count + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&op->total_byte_count + 4)" ( (binary_expression "(int)&op->total_byte_count + 4" (cast_expression "(int)&op->total_byte_count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&op->total_byte_count" & (field_expression "op->total_byte_count" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00013d47;" goto statement_identifier ;) })) }))) (expression_statement "sg_get_category_sense_str(iVar8,0x50,b,op->verbose);" (call_expression "sg_get_category_sense_str(iVar8,0x50,b,op->verbose)" identifier (argument_list "(iVar8,0x50,b,op->verbose)" ( identifier , number_literal , identifier , (field_expression "op->verbose" identifier -> field_identifier) ))) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);" (call_expression "pr2serr("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b)" identifier (argument_list "("READ CAPACITY (%d): %s\n",(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b)" ( (string_literal ""READ CAPACITY (%d): %s\n"" " string_content escape_sequence ") , (binary_expression "(-(uint)(op->do_rcap16 == false) & 0xfffffffa) + 0x10" (parenthesized_expression "(-(uint)(op->do_rcap16 == false) & 0xfffffffa)" ( (binary_expression "-(uint)(op->do_rcap16 == false) & 0xfffffffa" (unary_expression "-(uint)(op->do_rcap16 == false)" - (call_expression "(uint)(op->do_rcap16 == false)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(op->do_rcap16 == false)" ( (binary_expression "op->do_rcap16 == false" (field_expression "op->do_rcap16" identifier -> field_identifier) == false) )))) & number_literal) )) + number_literal) , identifier ))) ;) }))) (labeled_statement "LAB_00013d47:\n  if (free_resp_buff != (uint8_t *)0x0) {\n    free(free_resp_buff);\n  }" statement_identifier : (if_statement "if (free_resp_buff != (uint8_t *)0x0) {\n    free(free_resp_buff);\n  }" if (parenthesized_expression "(free_resp_buff != (uint8_t *)0x0)" ( (binary_expression "free_resp_buff != (uint8_t *)0x0" identifier != (cast_expression "(uint8_t *)0x0" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(free_resp_buff);\n  }" { (expression_statement "free(free_resp_buff);" (call_expression "free(free_resp_buff)" identifier (argument_list "(free_resp_buff)" ( identifier ))) ;) }))) (if_statement "if (iVar9 != *(int *)(in_GS_OFFSET + 0x14)) {\n    __stack_chk_fail_local();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar15 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar15);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      iVar9 = -iVar9;\n    }\n    return iVar9;\n  }" if (parenthesized_expression "(iVar9 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar9 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    __stack_chk_fail_local();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar15 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar15);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      iVar9 = -iVar9;\n    }\n    return iVar9;\n  }" { (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStackY_b0 = 0;" (assignment_expression "uStackY_b0 = 0" identifier = number_literal) ;) (expression_statement "uStackY_b8 = local_88;" (assignment_expression "uStackY_b8 = local_88" identifier = identifier) ;) (if_statement "if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" if (parenthesized_expression "((int)local_84 < 0)" ( (binary_expression "(int)local_84 < 0" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" { (expression_statement "uStackY_b8 = -local_88;" (assignment_expression "uStackY_b8 = -local_88" identifier = (unary_expression "-local_88" - identifier)) ;) (expression_statement "uStackY_b0 = 0xffffffff;" (assignment_expression "uStackY_b0 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_84 = -(local_84 + (local_88 != 0));" (assignment_expression "local_84 = -(local_84 + (local_88 != 0))" identifier = (unary_expression "-(local_84 + (local_88 != 0))" - (parenthesized_expression "(local_84 + (local_88 != 0))" ( (binary_expression "local_84 + (local_88 != 0)" identifier + (parenthesized_expression "(local_88 != 0)" ( (binary_expression "local_88 != 0" identifier != number_literal) ))) )))) ;) })) (if_statement "if ((int)uStack_7c < 0) {\n      bVar15 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar15);\n    }" if (parenthesized_expression "((int)uStack_7c < 0)" ( (binary_expression "(int)uStack_7c < 0" (cast_expression "(int)uStack_7c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      bVar15 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar15);\n    }" { (expression_statement "bVar15 = local_80 != 0;" (assignment_expression "bVar15 = local_80 != 0" identifier = (binary_expression "local_80 != 0" identifier != number_literal)) ;) (expression_statement "local_80 = -local_80;" (assignment_expression "local_80 = -local_80" identifier = (unary_expression "-local_80" - identifier)) ;) (expression_statement "uStackY_b0 = ~uStackY_b0;" (assignment_expression "uStackY_b0 = ~uStackY_b0" identifier = (unary_expression "~uStackY_b0" ~ identifier)) ;) (expression_statement "uStack_7c = -(uStack_7c + bVar15);" (assignment_expression "uStack_7c = -(uStack_7c + bVar15)" identifier = (unary_expression "-(uStack_7c + bVar15)" - (parenthesized_expression "(uStack_7c + bVar15)" ( (binary_expression "uStack_7c + bVar15" identifier + identifier) )))) ;) })) (if_statement "if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }" if (parenthesized_expression "(uStack_7c == 0)" ( (binary_expression "uStack_7c == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }\n    }" { (if_statement "if (local_84 < local_80) {\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }" if (parenthesized_expression "(local_84 < local_80)" ( (binary_expression "local_84 < local_80" identifier < identifier) )) (compound_statement "{\n        iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }" { (expression_statement "iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);" (assignment_expression "iVar9 = (int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" identifier = (cast_expression "(int)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" ( (binary_expression "CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80" (call_expression "CONCAT44(local_84,uStackY_b8)" identifier (argument_list "(local_84,uStackY_b8)" ( identifier , identifier ))) / (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) }) (else_clause "else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }" else (compound_statement "{\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);\n      }" { (if_statement "if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (compound_statement "{\n          local_80 = 1 / 0;\n        }" { (expression_statement "local_80 = 1 / 0;" (assignment_expression "local_80 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80);" (assignment_expression "iVar9 = (int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80)" identifier = (cast_expression "(int)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80)" ( (binary_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8) /\n                     (ulonglong)local_80" (parenthesized_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)" ( (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80" (cast_expression "(ulonglong)local_84" ( (type_descriptor "ulonglong" type_identifier) ) identifier) % (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) << number_literal) | (cast_expression "(ulonglong)uStackY_b8" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )) / (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) }))) }) (else_clause "else if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }" else (if_statement "if (local_84 < uStack_7c) {\n      iVar9 = 0;\n    }\n    else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }" if (parenthesized_expression "(local_84 < uStack_7c)" ( (binary_expression "local_84 < uStack_7c" identifier < identifier) )) (compound_statement "{\n      iVar9 = 0;\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }" else (compound_statement "{\n      uVar14 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }\n      if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }\n    }" { (expression_statement "uVar14 = 0x1f;" (assignment_expression "uVar14 = 0x1f" identifier = number_literal) ;) (if_statement "if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }" if (parenthesized_expression "(uStack_7c != 0)" ( (binary_expression "uStack_7c != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }\n      }" { (for_statement "for (; uStack_7c >> uVar14 == 0; uVar14 = uVar14 - 1) {\n        }" for ( ; (binary_expression "uStack_7c >> uVar14 == 0" (binary_expression "uStack_7c >> uVar14" identifier >> identifier) == number_literal) ; (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (if_statement "if ((uVar14 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }\n      else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }" if (parenthesized_expression "((uVar14 ^ 0x1f) == 0)" ( (binary_expression "(uVar14 ^ 0x1f) == 0" (parenthesized_expression "(uVar14 ^ 0x1f)" ( (binary_expression "uVar14 ^ 0x1f" identifier ^ number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }\n      }" { (if_statement "if ((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)) {\n          iVar9 = 1;\n        }" if (parenthesized_expression "((uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8))" ( (binary_expression "(uStack_7c < local_84) || (iVar9 = 0, local_80 <= uStackY_b8)" (parenthesized_expression "(uStack_7c < local_84)" ( (binary_expression "uStack_7c < local_84" identifier < identifier) )) || (parenthesized_expression "(iVar9 = 0, local_80 <= uStackY_b8)" ( (comma_expression "iVar9 = 0, local_80 <= uStackY_b8" (assignment_expression "iVar9 = 0" identifier = number_literal) , (binary_expression "local_80 <= uStackY_b8" identifier <= identifier)) ))) )) (compound_statement "{\n          iVar9 = 1;\n        }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }" else (compound_statement "{\n        bVar6 = (byte)(uVar14 ^ 0x1f);\n        bVar10 = 0x20 - bVar6;\n        uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));\n        uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));\n        uVar4 = uVar3 / uVar2;\n        iVar9 = (int)uVar4;\n        uVar14 = (uint)(uVar3 % uVar2);\n        lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));\n        uVar13 = (uint)((ulonglong)lVar5 >> 0x20);\n        if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }\n      }" { (expression_statement "bVar6 = (byte)(uVar14 ^ 0x1f);" (assignment_expression "bVar6 = (byte)(uVar14 ^ 0x1f)" identifier = (call_expression "(byte)(uVar14 ^ 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar14 ^ 0x1f)" ( (binary_expression "uVar14 ^ 0x1f" identifier ^ number_literal) )))) ;) (expression_statement "bVar10 = 0x20 - bVar6;" (assignment_expression "bVar10 = 0x20 - bVar6" identifier = (binary_expression "0x20 - bVar6" number_literal - identifier)) ;) (expression_statement "uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f));" (assignment_expression "uVar2 = (ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f))" identifier = (call_expression "(ulonglong)(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f))" ( (binary_expression "local_80 >> (bVar10 & 0x1f) | uStack_7c << (bVar6 & 0x1f)" (binary_expression "local_80 >> (bVar10 & 0x1f)" identifier >> (parenthesized_expression "(bVar10 & 0x1f)" ( (binary_expression "bVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uStack_7c << (bVar6 & 0x1f)" identifier << (parenthesized_expression "(bVar6 & 0x1f)" ( (binary_expression "bVar6 & 0x1f" identifier & number_literal) )))) )))) ;) (expression_statement "uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f));" (assignment_expression "uVar3 = CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f))" identifier = (call_expression "CONCAT44(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f))" identifier (argument_list "(local_84 >> (bVar10 & 0x1f),\n                         local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f))" ( (binary_expression "local_84 >> (bVar10 & 0x1f)" identifier >> (parenthesized_expression "(bVar10 & 0x1f)" ( (binary_expression "bVar10 & 0x1f" identifier & number_literal) ))) , (binary_expression "local_84 << (bVar6 & 0x1f) | uStackY_b8 >> (bVar10 & 0x1f)" (binary_expression "local_84 << (bVar6 & 0x1f)" identifier << (parenthesized_expression "(bVar6 & 0x1f)" ( (binary_expression "bVar6 & 0x1f" identifier & number_literal) ))) | (binary_expression "uStackY_b8 >> (bVar10 & 0x1f)" identifier >> (parenthesized_expression "(bVar10 & 0x1f)" ( (binary_expression "bVar10 & 0x1f" identifier & number_literal) )))) )))) ;) (expression_statement "uVar4 = uVar3 / uVar2;" (assignment_expression "uVar4 = uVar3 / uVar2" identifier = (binary_expression "uVar3 / uVar2" identifier / identifier)) ;) (expression_statement "iVar9 = (int)uVar4;" (assignment_expression "iVar9 = (int)uVar4" identifier = (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar14 = (uint)(uVar3 % uVar2);" (assignment_expression "uVar14 = (uint)(uVar3 % uVar2)" identifier = (call_expression "(uint)(uVar3 % uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 % uVar2)" ( (binary_expression "uVar3 % uVar2" identifier % identifier) )))) ;) (expression_statement "lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f));" (assignment_expression "lVar5 = (uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f))" identifier = (binary_expression "(uVar4 & 0xffffffff) * (ulonglong)(local_80 << (bVar6 & 0x1f))" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) * (call_expression "(ulonglong)(local_80 << (bVar6 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_80 << (bVar6 & 0x1f))" ( (binary_expression "local_80 << (bVar6 & 0x1f)" identifier << (parenthesized_expression "(bVar6 & 0x1f)" ( (binary_expression "bVar6 & 0x1f" identifier & number_literal) ))) ))))) ;) (expression_statement "uVar13 = (uint)((ulonglong)lVar5 >> 0x20);" (assignment_expression "uVar13 = (uint)((ulonglong)lVar5 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar5 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))) {\n          iVar9 = iVar9 + -1;\n        }" if (parenthesized_expression "((uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13))))" ( (binary_expression "(uVar14 < uVar13) ||\n           ((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))" (parenthesized_expression "(uVar14 < uVar13)" ( (binary_expression "uVar14 < uVar13" identifier < identifier) )) || (parenthesized_expression "((uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)))" ( (parenthesized_expression "(uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13))" ( (binary_expression "uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5 && (uVar14 == uVar13)" (binary_expression "uStackY_b8 << (bVar6 & 0x1f) < (uint)lVar5" (binary_expression "uStackY_b8 << (bVar6 & 0x1f)" identifier << (parenthesized_expression "(bVar6 & 0x1f)" ( (binary_expression "bVar6 & 0x1f" identifier & number_literal) ))) < (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) && (parenthesized_expression "(uVar14 == uVar13)" ( (binary_expression "uVar14 == uVar13" identifier == identifier) ))) )) ))) )) (compound_statement "{\n          iVar9 = iVar9 + -1;\n        }" { (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) })) }))) }))))) (if_statement "if (uStackY_b0 != 0) {\n      iVar9 = -iVar9;\n    }" if (parenthesized_expression "(uStackY_b0 != 0)" ( (binary_expression "uStackY_b0 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar9 = -iVar9;\n    }" { (expression_statement "iVar9 = -iVar9;" (assignment_expression "iVar9 = -iVar9" identifier = (unary_expression "-iVar9" - identifier)) ;) })) (return_statement "return iVar9;" return identifier ;) })) (return_statement "return uVar14;" return identifier ;) })))
(translation_unit "uint __regparm3 FUN_00013c70(undefined4 param_1,int param_2)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}\n\n" (function_definition "uint __regparm3 FUN_00013c70(undefined4 param_1,int param_2)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00013c70(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (declaration "longlong lVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "uint uStackY_b8;" type_identifier identifier ;) (declaration "uint uStackY_b0;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint uStack_7c;" type_identifier identifier ;) (declaration "void *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "undefined1 local_70 [80];" type_identifier (array_declarator "local_70 [80]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x13c7d;" (assignment_expression "uStack_14 = 0x13c7d" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_74 = (void *)0x0;" (assignment_expression "local_74 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = sg_memalign(0x20,0,&local_74,0);" (assignment_expression "uVar14 = sg_memalign(0x20,0,&local_74,0)" identifier = (call_expression "sg_memalign(0x20,0,&local_74,0)" identifier (argument_list "(0x20,0,&local_74,0)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , number_literal )))) ;) (expression_statement "puVar6 = (uint *)uVar14;" (assignment_expression "puVar6 = (uint *)uVar14" identifier = (cast_expression "(uint *)uVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" if (parenthesized_expression "(puVar6 == (uint *)0x0)" ( (binary_expression "puVar6 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }" { (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);" (call_expression "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" identifier (argument_list "("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" ( (string_literal ""%s: unable to obtain heap\n"" " string_content escape_sequence ") , (string_literal ""print_read_cap"" " string_content ") , identifier , identifier ))) ;) }) (else_clause "else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" else (compound_statement "{\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" { (if_statement "if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0xd) == '\0')" ( (binary_expression "*(char *)(param_2 + 0xd) == '\0'" (pointer_expression "*(char *)(param_2 + 0xd)" * (cast_expression "(char *)(param_2 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd)" ( (binary_expression "param_2 + 0xd" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }" { (expression_statement "iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));" (assignment_expression "iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" identifier = (call_expression "sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" identifier (argument_list "(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" ( identifier , number_literal , number_literal , identifier , number_literal , number_literal , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) , (cast_expression "(int)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (if_statement "if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }" { (expression_statement "uVar12 = *puVar6;" (assignment_expression "uVar12 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;" (assignment_expression "uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" if (parenthesized_expression "(uVar9 == 0xffffffff)" ( (binary_expression "uVar9 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }" { (expression_statement "uVar12 = 0xfffffffe;" (assignment_expression "uVar12 = 0xfffffffe" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" { (expression_statement "puts("Read Capacity (10) response indicates that Read Capacity (16) is required");" (call_expression "puts("Read Capacity (10) response indicates that Read Capacity (16) is required")" identifier (argument_list "("Read Capacity (10) response indicates that Read Capacity (16) is required")" ( (string_literal ""Read Capacity (10) response indicates that Read Capacity (16) is required"" " string_content ") ))) ;) })) }) (else_clause "else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" else (compound_statement "{\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" { (expression_statement "puts("Read Capacity (10) results:");" (call_expression "puts("Read Capacity (10) results:")" identifier (argument_list "("Read Capacity (10) results:")" ( (string_literal ""Read Capacity (10) results:"" " string_content ") ))) ;) (expression_statement "__printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);" (call_expression "__printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1)" identifier (argument_list "(1,"   Number of logical blocks=%u\n",uVar9 + 1)" ( number_literal , (string_literal ""   Number of logical blocks=%u\n"" " string_content escape_sequence ") , (binary_expression "uVar9 + 1" identifier + number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12)" identifier (argument_list "(1,"   Logical block size=%u bytes\n",uVar12)" ( number_literal , (string_literal ""   Logical block size=%u bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;" (assignment_expression "lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12" identifier = (binary_expression "(ulonglong)(uVar9 + 1) * (ulonglong)uVar12" (call_expression "(ulonglong)(uVar9 + 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) ))) * (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar10 = (int)((ulonglong)lVar4 >> 0x20);" (assignment_expression "iVar10 = (int)((ulonglong)lVar4 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);" (assignment_expression "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 0x48) < (uint)lVar4)" ( (binary_expression "*(uint *)(param_2 + 0x48) < (uint)lVar4" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) < (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar7 = *(int *)(param_2 + 0x4c) - iVar10;" (assignment_expression "iVar7 = *(int *)(param_2 + 0x4c) - iVar10" identifier = (binary_expression "*(int *)(param_2 + 0x4c) - iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "local_88 = uVar9;" (assignment_expression "local_88 = uVar9" identifier = identifier) ;) (if_statement "if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }" if (parenthesized_expression "((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0)" ( (binary_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)" (call_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10)" identifier (argument_list "(*(int *)(param_2 + 0x4c),iVar10)" ( (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar7,uVar11)" identifier (argument_list "(iVar7,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar11) < 0" (cast_expression "(int)(iVar7 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar11)" ( (binary_expression "iVar7 - uVar11" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }" { (expression_statement "*(longlong *)(param_2 + 0x48) = lVar4;" (assignment_expression "*(longlong *)(param_2 + 0x48) = lVar4" (pointer_expression "*(longlong *)(param_2 + 0x48)" * (cast_expression "(longlong *)(param_2 + 0x48)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) })) }))) (goto_statement "goto LAB_00013d47;" goto statement_identifier ;) })) }) (else_clause "else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" else (compound_statement "{\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" { (expression_statement "iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));" (assignment_expression "iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" identifier = (call_expression "sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" identifier (argument_list "(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" ( identifier , number_literal , number_literal , number_literal , identifier , number_literal , number_literal , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }" { (expression_statement "uVar12 = *puVar6;" (assignment_expression "uVar12 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar6[2];" (assignment_expression "uVar9 = puVar6[2]" identifier = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;" (assignment_expression "local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (expression_statement "local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;" (assignment_expression "local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "puts("Read Capacity (16) results:");" (call_expression "puts("Read Capacity (16) results:")" identifier (argument_list "("Read Capacity (16) results:")" ( (string_literal ""Read Capacity (16) results:"" " string_content ") ))) ;) (expression_statement "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);" (call_expression "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4)" identifier (argument_list "(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4)" ( number_literal , (string_literal ""   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n"" " string_content escape_sequence ") , (binary_expression "(byte)puVar6[3] & 1" (cast_expression "(byte)puVar6[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[3]" identifier [ number_literal ])) & number_literal) , (binary_expression "(byte)puVar6[3] >> 1 & 7" (binary_expression "(byte)puVar6[3] >> 1" (cast_expression "(byte)puVar6[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[3]" identifier [ number_literal ])) >> number_literal) & number_literal) , (binary_expression "*(byte *)((int)puVar6 + 0xd) >> 4" (pointer_expression "*(byte *)((int)puVar6 + 0xd)" * (cast_expression "(byte *)((int)puVar6 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xd)" ( (binary_expression "(int)puVar6 + 0xd" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);" (call_expression "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1)" identifier (argument_list "(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1)" ( number_literal , (string_literal ""   Logical block provisioning: lbpme=%d, lbprz=%d\n"" " string_content escape_sequence ") , (binary_expression "(uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f" (binary_expression "(uint)(int)(char)*(byte *)((int)puVar6 + 0xe)" (call_expression "(uint)(int)(char)" (call_expression "(uint)(int)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(char)" ( identifier ))) * (cast_expression "(byte *)((int)puVar6 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) , (binary_expression "*(byte *)((int)puVar6 + 0xe) >> 6 & 1" (binary_expression "*(byte *)((int)puVar6 + 0xe) >> 6" (pointer_expression "*(byte *)((int)puVar6 + 0xe)" * (cast_expression "(byte *)((int)puVar6 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) & number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);" (call_expression "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf)" identifier (argument_list "(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf)" ( number_literal , (string_literal ""   Logical blocks per physical block exponent=%d\n"" " string_content escape_sequence ") , (binary_expression "*(byte *)((int)puVar6 + 0xd) & 0xf" (pointer_expression "*(byte *)((int)puVar6 + 0xd)" * (cast_expression "(byte *)((int)puVar6 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xd)" ( (binary_expression "(int)puVar6 + 0xd" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) ))) ;) (expression_statement "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);" (call_expression "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8)" identifier (argument_list "(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8)" ( number_literal , (string_literal ""   Lowest aligned logical block address=%d\n"" " string_content escape_sequence ") , (binary_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8" (binary_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8" (parenthesized_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f)" ( (binary_expression "*(ushort *)((int)puVar6 + 0xe) & 0x3f" (pointer_expression "*(ushort *)((int)puVar6 + 0xe)" * (cast_expression "(ushort *)((int)puVar6 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) << number_literal) | (binary_expression "*(ushort *)((int)puVar6 + 0xe) >> 8" (pointer_expression "*(ushort *)((int)puVar6 + 0xe)" * (cast_expression "(ushort *)((int)puVar6 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + 0xe)" ( (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) ))) ;) (expression_statement "iVar7 = local_80 + (0xfffffffe < local_84);" (assignment_expression "iVar7 = local_80 + (0xfffffffe < local_84)" identifier = (binary_expression "local_80 + (0xfffffffe < local_84)" identifier + (parenthesized_expression "(0xfffffffe < local_84)" ( (binary_expression "0xfffffffe < local_84" number_literal < identifier) )))) ;) (expression_statement "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);" (call_expression "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7)" identifier (argument_list "(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7)" ( number_literal , (string_literal ""   Number of logical blocks=%llu\n"" " string_content escape_sequence ") , (binary_expression "local_84 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12)" identifier (argument_list "(1,"   Logical block size=%u bytes\n",uVar12)" ( number_literal , (string_literal ""   Logical block size=%u bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;" (assignment_expression "lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12" identifier = (binary_expression "(ulonglong)(local_84 + 1) * (ulonglong)uVar12" (call_expression "(ulonglong)(local_84 + 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_84 + 1)" ( (binary_expression "local_84 + 1" identifier + number_literal) ))) * (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = (uint)lVar4;" (assignment_expression "uVar9 = (uint)lVar4" identifier = (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;" (assignment_expression "iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7" identifier = (binary_expression "(int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7" (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "uVar12 * iVar7" identifier * identifier))) ;) (expression_statement "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);" (assignment_expression "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 0x48) < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 0x48) < uVar9)" ( (binary_expression "*(uint *)(param_2 + 0x48) < uVar9" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) < identifier) )))) ;) (expression_statement "iVar7 = *(int *)(param_2 + 0x4c) - iVar10;" (assignment_expression "iVar7 = *(int *)(param_2 + 0x4c) - iVar10" identifier = (binary_expression "*(int *)(param_2 + 0x4c) - iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" identifier = identifier) ;) (if_statement "if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }" if (parenthesized_expression "((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0)" ( (binary_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)" (call_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10)" identifier (argument_list "(*(int *)(param_2 + 0x4c),iVar10)" ( (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar7,uVar11)" identifier (argument_list "(iVar7,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar11) < 0" (cast_expression "(int)(iVar7 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar11)" ( (binary_expression "iVar7 - uVar11" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }" { (expression_statement "*(uint *)(param_2 + 0x48) = uVar9;" (assignment_expression "*(uint *)(param_2 + 0x48) = uVar9" (pointer_expression "*(uint *)(param_2 + 0x48)" * (cast_expression "(uint *)(param_2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_2 + 0x4c) = iVar10;" (assignment_expression "*(int *)(param_2 + 0x4c) = iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00013d47;" goto statement_identifier ;) })) }))) (expression_statement "sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));" (call_expression "sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c))" identifier (argument_list "(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c))" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);" (call_expression "pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70)" identifier (argument_list "("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70)" ( (string_literal ""READ CAPACITY (%d): %s\n"" " string_content escape_sequence ") , (binary_expression "(-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10" (parenthesized_expression "(-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa)" ( (binary_expression "-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa" (unary_expression "-(uint)(*(char *)(param_2 + 0xd) == '\0')" - (call_expression "(uint)(*(char *)(param_2 + 0xd) == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_2 + 0xd) == '\0')" ( (binary_expression "*(char *)(param_2 + 0xd) == '\0'" (pointer_expression "*(char *)(param_2 + 0xd)" * (cast_expression "(char *)(param_2 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd)" ( (binary_expression "param_2 + 0xd" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) )) + number_literal) , identifier ))) ;) }))) (labeled_statement "LAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }" statement_identifier : (if_statement "if (local_74 != (void *)0x0) {\n    free(local_74);\n  }" if (parenthesized_expression "(local_74 != (void *)0x0)" ( (binary_expression "local_74 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(local_74);\n  }" { (expression_statement "free(local_74);" (call_expression "free(local_74)" identifier (argument_list "(local_74)" ( identifier ))) ;) }))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }" { (expression_statement "FUN_00014200();" (call_expression "FUN_00014200()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStackY_b0 = 0;" (assignment_expression "uStackY_b0 = 0" identifier = number_literal) ;) (expression_statement "uStackY_b8 = local_88;" (assignment_expression "uStackY_b8 = local_88" identifier = identifier) ;) (if_statement "if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" if (parenthesized_expression "((int)local_84 < 0)" ( (binary_expression "(int)local_84 < 0" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" { (expression_statement "uStackY_b8 = -local_88;" (assignment_expression "uStackY_b8 = -local_88" identifier = (unary_expression "-local_88" - identifier)) ;) (expression_statement "uStackY_b0 = 0xffffffff;" (assignment_expression "uStackY_b0 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_84 = -(local_84 + (local_88 != 0));" (assignment_expression "local_84 = -(local_84 + (local_88 != 0))" identifier = (unary_expression "-(local_84 + (local_88 != 0))" - (parenthesized_expression "(local_84 + (local_88 != 0))" ( (binary_expression "local_84 + (local_88 != 0)" identifier + (parenthesized_expression "(local_88 != 0)" ( (binary_expression "local_88 != 0" identifier != number_literal) ))) )))) ;) })) (if_statement "if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }" if (parenthesized_expression "((int)uStack_7c < 0)" ( (binary_expression "(int)uStack_7c < 0" (cast_expression "(int)uStack_7c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }" { (expression_statement "bVar13 = local_80 != 0;" (assignment_expression "bVar13 = local_80 != 0" identifier = (binary_expression "local_80 != 0" identifier != number_literal)) ;) (expression_statement "local_80 = -local_80;" (assignment_expression "local_80 = -local_80" identifier = (unary_expression "-local_80" - identifier)) ;) (expression_statement "uStackY_b0 = ~uStackY_b0;" (assignment_expression "uStackY_b0 = ~uStackY_b0" identifier = (unary_expression "~uStackY_b0" ~ identifier)) ;) (expression_statement "uStack_7c = -(uStack_7c + bVar13);" (assignment_expression "uStack_7c = -(uStack_7c + bVar13)" identifier = (unary_expression "-(uStack_7c + bVar13)" - (parenthesized_expression "(uStack_7c + bVar13)" ( (binary_expression "uStack_7c + bVar13" identifier + identifier) )))) ;) })) (if_statement "if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" if (parenthesized_expression "(uStack_7c == 0)" ( (binary_expression "uStack_7c == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }" { (if_statement "if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" if (parenthesized_expression "(local_84 < local_80)" ( (binary_expression "local_84 < local_80" identifier < identifier) )) (compound_statement "{\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }" { (expression_statement "uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);" (assignment_expression "uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" identifier = (call_expression "(uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" ( (binary_expression "CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80" (call_expression "CONCAT44(local_84,uStackY_b8)" identifier (argument_list "(local_84,uStackY_b8)" ( identifier , identifier ))) / (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) }) (else_clause "else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" else (compound_statement "{\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" { (if_statement "if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (compound_statement "{\n          local_80 = 1 / 0;\n        }" { (expression_statement "local_80 = 1 / 0;" (assignment_expression "local_80 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);" (assignment_expression "uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" identifier = (call_expression "(uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" ( (binary_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80" (parenthesized_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)" ( (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80" (cast_expression "(ulonglong)local_84" ( (type_descriptor "ulonglong" type_identifier) ) identifier) % (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) << number_literal) | (cast_expression "(ulonglong)uStackY_b8" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )) / (cast_expression "(ulonglong)local_80" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) }))) }) (else_clause "else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" else (if_statement "if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" if (parenthesized_expression "(local_84 < uStack_7c)" ( (binary_expression "local_84 < uStack_7c" identifier < identifier) )) (compound_statement "{\n      uVar12 = 0;\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" else (compound_statement "{\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" { (expression_statement "uVar12 = 0x1f;" (assignment_expression "uVar12 = 0x1f" identifier = number_literal) ;) (if_statement "if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }" if (parenthesized_expression "(uStack_7c != 0)" ( (binary_expression "uStack_7c != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }" { (for_statement "for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }" for ( ; (binary_expression "uStack_7c >> uVar12 == 0" (binary_expression "uStack_7c >> uVar12" identifier >> identifier) == number_literal) ; (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (if_statement "if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" if (parenthesized_expression "((uVar12 ^ 0x1f) == 0)" ( (binary_expression "(uVar12 ^ 0x1f) == 0" (parenthesized_expression "(uVar12 ^ 0x1f)" ( (binary_expression "uVar12 ^ 0x1f" identifier ^ number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }" { (if_statement "if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }" if (parenthesized_expression "((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8))" ( (binary_expression "(uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)" (parenthesized_expression "(uStack_7c < local_84)" ( (binary_expression "uStack_7c < local_84" identifier < identifier) )) || (parenthesized_expression "(uVar12 = 0, local_80 <= uStackY_b8)" ( (comma_expression "uVar12 = 0, local_80 <= uStackY_b8" (assignment_expression "uVar12 = 0" identifier = number_literal) , (binary_expression "local_80 <= uStackY_b8" identifier <= identifier)) ))) )) (compound_statement "{\n          uVar12 = 1;\n        }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" else (compound_statement "{\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" { (expression_statement "bVar5 = (byte)(uVar12 ^ 0x1f);" (assignment_expression "bVar5 = (byte)(uVar12 ^ 0x1f)" identifier = (call_expression "(byte)(uVar12 ^ 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar12 ^ 0x1f)" ( (binary_expression "uVar12 ^ 0x1f" identifier ^ number_literal) )))) ;) (expression_statement "bVar8 = 0x20 - bVar5;" (assignment_expression "bVar8 = 0x20 - bVar5" identifier = (binary_expression "0x20 - bVar5" number_literal - identifier)) ;) (expression_statement "uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));" (assignment_expression "uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" identifier = (call_expression "(ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" ( (binary_expression "local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f)" (binary_expression "local_80 >> (bVar8 & 0x1f)" identifier >> (parenthesized_expression "(bVar8 & 0x1f)" ( (binary_expression "bVar8 & 0x1f" identifier & number_literal) ))) | (binary_expression "uStack_7c << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) )))) )))) ;) (expression_statement "uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));" (assignment_expression "uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" identifier = (call_expression "CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" identifier (argument_list "(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" ( (binary_expression "local_84 >> (bVar8 & 0x1f)" identifier >> (parenthesized_expression "(bVar8 & 0x1f)" ( (binary_expression "bVar8 & 0x1f" identifier & number_literal) ))) , (binary_expression "local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f)" (binary_expression "local_84 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) | (binary_expression "uStackY_b8 >> (bVar8 & 0x1f)" identifier >> (parenthesized_expression "(bVar8 & 0x1f)" ( (binary_expression "bVar8 & 0x1f" identifier & number_literal) )))) )))) ;) (expression_statement "uVar3 = uVar2 / uVar1;" (assignment_expression "uVar3 = uVar2 / uVar1" identifier = (binary_expression "uVar2 / uVar1" identifier / identifier)) ;) (expression_statement "uVar12 = (uint)uVar3;" (assignment_expression "uVar12 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = (uint)(uVar2 % uVar1);" (assignment_expression "uVar11 = (uint)(uVar2 % uVar1)" identifier = (call_expression "(uint)(uVar2 % uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 % uVar1)" ( (binary_expression "uVar2 % uVar1" identifier % identifier) )))) ;) (expression_statement "lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));" (assignment_expression "lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f))" identifier = (binary_expression "(uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f))" (parenthesized_expression "(uVar3 & 0xffffffff)" ( (binary_expression "uVar3 & 0xffffffff" identifier & number_literal) )) * (call_expression "(ulonglong)(local_80 << (bVar5 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(local_80 << (bVar5 & 0x1f))" ( (binary_expression "local_80 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) ))))) ;) (expression_statement "uVar9 = (uint)((ulonglong)lVar4 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)lVar4 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }" if (parenthesized_expression "((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))" ( (binary_expression "(uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)))" (parenthesized_expression "(uVar11 < uVar9)" ( (binary_expression "uVar11 < uVar9" identifier < identifier) )) || (parenthesized_expression "((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)))" ( (parenthesized_expression "(uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))" ( (binary_expression "uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)" (binary_expression "uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4" (binary_expression "uStackY_b8 << (bVar5 & 0x1f)" identifier << (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) < (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) && (parenthesized_expression "(uVar11 == uVar9)" ( (binary_expression "uVar11 == uVar9" identifier == identifier) ))) )) ))) )) (compound_statement "{\n          uVar12 = uVar12 - 1;\n        }" { (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) })) }))) }))))) (if_statement "if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }" if (parenthesized_expression "(uStackY_b0 != 0)" ( (binary_expression "uStackY_b0 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar12 = -uVar12;\n    }" { (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" identifier = (unary_expression "-uVar12" - identifier)) ;) })) (return_statement "return uVar12;" return identifier ;) })) (return_statement "return uVar12;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (string_literal " string_content ") , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) }))) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT , IDENT , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT) & LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (binary_expression (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT) , (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT) & LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (binary_expression (binary_expression (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) )) << LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT)) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT < IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )))) & LIT) )) + LIT) , IDENT ))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT / LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % (cast_expression ( (type_descriptor TYPE) ) IDENT)) << LIT) | (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT ^ LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) , (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT % IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) ))) )) (compound_statement { (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 = (unary_expression - IDENT)) ;) })) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "uint __regparm3 FUN_00013c70(undefined4 param_1,int param_2)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00013c70(undefined4 param_1,int param_2)" (identifier "FUN_00013c70") (parameter_list "(undefined4 param_1,int param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  byte bVar5;\n  uint *puVar6;\n  int iVar7;\n  byte bVar8;\n  undefined4 extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  bool bVar13;\n  undefined8 uVar14;\n  uint uStackY_b8;\n  uint uStackY_b0;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint uStack_7c;\n  void *local_74;\n  undefined1 local_70 [80];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x13c7d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (void *)0x0;\n  uVar14 = sg_memalign(0x20,0,&local_74,0);\n  puVar6 = (uint *)uVar14;\n  if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }\nLAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }\n  return uVar12;\n}" ({ "{") (declaration "ulonglong uVar1;" (type_identifier "ulonglong") (identifier "uVar1") (; ";")) (declaration "ulonglong uVar2;" (type_identifier "ulonglong") (identifier "uVar2") (; ";")) (declaration "ulonglong uVar3;" (type_identifier "ulonglong") (identifier "uVar3") (; ";")) (declaration "longlong lVar4;" (type_identifier "longlong") (identifier "lVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "undefined8 uVar14;" (type_identifier "undefined8") (identifier "uVar14") (; ";")) (declaration "uint uStackY_b8;" (type_identifier "uint") (identifier "uStackY_b8") (; ";")) (declaration "uint uStackY_b0;" (type_identifier "uint") (identifier "uStackY_b0") (; ";")) (declaration "uint local_88;" (type_identifier "uint") (identifier "local_88") (; ";")) (declaration "uint local_84;" (type_identifier "uint") (identifier "local_84") (; ";")) (declaration "uint local_80;" (type_identifier "uint") (identifier "local_80") (; ";")) (declaration "uint uStack_7c;" (type_identifier "uint") (identifier "uStack_7c") (; ";")) (declaration "void *local_74;" (primitive_type "void") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "undefined1 local_70 [80];" (type_identifier "undefined1") (array_declarator "local_70 [80]" (identifier "local_70") ([ "[") (number_literal "80") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x13c7d;" (assignment_expression "uStack_14 = 0x13c7d" (identifier "uStack_14") (= "=") (number_literal "0x13c7d")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_74 = (void *)0x0;" (assignment_expression "local_74 = (void *)0x0" (identifier "local_74") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar14 = sg_memalign(0x20,0,&local_74,0);" (assignment_expression "uVar14 = sg_memalign(0x20,0,&local_74,0)" (identifier "uVar14") (= "=") (call_expression "sg_memalign(0x20,0,&local_74,0)" (identifier "sg_memalign") (argument_list "(0x20,0,&local_74,0)" (( "(") (number_literal "0x20") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "puVar6 = (uint *)uVar14;" (assignment_expression "puVar6 = (uint *)uVar14" (identifier "puVar6") (= "=") (cast_expression "(uint *)uVar14" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if (puVar6 == (uint *)0x0) {\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }\n  else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" (if "if") (parenthesized_expression "(puVar6 == (uint *)0x0)" (( "(") (binary_expression "puVar6 == (uint *)0x0" (identifier "puVar6") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar12 = 0xffffffff;\n    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);\n  }" ({ "{") (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" (identifier "uVar12") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);" (call_expression "pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" (identifier "pr2serr") (argument_list "("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX)" (( "(") (string_literal ""%s: unable to obtain heap\n"" (" """) (string_content "%s: unable to obtain heap") (escape_sequence "\n") (" """)) (, ",") (string_literal ""print_read_cap"" (" """) (string_content "print_read_cap") (" """)) (, ",") (identifier "extraout_ECX") (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" (else "else") (compound_statement "{\n    if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }\n    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));\n    uVar12 = 0xffffffff;\n    pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);\n  }" ({ "{") (if_statement "if (*(char *)(param_2 + 0xd) == '\0') {\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }\n    else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0xd) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0xd) == '\0'" (pointer_expression "*(char *)(param_2 + 0xd)" (* "*") (cast_expression "(char *)(param_2 + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xd)" (( "(") (binary_expression "param_2 + 0xd" (identifier "param_2") (+ "+") (number_literal "0xd")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }\n    }" ({ "{") (expression_statement "iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20));" (assignment_expression "iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" (identifier "iVar7") (= "=") (call_expression "sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" (identifier "sg_ll_readcap_10") (argument_list "(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),\n                               (int)((ulonglong)uVar14 >> 0x20))" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "puVar6") (, ",") (number_literal "8") (, ",") (number_literal "1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (, ",") (cast_expression "(int)((ulonglong)uVar14 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "0x20")) () ")"))) () ")")))) (; ";")) (if_statement "if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;\n        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;\n        if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }\n        goto LAB_00013d47;\n      }" ({ "{") (expression_statement "uVar12 = *puVar6;" (assignment_expression "uVar12 = *puVar6" (identifier "uVar12") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" (identifier "uVar11") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;" (assignment_expression "uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18\n        ;" (assignment_expression "uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" (identifier "uVar11") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" (( "(") (binary_expression "uVar11 & 0xff0000" (identifier "uVar11") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" (( "(") (binary_expression "uVar11 & 0xff00" (identifier "uVar11") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar11 << 0x18" (identifier "uVar11") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar9 == 0xffffffff) {\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }\n        else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" (if "if") (parenthesized_expression "(uVar9 == 0xffffffff)" (( "(") (binary_expression "uVar9 == 0xffffffff" (identifier "uVar9") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n          uVar12 = 0xfffffffe;\n          if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }\n        }" ({ "{") (expression_statement "uVar12 = 0xfffffffe;" (assignment_expression "uVar12 = 0xfffffffe" (identifier "uVar12") (= "=") (number_literal "0xfffffffe")) (; ";")) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");\n          }" ({ "{") (expression_statement "puts("Read Capacity (10) response indicates that Read Capacity (16) is required");" (call_expression "puts("Read Capacity (10) response indicates that Read Capacity (16) is required")" (identifier "puts") (argument_list "("Read Capacity (10) response indicates that Read Capacity (16) is required")" (( "(") (string_literal ""Read Capacity (10) response indicates that Read Capacity (16) is required"" (" """) (string_content "Read Capacity (10) response indicates that Read Capacity (16) is required") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" (else "else") (compound_statement "{\n          puts("Read Capacity (10) results:");\n          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);\n          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;\n          iVar10 = (int)((ulonglong)lVar4 >> 0x20);\n          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);\n          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n          local_88 = uVar9;\n          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }\n        }" ({ "{") (expression_statement "puts("Read Capacity (10) results:");" (call_expression "puts("Read Capacity (10) results:")" (identifier "puts") (argument_list "("Read Capacity (10) results:")" (( "(") (string_literal ""Read Capacity (10) results:"" (" """) (string_content "Read Capacity (10) results:") (" """)) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);" (call_expression "__printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1)" (identifier "__printf_chk") (argument_list "(1,"   Number of logical blocks=%u\n",uVar9 + 1)" (( "(") (number_literal "1") (, ",") (string_literal ""   Number of logical blocks=%u\n"" (" """) (string_content "   Number of logical blocks=%u") (escape_sequence "\n") (" """)) (, ",") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12)" (identifier "__printf_chk") (argument_list "(1,"   Logical block size=%u bytes\n",uVar12)" (( "(") (number_literal "1") (, ",") (string_literal ""   Logical block size=%u bytes\n"" (" """) (string_content "   Logical block size=%u bytes") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar12") () ")"))) (; ";")) (expression_statement "lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;" (assignment_expression "lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12" (identifier "lVar4") (= "=") (binary_expression "(ulonglong)(uVar9 + 1) * (ulonglong)uVar12" (call_expression "(ulonglong)(uVar9 + 1)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uVar9 + 1)" (( "(") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) () ")"))) (* "*") (cast_expression "(ulonglong)uVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar12")))) (; ";")) (expression_statement "iVar10 = (int)((ulonglong)lVar4 >> 0x20);" (assignment_expression "iVar10 = (int)((ulonglong)lVar4 >> 0x20)" (identifier "iVar10") (= "=") (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar4")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);" (assignment_expression "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4)" (identifier "uVar11") (= "=") (call_expression "(uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_2 + 0x48) < (uint)lVar4)" (( "(") (binary_expression "*(uint *)(param_2 + 0x48) < (uint)lVar4" (pointer_expression "*(uint *)(param_2 + 0x48)" (* "*") (cast_expression "(uint *)(param_2 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (< "<") (cast_expression "(uint)lVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar4"))) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(param_2 + 0x4c) - iVar10;" (assignment_expression "iVar7 = *(int *)(param_2 + 0x4c) - iVar10" (identifier "iVar7") (= "=") (binary_expression "*(int *)(param_2 + 0x4c) - iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" (* "*") (cast_expression "(int *)(param_2 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))) (- "-") (identifier "iVar10"))) (; ";")) (expression_statement "local_88 = uVar9;" (assignment_expression "local_88 = uVar9" (identifier "local_88") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0) {\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }" (if "if") (parenthesized_expression "((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0)" (( "(") (binary_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n              (int)(iVar7 - uVar11) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11))" (( "(") (binary_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)" (call_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10)" (identifier "SBORROW4") (argument_list "(*(int *)(param_2 + 0x4c),iVar10)" (( "(") (pointer_expression "*(int *)(param_2 + 0x4c)" (* "*") (cast_expression "(int *)(param_2 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))) (, ",") (identifier "iVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar7,uVar11)" (identifier "SBORROW4") (argument_list "(iVar7,uVar11)" (( "(") (identifier "iVar7") (, ",") (identifier "uVar11") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar7 - uVar11) < 0" (cast_expression "(int)(iVar7 - uVar11)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar7 - uVar11)" (( "(") (binary_expression "iVar7 - uVar11" (identifier "iVar7") (- "-") (identifier "uVar11")) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n            *(longlong *)(param_2 + 0x48) = lVar4;\n          }" ({ "{") (expression_statement "*(longlong *)(param_2 + 0x48) = lVar4;" (assignment_expression "*(longlong *)(param_2 + 0x48) = lVar4" (pointer_expression "*(longlong *)(param_2 + 0x48)" (* "*") (cast_expression "(longlong *)(param_2 + 0x48)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (} "}"))) (} "}")))) (goto_statement "goto LAB_00013d47;" (goto "goto") (statement_identifier "LAB_00013d47") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" (else "else") (compound_statement "{\n      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));\n      if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }\n    }" ({ "{") (expression_statement "iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));" (assignment_expression "iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" (identifier "iVar7") (= "=") (call_expression "sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" (identifier "sg_ll_readcap_16") (argument_list "(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c))" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "puVar6") (, ",") (number_literal "0x20") (, ",") (number_literal "1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar7 == 0) {\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar12 = *puVar6;\n        uVar11 = puVar6[1];\n        uVar9 = puVar6[2];\n        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;\n        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;\n        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        puts("Read Capacity (16) results:");\n        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);\n        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);\n        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);\n        __printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);\n        iVar7 = local_80 + (0xfffffffe < local_84);\n        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);\n        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);\n        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;\n        uVar9 = (uint)lVar4;\n        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;\n        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);\n        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;\n        local_88 = uVar12;\n        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }\n        goto LAB_00013d47;\n      }" ({ "{") (expression_statement "uVar12 = *puVar6;" (assignment_expression "uVar12 = *puVar6" (identifier "uVar12") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" (identifier "uVar11") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar9 = puVar6[2];" (assignment_expression "uVar9 = puVar6[2]" (identifier "uVar9") (= "=") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18;" (assignment_expression "local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18" (identifier "local_84") (= "=") (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                   uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" (identifier "uVar11") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" (( "(") (binary_expression "uVar11 & 0xff0000" (identifier "uVar11") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" (( "(") (binary_expression "uVar11 & 0xff00" (identifier "uVar11") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar11 << 0x18" (identifier "uVar11") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18;" (assignment_expression "local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18" (identifier "local_80") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                   uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "puts("Read Capacity (16) results:");" (call_expression "puts("Read Capacity (16) results:")" (identifier "puts") (argument_list "("Read Capacity (16) results:")" (( "(") (string_literal ""Read Capacity (16) results:"" (" """) (string_content "Read Capacity (16) results:") (" """)) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);" (call_expression "__printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4)" (identifier "__printf_chk") (argument_list "(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1\n                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4)" (( "(") (number_literal "1") (, ",") (string_literal ""   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n"" (" """) (string_content "   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d") (escape_sequence "\n") (" """)) (, ",") (binary_expression "(byte)puVar6[3] & 1" (cast_expression "(byte)puVar6[3]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]"))) (& "&") (number_literal "1")) (, ",") (binary_expression "(byte)puVar6[3] >> 1 & 7" (binary_expression "(byte)puVar6[3] >> 1" (cast_expression "(byte)puVar6[3]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "7")) (, ",") (binary_expression "*(byte *)((int)puVar6 + 0xd) >> 4" (pointer_expression "*(byte *)((int)puVar6 + 0xd)" (* "*") (cast_expression "(byte *)((int)puVar6 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 0xd)" (( "(") (binary_expression "(int)puVar6 + 0xd" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "0xd")) () ")")))) (>> ">>") (number_literal "4")) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);" (call_expression "__printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1)" (identifier "__printf_chk") (argument_list "(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",\n                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,\n                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1)" (( "(") (number_literal "1") (, ",") (string_literal ""   Logical block provisioning: lbpme=%d, lbprz=%d\n"" (" """) (string_content "   Logical block provisioning: lbpme=%d, lbprz=%d") (escape_sequence "\n") (" """)) (, ",") (binary_expression "(uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f" (binary_expression "(uint)(int)(char)*(byte *)((int)puVar6 + 0xe)" (call_expression "(uint)(int)(char)" (call_expression "(uint)(int)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (cast_expression "(byte *)((int)puVar6 + 0xe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 0xe)" (( "(") (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "0xe")) () ")")))) (>> ">>") (number_literal "0x1f")) (, ",") (binary_expression "*(byte *)((int)puVar6 + 0xe) >> 6 & 1" (binary_expression "*(byte *)((int)puVar6 + 0xe) >> 6" (pointer_expression "*(byte *)((int)puVar6 + 0xe)" (* "*") (cast_expression "(byte *)((int)puVar6 + 0xe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 0xe)" (( "(") (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "0xe")) () ")")))) (>> ">>") (number_literal "6")) (& "&") (number_literal "1")) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf);" (call_expression "__printf_chk(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf)" (identifier "__printf_chk") (argument_list "(1,"   Logical blocks per physical block exponent=%d\n",\n                     *(byte *)((int)puVar6 + 0xd) & 0xf)" (( "(") (number_literal "1") (, ",") (string_literal ""   Logical blocks per physical block exponent=%d\n"" (" """) (string_content "   Logical blocks per physical block exponent=%d") (escape_sequence "\n") (" """)) (, ",") (binary_expression "*(byte *)((int)puVar6 + 0xd) & 0xf" (pointer_expression "*(byte *)((int)puVar6 + 0xd)" (* "*") (cast_expression "(byte *)((int)puVar6 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 0xd)" (( "(") (binary_expression "(int)puVar6 + 0xd" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "0xd")) () ")")))) (& "&") (number_literal "0xf")) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8);" (call_expression "__printf_chk(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8)" (identifier "__printf_chk") (argument_list "(1,"   Lowest aligned logical block address=%d\n",\n                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8)" (( "(") (number_literal "1") (, ",") (string_literal ""   Lowest aligned logical block address=%d\n"" (" """) (string_content "   Lowest aligned logical block address=%d") (escape_sequence "\n") (" """)) (, ",") (binary_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |\n                     *(ushort *)((int)puVar6 + 0xe) >> 8" (binary_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8" (parenthesized_expression "(*(ushort *)((int)puVar6 + 0xe) & 0x3f)" (( "(") (binary_expression "*(ushort *)((int)puVar6 + 0xe) & 0x3f" (pointer_expression "*(ushort *)((int)puVar6 + 0xe)" (* "*") (cast_expression "(ushort *)((int)puVar6 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 0xe)" (( "(") (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "0xe")) () ")")))) (& "&") (number_literal "0x3f")) () ")")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*(ushort *)((int)puVar6 + 0xe) >> 8" (pointer_expression "*(ushort *)((int)puVar6 + 0xe)" (* "*") (cast_expression "(ushort *)((int)puVar6 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + 0xe)" (( "(") (binary_expression "(int)puVar6 + 0xe" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (number_literal "0xe")) () ")")))) (>> ">>") (number_literal "8"))) () ")"))) (; ";")) (expression_statement "iVar7 = local_80 + (0xfffffffe < local_84);" (assignment_expression "iVar7 = local_80 + (0xfffffffe < local_84)" (identifier "iVar7") (= "=") (binary_expression "local_80 + (0xfffffffe < local_84)" (identifier "local_80") (+ "+") (parenthesized_expression "(0xfffffffe < local_84)" (( "(") (binary_expression "0xfffffffe < local_84" (number_literal "0xfffffffe") (< "<") (identifier "local_84")) () ")")))) (; ";")) (expression_statement "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);" (call_expression "__printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7)" (identifier "__printf_chk") (argument_list "(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7)" (( "(") (number_literal "1") (, ",") (string_literal ""   Number of logical blocks=%llu\n"" (" """) (string_content "   Number of logical blocks=%llu") (escape_sequence "\n") (" """)) (, ",") (binary_expression "local_84 + 1" (identifier "local_84") (+ "+") (number_literal "1")) (, ",") (identifier "iVar7") () ")"))) (; ";")) (expression_statement "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12);" (call_expression "__printf_chk(1,"   Logical block size=%u bytes\n",uVar12)" (identifier "__printf_chk") (argument_list "(1,"   Logical block size=%u bytes\n",uVar12)" (( "(") (number_literal "1") (, ",") (string_literal ""   Logical block size=%u bytes\n"" (" """) (string_content "   Logical block size=%u bytes") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar12") () ")"))) (; ";")) (expression_statement "lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;" (assignment_expression "lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12" (identifier "lVar4") (= "=") (binary_expression "(ulonglong)(local_84 + 1) * (ulonglong)uVar12" (call_expression "(ulonglong)(local_84 + 1)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(local_84 + 1)" (( "(") (binary_expression "local_84 + 1" (identifier "local_84") (+ "+") (number_literal "1")) () ")"))) (* "*") (cast_expression "(ulonglong)uVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar12")))) (; ";")) (expression_statement "uVar9 = (uint)lVar4;" (assignment_expression "uVar9 = (uint)lVar4" (identifier "uVar9") (= "=") (cast_expression "(uint)lVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar4"))) (; ";")) (expression_statement "iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;" (assignment_expression "iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7" (identifier "iVar10") (= "=") (binary_expression "(int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7" (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar4")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (binary_expression "uVar12 * iVar7" (identifier "uVar12") (* "*") (identifier "iVar7")))) (; ";")) (expression_statement "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);" (assignment_expression "uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9)" (identifier "uVar11") (= "=") (call_expression "(uint)(*(uint *)(param_2 + 0x48) < uVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_2 + 0x48) < uVar9)" (( "(") (binary_expression "*(uint *)(param_2 + 0x48) < uVar9" (pointer_expression "*(uint *)(param_2 + 0x48)" (* "*") (cast_expression "(uint *)(param_2 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (< "<") (identifier "uVar9")) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(param_2 + 0x4c) - iVar10;" (assignment_expression "iVar7 = *(int *)(param_2 + 0x4c) - iVar10" (identifier "iVar7") (= "=") (binary_expression "*(int *)(param_2 + 0x4c) - iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" (* "*") (cast_expression "(int *)(param_2 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))) (- "-") (identifier "iVar10"))) (; ";")) (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" (identifier "local_88") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0) {\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }" (if "if") (parenthesized_expression "((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0)" (( "(") (binary_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=\n            (int)(iVar7 - uVar11) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11))" (( "(") (binary_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)" (call_expression "SBORROW4(*(int *)(param_2 + 0x4c),iVar10)" (identifier "SBORROW4") (argument_list "(*(int *)(param_2 + 0x4c),iVar10)" (( "(") (pointer_expression "*(int *)(param_2 + 0x4c)" (* "*") (cast_expression "(int *)(param_2 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))) (, ",") (identifier "iVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar7,uVar11)" (identifier "SBORROW4") (argument_list "(iVar7,uVar11)" (( "(") (identifier "iVar7") (, ",") (identifier "uVar11") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar7 - uVar11) < 0" (cast_expression "(int)(iVar7 - uVar11)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar7 - uVar11)" (( "(") (binary_expression "iVar7 - uVar11" (identifier "iVar7") (- "-") (identifier "uVar11")) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n          *(uint *)(param_2 + 0x48) = uVar9;\n          *(int *)(param_2 + 0x4c) = iVar10;\n        }" ({ "{") (expression_statement "*(uint *)(param_2 + 0x48) = uVar9;" (assignment_expression "*(uint *)(param_2 + 0x48) = uVar9" (pointer_expression "*(uint *)(param_2 + 0x48)" (* "*") (cast_expression "(uint *)(param_2 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int *)(param_2 + 0x4c) = iVar10;" (assignment_expression "*(int *)(param_2 + 0x4c) = iVar10" (pointer_expression "*(int *)(param_2 + 0x4c)" (* "*") (cast_expression "(int *)(param_2 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (goto_statement "goto LAB_00013d47;" (goto "goto") (statement_identifier "LAB_00013d47") (; ";")) (} "}"))) (} "}")))) (expression_statement "sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));" (call_expression "sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c))" (identifier "sg_get_category_sense_str") (argument_list "(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c))" (( "(") (identifier "iVar7") (, ",") (number_literal "0x50") (, ",") (identifier "local_70") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" (identifier "uVar12") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);" (call_expression "pr2serr("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70)" (identifier "pr2serr") (argument_list "("READ CAPACITY (%d): %s\n",\n            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70)" (( "(") (string_literal ""READ CAPACITY (%d): %s\n"" (" """) (string_content "READ CAPACITY (%d): %s") (escape_sequence "\n") (" """)) (, ",") (binary_expression "(-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10" (parenthesized_expression "(-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa)" (( "(") (binary_expression "-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa" (unary_expression "-(uint)(*(char *)(param_2 + 0xd) == '\0')" (- "-") (call_expression "(uint)(*(char *)(param_2 + 0xd) == '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(param_2 + 0xd) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0xd) == '\0'" (pointer_expression "*(char *)(param_2 + 0xd)" (* "*") (cast_expression "(char *)(param_2 + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xd)" (( "(") (binary_expression "param_2 + 0xd" (identifier "param_2") (+ "+") (number_literal "0xd")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (& "&") (number_literal "0xfffffffa")) () ")")) (+ "+") (number_literal "0x10")) (, ",") (identifier "local_70") () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_00013d47:\n  if (local_74 != (void *)0x0) {\n    free(local_74);\n  }" (statement_identifier "LAB_00013d47") (: ":") (if_statement "if (local_74 != (void *)0x0) {\n    free(local_74);\n  }" (if "if") (parenthesized_expression "(local_74 != (void *)0x0)" (( "(") (binary_expression "local_74 != (void *)0x0" (identifier "local_74") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    free(local_74);\n  }" ({ "{") (expression_statement "free(local_74);" (call_expression "free(local_74)" (identifier "free") (argument_list "(local_74)" (( "(") (identifier "local_74") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    FUN_00014200();\n    uStackY_b0 = 0;\n    uStackY_b8 = local_88;\n    if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }\n    if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }\n    if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }\n    if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }\n    return uVar12;\n  }" ({ "{") (expression_statement "FUN_00014200();" (call_expression "FUN_00014200()" (identifier "FUN_00014200") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uStackY_b0 = 0;" (assignment_expression "uStackY_b0 = 0" (identifier "uStackY_b0") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStackY_b8 = local_88;" (assignment_expression "uStackY_b8 = local_88" (identifier "uStackY_b8") (= "=") (identifier "local_88")) (; ";")) (if_statement "if ((int)local_84 < 0) {\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" (if "if") (parenthesized_expression "((int)local_84 < 0)" (( "(") (binary_expression "(int)local_84 < 0" (cast_expression "(int)local_84" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_84")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uStackY_b8 = -local_88;\n      uStackY_b0 = 0xffffffff;\n      local_84 = -(local_84 + (local_88 != 0));\n    }" ({ "{") (expression_statement "uStackY_b8 = -local_88;" (assignment_expression "uStackY_b8 = -local_88" (identifier "uStackY_b8") (= "=") (unary_expression "-local_88" (- "-") (identifier "local_88"))) (; ";")) (expression_statement "uStackY_b0 = 0xffffffff;" (assignment_expression "uStackY_b0 = 0xffffffff" (identifier "uStackY_b0") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_84 = -(local_84 + (local_88 != 0));" (assignment_expression "local_84 = -(local_84 + (local_88 != 0))" (identifier "local_84") (= "=") (unary_expression "-(local_84 + (local_88 != 0))" (- "-") (parenthesized_expression "(local_84 + (local_88 != 0))" (( "(") (binary_expression "local_84 + (local_88 != 0)" (identifier "local_84") (+ "+") (parenthesized_expression "(local_88 != 0)" (( "(") (binary_expression "local_88 != 0" (identifier "local_88") (!= "!=") (number_literal "0")) () ")"))) () ")")))) (; ";")) (} "}"))) (if_statement "if ((int)uStack_7c < 0) {\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }" (if "if") (parenthesized_expression "((int)uStack_7c < 0)" (( "(") (binary_expression "(int)uStack_7c < 0" (cast_expression "(int)uStack_7c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_7c")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      bVar13 = local_80 != 0;\n      local_80 = -local_80;\n      uStackY_b0 = ~uStackY_b0;\n      uStack_7c = -(uStack_7c + bVar13);\n    }" ({ "{") (expression_statement "bVar13 = local_80 != 0;" (assignment_expression "bVar13 = local_80 != 0" (identifier "bVar13") (= "=") (binary_expression "local_80 != 0" (identifier "local_80") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_80 = -local_80;" (assignment_expression "local_80 = -local_80" (identifier "local_80") (= "=") (unary_expression "-local_80" (- "-") (identifier "local_80"))) (; ";")) (expression_statement "uStackY_b0 = ~uStackY_b0;" (assignment_expression "uStackY_b0 = ~uStackY_b0" (identifier "uStackY_b0") (= "=") (unary_expression "~uStackY_b0" (~ "~") (identifier "uStackY_b0"))) (; ";")) (expression_statement "uStack_7c = -(uStack_7c + bVar13);" (assignment_expression "uStack_7c = -(uStack_7c + bVar13)" (identifier "uStack_7c") (= "=") (unary_expression "-(uStack_7c + bVar13)" (- "-") (parenthesized_expression "(uStack_7c + bVar13)" (( "(") (binary_expression "uStack_7c + bVar13" (identifier "uStack_7c") (+ "+") (identifier "bVar13")) () ")")))) (; ";")) (} "}"))) (if_statement "if (uStack_7c == 0) {\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }\n    else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uStack_7c == 0)" (( "(") (binary_expression "uStack_7c == 0" (identifier "uStack_7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }\n    }" ({ "{") (if_statement "if (local_84 < local_80) {\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }\n      else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" (if "if") (parenthesized_expression "(local_84 < local_80)" (( "(") (binary_expression "local_84 < local_80" (identifier "local_84") (< "<") (identifier "local_80")) () ")")) (compound_statement "{\n        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);\n      }" ({ "{") (expression_statement "uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);" (assignment_expression "uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" (identifier "uVar12") (= "=") (call_expression "(uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80)" (( "(") (binary_expression "CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80" (call_expression "CONCAT44(local_84,uStackY_b8)" (identifier "CONCAT44") (argument_list "(local_84,uStackY_b8)" (( "(") (identifier "local_84") (, ",") (identifier "uStackY_b8") () ")"))) (/ "/") (cast_expression "(ulonglong)local_80" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_80"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" (else "else") (compound_statement "{\n        if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }\n        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);\n      }" ({ "{") (if_statement "if (local_80 == 0) {\n          local_80 = 1 / 0;\n        }" (if "if") (parenthesized_expression "(local_80 == 0)" (( "(") (binary_expression "local_80 == 0" (identifier "local_80") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_80 = 1 / 0;\n        }" ({ "{") (expression_statement "local_80 = 1 / 0;" (assignment_expression "local_80 = 1 / 0" (identifier "local_80") (= "=") (binary_expression "1 / 0" (number_literal "1") (/ "/") (number_literal "0"))) (; ";")) (} "}"))) (expression_statement "uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80);" (assignment_expression "uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" (identifier "uVar12") (= "=") (call_expression "(uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80)" (( "(") (binary_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)\n                       / (ulonglong)local_80" (parenthesized_expression "((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)" (( "(") (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80 << 0x20" (binary_expression "(ulonglong)local_84 % (ulonglong)local_80" (cast_expression "(ulonglong)local_84" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_84")) (% "%") (cast_expression "(ulonglong)local_80" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_80"))) (<< "<<") (number_literal "0x20")) (| "|") (cast_expression "(ulonglong)uStackY_b8" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uStackY_b8"))) () ")")) (/ "/") (cast_expression "(ulonglong)local_80" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_80"))) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" (else "else") (if_statement "if (local_84 < uStack_7c) {\n      uVar12 = 0;\n    }\n    else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(local_84 < uStack_7c)" (( "(") (binary_expression "local_84 < uStack_7c" (identifier "local_84") (< "<") (identifier "uStack_7c")) () ")")) (compound_statement "{\n      uVar12 = 0;\n    }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" (else "else") (compound_statement "{\n      uVar12 = 0x1f;\n      if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }\n      if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }\n    }" ({ "{") (expression_statement "uVar12 = 0x1f;" (assignment_expression "uVar12 = 0x1f" (identifier "uVar12") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uStack_7c != 0) {\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }" (if "if") (parenthesized_expression "(uStack_7c != 0)" (( "(") (binary_expression "uStack_7c != 0" (identifier "uStack_7c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }\n      }" ({ "{") (for_statement "for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {\n        }" (for "for") (( "(") (; ";") (binary_expression "uStack_7c >> uVar12 == 0" (binary_expression "uStack_7c >> uVar12" (identifier "uStack_7c") (>> ">>") (identifier "uVar12")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar12 = uVar12 - 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        }" ({ "{") (} "}"))) (} "}"))) (if_statement "if ((uVar12 ^ 0x1f) == 0) {\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }\n      else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" (if "if") (parenthesized_expression "((uVar12 ^ 0x1f) == 0)" (( "(") (binary_expression "(uVar12 ^ 0x1f) == 0" (parenthesized_expression "(uVar12 ^ 0x1f)" (( "(") (binary_expression "uVar12 ^ 0x1f" (identifier "uVar12") (^ "^") (number_literal "0x1f")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }\n      }" ({ "{") (if_statement "if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {\n          uVar12 = 1;\n        }" (if "if") (parenthesized_expression "((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8))" (( "(") (binary_expression "(uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)" (parenthesized_expression "(uStack_7c < local_84)" (( "(") (binary_expression "uStack_7c < local_84" (identifier "uStack_7c") (< "<") (identifier "local_84")) () ")")) (|| "||") (parenthesized_expression "(uVar12 = 0, local_80 <= uStackY_b8)" (( "(") (comma_expression "uVar12 = 0, local_80 <= uStackY_b8" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (, ",") (binary_expression "local_80 <= uStackY_b8" (identifier "local_80") (<= "<=") (identifier "uStackY_b8"))) () ")"))) () ")")) (compound_statement "{\n          uVar12 = 1;\n        }" ({ "{") (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" (else "else") (compound_statement "{\n        bVar5 = (byte)(uVar12 ^ 0x1f);\n        bVar8 = 0x20 - bVar5;\n        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));\n        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));\n        uVar3 = uVar2 / uVar1;\n        uVar12 = (uint)uVar3;\n        uVar11 = (uint)(uVar2 % uVar1);\n        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));\n        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);\n        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }\n      }" ({ "{") (expression_statement "bVar5 = (byte)(uVar12 ^ 0x1f);" (assignment_expression "bVar5 = (byte)(uVar12 ^ 0x1f)" (identifier "bVar5") (= "=") (call_expression "(byte)(uVar12 ^ 0x1f)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar12 ^ 0x1f)" (( "(") (binary_expression "uVar12 ^ 0x1f" (identifier "uVar12") (^ "^") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "bVar8 = 0x20 - bVar5;" (assignment_expression "bVar8 = 0x20 - bVar5" (identifier "bVar8") (= "=") (binary_expression "0x20 - bVar5" (number_literal "0x20") (- "-") (identifier "bVar5"))) (; ";")) (expression_statement "uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));" (assignment_expression "uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" (identifier "uVar1") (= "=") (call_expression "(ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f))" (( "(") (binary_expression "local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f)" (binary_expression "local_80 >> (bVar8 & 0x1f)" (identifier "local_80") (>> ">>") (parenthesized_expression "(bVar8 & 0x1f)" (( "(") (binary_expression "bVar8 & 0x1f" (identifier "bVar8") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uStack_7c << (bVar5 & 0x1f)" (identifier "uStack_7c") (<< "<<") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));" (assignment_expression "uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" (identifier "uVar2") (= "=") (call_expression "CONCAT44(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" (identifier "CONCAT44") (argument_list "(local_84 >> (bVar8 & 0x1f),\n                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f))" (( "(") (binary_expression "local_84 >> (bVar8 & 0x1f)" (identifier "local_84") (>> ">>") (parenthesized_expression "(bVar8 & 0x1f)" (( "(") (binary_expression "bVar8 & 0x1f" (identifier "bVar8") (& "&") (number_literal "0x1f")) () ")"))) (, ",") (binary_expression "local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f)" (binary_expression "local_84 << (bVar5 & 0x1f)" (identifier "local_84") (<< "<<") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uStackY_b8 >> (bVar8 & 0x1f)" (identifier "uStackY_b8") (>> ">>") (parenthesized_expression "(bVar8 & 0x1f)" (( "(") (binary_expression "bVar8 & 0x1f" (identifier "bVar8") (& "&") (number_literal "0x1f")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar3 = uVar2 / uVar1;" (assignment_expression "uVar3 = uVar2 / uVar1" (identifier "uVar3") (= "=") (binary_expression "uVar2 / uVar1" (identifier "uVar2") (/ "/") (identifier "uVar1"))) (; ";")) (expression_statement "uVar12 = (uint)uVar3;" (assignment_expression "uVar12 = (uint)uVar3" (identifier "uVar12") (= "=") (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3"))) (; ";")) (expression_statement "uVar11 = (uint)(uVar2 % uVar1);" (assignment_expression "uVar11 = (uint)(uVar2 % uVar1)" (identifier "uVar11") (= "=") (call_expression "(uint)(uVar2 % uVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 % uVar1)" (( "(") (binary_expression "uVar2 % uVar1" (identifier "uVar2") (% "%") (identifier "uVar1")) () ")")))) (; ";")) (expression_statement "lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));" (assignment_expression "lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f))" (identifier "lVar4") (= "=") (binary_expression "(uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f))" (parenthesized_expression "(uVar3 & 0xffffffff)" (( "(") (binary_expression "uVar3 & 0xffffffff" (identifier "uVar3") (& "&") (number_literal "0xffffffff")) () ")")) (* "*") (call_expression "(ulonglong)(local_80 << (bVar5 & 0x1f))" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(local_80 << (bVar5 & 0x1f))" (( "(") (binary_expression "local_80 << (bVar5 & 0x1f)" (identifier "local_80") (<< "<<") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar9 = (uint)((ulonglong)lVar4 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)lVar4 >> 0x20)" (identifier "uVar9") (= "=") (call_expression "(uint)((ulonglong)lVar4 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar4 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar4")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))\n        {\n          uVar12 = uVar12 - 1;\n        }" (if "if") (parenthesized_expression "((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))" (( "(") (binary_expression "(uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)))" (parenthesized_expression "(uVar11 < uVar9)" (( "(") (binary_expression "uVar11 < uVar9" (identifier "uVar11") (< "<") (identifier "uVar9")) () ")")) (|| "||") (parenthesized_expression "((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)))" (( "(") (parenthesized_expression "(uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))" (( "(") (binary_expression "uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9)" (binary_expression "uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4" (binary_expression "uStackY_b8 << (bVar5 & 0x1f)" (identifier "uStackY_b8") (<< "<<") (parenthesized_expression "(bVar5 & 0x1f)" (( "(") (binary_expression "bVar5 & 0x1f" (identifier "bVar5") (& "&") (number_literal "0x1f")) () ")"))) (< "<") (cast_expression "(uint)lVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar4"))) (&& "&&") (parenthesized_expression "(uVar11 == uVar9)" (( "(") (binary_expression "uVar11 == uVar9" (identifier "uVar11") (== "==") (identifier "uVar9")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          uVar12 = uVar12 - 1;\n        }" ({ "{") (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (} "}")))))) (if_statement "if (uStackY_b0 != 0) {\n      uVar12 = -uVar12;\n    }" (if "if") (parenthesized_expression "(uStackY_b0 != 0)" (( "(") (binary_expression "uStackY_b0 != 0" (identifier "uStackY_b0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar12 = -uVar12;\n    }" ({ "{") (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" (identifier "uVar12") (= "=") (unary_expression "-uVar12" (- "-") (identifier "uVar12"))) (; ";")) (} "}"))) (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (} "}"))) (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (} "}")))

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

int __regparm3 function_1(int fd,type_1 *op)

{
  int var_14;
  type_2 var_31;
  type_2 var_30;
  type_2 var_32;
  type_3 lVar5;
  type_4 var_28;
  type_5 *var_3;
  int var_6;
  int var_21;
  type_4 var_29;
  type_6 extraout_ECX;
  type_5 var_9;
  int var_12;
  type_5 var_8;
  type_5 var_7;
  int var_1;
  bool var_25;
  type_7 uVar16;
  type_5 var_27;
  type_5 var_33;
  type_5 var_23;
  type_5 var_17;
  type_5 var_16;
  type_5 var_24;
  uint8_t *var_19;
  char b [80];
  
  var_21 = *(int *)(var_1 + 0x14);
  var_19 = (uint8_t *)0x0;
  uVar16 = var_2(0x20,0,&var_19,0);
  var_3 = (type_5 *)uVar16;
  if (var_3 == (type_5 *)0x0) {
    var_7 = 0xffffffff;
    var_4("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);
  }
  else {
    if (op->do_rcap16 == false) {
      var_6 = var_5(fd,0,0,var_3,8,1,op->verbose,(int)((type_2)uVar16 >> 0x20));
      if (var_6 == 0) {
        var_7 = *var_3;
        var_8 = var_3[1];
        var_9 = var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 | var_7 << 0x18
        ;
        var_7 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18
        ;
        if (var_9 == 0xffffffff) {
          var_7 = 0xfffffffe;
          if (op->verbose != 0) {
            var_10("Read Capacity (10) response indicates that Read Capacity (16) is required");
          }
        }
        else {
          var_10("Read Capacity (10) results:");
          var_11(1,"   Number of logical blocks=%u\n",var_9 + 1);
          var_11(1,"   Logical block size=%u bytes\n",var_7);
          var_6 = *(int *)((int)&op->total_byte_count + 4);
          lVar5 = (type_2)(var_9 + 1) * (type_2)var_7;
          var_12 = (int)((type_2)lVar5 >> 0x20);
          var_8 = (type_5)((type_5)op->total_byte_count < (type_5)lVar5);
          var_14 = var_6 - var_12;
          var_23 = var_9;
          if ((var_13(var_6,var_12) != var_13(var_14,var_8)) != (int)(var_14 - var_8) < 0) {
            op->total_byte_count = lVar5;
          }
        }
        goto LAB_00013d47;
      }
    }
    else {
      var_6 = var_15(fd,0,0,0,var_3,0x20,1,op->verbose);
      if (var_6 == 0) {
        var_7 = *var_3;
        var_8 = var_3[1];
        var_9 = var_3[2];
        var_17 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
                   var_8 << 0x18;
        var_16 = var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 |
                   var_7 << 0x18;
        var_7 = var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18
        ;
        var_10("Read Capacity (16) results:");
        var_11(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(type_4)var_3[3] & 1
                     ,(type_4)var_3[3] >> 1 & 7,*(type_4 *)((int)var_3 + 0xd) >> 4);
        var_11(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",
                     (type_5)(int)(char)*(type_4 *)((int)var_3 + 0xe) >> 0x1f,
                     *(type_4 *)((int)var_3 + 0xe) >> 6 & 1);
        var_11(1,"   Logical blocks per physical block exponent=%d\n",
                     *(type_4 *)((int)var_3 + 0xd) & 0xf);
        var_11(1,"   Lowest aligned logical block address=%d\n",
                     (*(type_8 *)((int)var_3 + 0xe) & 0x3f) << 8 |
                     *(type_8 *)((int)var_3 + 0xe) >> 8);
        var_6 = var_16 + (0xfffffffe < var_17);
        var_11(1,"   Number of logical blocks=%llu\n",var_17 + 1,var_6);
        var_11(1,"   Logical block size=%u bytes\n",var_7);
        lVar5 = (type_2)(var_17 + 1) * (type_2)var_7;
        var_9 = (type_5)lVar5;
        var_12 = (int)((type_2)lVar5 >> 0x20) + var_7 * var_6;
        var_6 = *(int *)((int)&op->total_byte_count + 4);
        var_8 = (type_5)((type_5)op->total_byte_count < var_9);
        var_14 = var_6 - var_12;
        var_23 = var_7;
        if ((var_13(var_6,var_12) != var_13(var_14,var_8)) != (int)(var_14 - var_8) < 0) {
          *(type_5 *)&op->total_byte_count = var_9;
          *(int *)((int)&op->total_byte_count + 4) = var_12;
        }
        goto LAB_00013d47;
      }
    }
    var_18(var_6,0x50,b,op->verbose);
    var_7 = 0xffffffff;
    var_4("READ CAPACITY (%d): %s\n",(-(type_5)(op->do_rcap16 == false) & 0xfffffffa) + 0x10,b);
  }
LAB_00013d47:
  if (var_19 != (uint8_t *)0x0) {
    var_20(var_19);
  }
  if (var_21 != *(int *)(var_1 + 0x14)) {
    var_22();
    var_33 = 0;
    var_27 = var_23;
    if ((int)var_17 < 0) {
      var_27 = -var_23;
      var_33 = 0xffffffff;
      var_17 = -(var_17 + (var_23 != 0));
    }
    if ((int)var_24 < 0) {
      var_25 = var_16 != 0;
      var_16 = -var_16;
      var_33 = ~var_33;
      var_24 = -(var_24 + var_25);
    }
    if (var_24 == 0) {
      if (var_17 < var_16) {
        var_21 = (int)(var_26(var_17,var_27) / (type_2)var_16);
      }
      else {
        if (var_16 == 0) {
          var_16 = 1 / 0;
        }
        var_21 = (int)(((type_2)var_17 % (type_2)var_16 << 0x20 | (type_2)var_27) /
                     (type_2)var_16);
      }
    }
    else if (var_17 < var_24) {
      var_21 = 0;
    }
    else {
      var_7 = 0x1f;
      if (var_24 != 0) {
        for (; var_24 >> var_7 == 0; var_7 = var_7 - 1) {
        }
      }
      if ((var_7 ^ 0x1f) == 0) {
        if ((var_24 < var_17) || (var_21 = 0, var_16 <= var_27)) {
          var_21 = 1;
        }
      }
      else {
        var_28 = (type_4)(var_7 ^ 0x1f);
        var_29 = 0x20 - var_28;
        var_31 = (type_2)(var_16 >> (var_29 & 0x1f) | var_24 << (var_28 & 0x1f));
        var_30 = var_26(var_17 >> (var_29 & 0x1f),
                         var_17 << (var_28 & 0x1f) | var_27 >> (var_29 & 0x1f));
        var_32 = var_30 / var_31;
        var_21 = (int)var_32;
        var_7 = (type_5)(var_30 % var_31);
        lVar5 = (var_32 & 0xffffffff) * (type_2)(var_16 << (var_28 & 0x1f));
        var_8 = (type_5)((type_2)lVar5 >> 0x20);
        if ((var_7 < var_8) ||
           ((var_27 << (var_28 & 0x1f) < (type_5)lVar5 && (var_7 == var_8)))) {
          var_21 = var_21 + -1;
        }
      }
    }
    if (var_33 != 0) {
      var_21 = -var_21;
    }
    return var_21;
  }
  return var_7;
}


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

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

uint __regparm3 MASKED(undefined4 param_1,int param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  byte bVar5;
  uint *puVar6;
  int iVar7;
  byte bVar8;
  undefined4 extraout_ECX;
  uint uVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  int in_GS_OFFSET;
  bool bVar13;
  undefined8 uVar14;
  uint uStackY_b8;
  uint uStackY_b0;
  uint local_88;
  uint local_84;
  uint local_80;
  uint uStack_7c;
  void *local_74;
  undefined1 local_70 [80];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x13c7d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_74 = (void *)0x0;
  uVar14 = sg_memalign(0x20,0,&local_74,0);
  puVar6 = (uint *)uVar14;
  if (puVar6 == (uint *)0x0) {
    uVar12 = 0xffffffff;
    pr2serr("%s: unable to obtain heap\n","print_read_cap",extraout_ECX,extraout_ECX);
  }
  else {
    if (*(char *)(param_2 + 0xd) == '\0') {
      iVar7 = sg_ll_readcap_10(param_1,0,0,puVar6,8,1,*(undefined4 *)(param_2 + 0x3c),
                               (int)((ulonglong)uVar14 >> 0x20));
      if (iVar7 == 0) {
        uVar12 = *puVar6;
        uVar11 = puVar6[1];
        uVar9 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
        uVar12 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18
        ;
        if (uVar9 == 0xffffffff) {
          uVar12 = 0xfffffffe;
          if (*(int *)(param_2 + 0x3c) != 0) {
            puts("Read Capacity (10) response indicates that Read Capacity (16) is required");
          }
        }
        else {
          puts("Read Capacity (10) results:");
          __printf_chk(1,"   Number of logical blocks=%u\n",uVar9 + 1);
          __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);
          lVar4 = (ulonglong)(uVar9 + 1) * (ulonglong)uVar12;
          iVar10 = (int)((ulonglong)lVar4 >> 0x20);
          uVar11 = (uint)(*(uint *)(param_2 + 0x48) < (uint)lVar4);
          iVar7 = *(int *)(param_2 + 0x4c) - iVar10;
          local_88 = uVar9;
          if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=
              (int)(iVar7 - uVar11) < 0) {
            *(longlong *)(param_2 + 0x48) = lVar4;
          }
        }
        goto LAB_00013d47;
      }
    }
    else {
      iVar7 = sg_ll_readcap_16(param_1,0,0,0,puVar6,0x20,1,*(undefined4 *)(param_2 + 0x3c));
      if (iVar7 == 0) {
        uVar12 = *puVar6;
        uVar11 = puVar6[1];
        uVar9 = puVar6[2];
        local_84 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                   uVar11 << 0x18;
        local_80 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                   uVar12 << 0x18;
        uVar12 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
        puts("Read Capacity (16) results:");
        __printf_chk(1,"   Protection: prot_en=%d, p_type=%d, p_i_exponent=%d\n",(byte)puVar6[3] & 1
                     ,(byte)puVar6[3] >> 1 & 7,*(byte *)((int)puVar6 + 0xd) >> 4);
        __printf_chk(1,"   Logical block provisioning: lbpme=%d, lbprz=%d\n",
                     (uint)(int)(char)*(byte *)((int)puVar6 + 0xe) >> 0x1f,
                     *(byte *)((int)puVar6 + 0xe) >> 6 & 1);
        __printf_chk(1,"   Logical blocks per physical block exponent=%d\n",
                     *(byte *)((int)puVar6 + 0xd) & 0xf);
        __printf_chk(1,"   Lowest aligned logical block address=%d\n",
                     (*(ushort *)((int)puVar6 + 0xe) & 0x3f) << 8 |
                     *(ushort *)((int)puVar6 + 0xe) >> 8);
        iVar7 = local_80 + (0xfffffffe < local_84);
        __printf_chk(1,"   Number of logical blocks=%llu\n",local_84 + 1,iVar7);
        __printf_chk(1,"   Logical block size=%u bytes\n",uVar12);
        lVar4 = (ulonglong)(local_84 + 1) * (ulonglong)uVar12;
        uVar9 = (uint)lVar4;
        iVar10 = (int)((ulonglong)lVar4 >> 0x20) + uVar12 * iVar7;
        uVar11 = (uint)(*(uint *)(param_2 + 0x48) < uVar9);
        iVar7 = *(int *)(param_2 + 0x4c) - iVar10;
        local_88 = uVar12;
        if ((SBORROW4(*(int *)(param_2 + 0x4c),iVar10) != SBORROW4(iVar7,uVar11)) !=
            (int)(iVar7 - uVar11) < 0) {
          *(uint *)(param_2 + 0x48) = uVar9;
          *(int *)(param_2 + 0x4c) = iVar10;
        }
        goto LAB_00013d47;
      }
    }
    sg_get_category_sense_str(iVar7,0x50,local_70,*(undefined4 *)(param_2 + 0x3c));
    uVar12 = 0xffffffff;
    pr2serr("READ CAPACITY (%d): %s\n",
            (-(uint)(*(char *)(param_2 + 0xd) == '\0') & 0xfffffffa) + 0x10,local_70);
  }
LAB_00013d47:
  if (local_74 != (void *)0x0) {
    free(local_74);
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
    FUN_00014200();
    uStackY_b0 = 0;
    uStackY_b8 = local_88;
    if ((int)local_84 < 0) {
      uStackY_b8 = -local_88;
      uStackY_b0 = 0xffffffff;
      local_84 = -(local_84 + (local_88 != 0));
    }
    if ((int)uStack_7c < 0) {
      bVar13 = local_80 != 0;
      local_80 = -local_80;
      uStackY_b0 = ~uStackY_b0;
      uStack_7c = -(uStack_7c + bVar13);
    }
    if (uStack_7c == 0) {
      if (local_84 < local_80) {
        uVar12 = (uint)(CONCAT44(local_84,uStackY_b8) / (ulonglong)local_80);
      }
      else {
        if (local_80 == 0) {
          local_80 = 1 / 0;
        }
        uVar12 = (uint)(((ulonglong)local_84 % (ulonglong)local_80 << 0x20 | (ulonglong)uStackY_b8)
                       / (ulonglong)local_80);
      }
    }
    else if (local_84 < uStack_7c) {
      uVar12 = 0;
    }
    else {
      uVar12 = 0x1f;
      if (uStack_7c != 0) {
        for (; uStack_7c >> uVar12 == 0; uVar12 = uVar12 - 1) {
        }
      }
      if ((uVar12 ^ 0x1f) == 0) {
        if ((uStack_7c < local_84) || (uVar12 = 0, local_80 <= uStackY_b8)) {
          uVar12 = 1;
        }
      }
      else {
        bVar5 = (byte)(uVar12 ^ 0x1f);
        bVar8 = 0x20 - bVar5;
        uVar1 = (ulonglong)(local_80 >> (bVar8 & 0x1f) | uStack_7c << (bVar5 & 0x1f));
        uVar2 = CONCAT44(local_84 >> (bVar8 & 0x1f),
                         local_84 << (bVar5 & 0x1f) | uStackY_b8 >> (bVar8 & 0x1f));
        uVar3 = uVar2 / uVar1;
        uVar12 = (uint)uVar3;
        uVar11 = (uint)(uVar2 % uVar1);
        lVar4 = (uVar3 & 0xffffffff) * (ulonglong)(local_80 << (bVar5 & 0x1f));
        uVar9 = (uint)((ulonglong)lVar4 >> 0x20);
        if ((uVar11 < uVar9) || ((uStackY_b8 << (bVar5 & 0x1f) < (uint)lVar4 && (uVar11 == uVar9))))
        {
          uVar12 = uVar12 - 1;
        }
      }
    }
    if (uStackY_b0 != 0) {
      uVar12 = -uVar12;
    }
    return uVar12;
  }
  return uVar12;
}

