RtlCmDecodeMemIoResource

UINT64 __stdcall RtlCmDecodeMemIoResource(_CM_PARTIAL_RESOURCE_DESCRIPTOR *Descriptor, UINT64 *Start){
  UINT64 v2; 
  __int16 v4; 
  v2 = 0i64;
  if( ((*(_BYTE *)Descriptor - 1) & 0xFD) != 0 )
  {
    v4 = *((_WORD *)Descriptor + 1);
    if( (v4 & 0x200) != 0 )
    {
      v2 = (unsigned __int64)*((unsigned int *)Descriptor + 3) << 8;
    }
    else if( (v4 & 0x400) != 0 )
    {
      v2 = (unsigned __int64)*((unsigned int *)Descriptor + 3) << 16;
    }
    else if( (v4 & 0x800) != 0 )
    {
      v2 = (unsigned __int64)*((unsigned int *)Descriptor + 3) << 32;
    }
  }
  else
  {
    v2 = *((unsigned int *)Descriptor + 3);
  }
  if( Start )
    *Start = *(_QWORD *)((char *)Descriptor + 4);
  return v2;
}

Referenced by:

IopGenericUnpackResource
PnpCmResourcesToIoResources
PnpFilterResourceRequirementsList
PnpIsRangeWithin
PnprAddMemoryResources