/* Get Sign, NaturalUnits, and ConstantUnits of the DWORD data. */
BOOLEAN EdbGetNaturalIndex32(IN UINT32 Data32, OUT UINTN *NaturalUnits, OUT UINTN *ConstantUnits)
/* Get Sign, NaturalUnits, and ConstantUnits of the DWORD data. */
BOOLEAN EdbGetNaturalIndex32(IN UINT32 Data32, OUT UINTN *NaturalUnits, OUT UINTN *ConstantUnits)
{
  BOOLEAN  Sign;
  UINTN    NaturalUnitBit;
  Sign            = (BOOLEAN)(Data32 >> 31);
  NaturalUnitBit  = (UINTN)((Data32 >> 28) & 0x7);
  NaturalUnitBit *= 4;
  Data32          = Data32 & 0xFFFFFFF;
  *NaturalUnits   = (UINTN)(Data32 & ((1 << NaturalUnitBit) - 1));
  *ConstantUnits  = (UINTN)((Data32 >> NaturalUnitBit) & ((1 << (28 - NaturalUnitBit)) - 1));
  return Sign;
}