PnpIsRangeWithin

UINT64 __stdcall PnpIsRangeWithin(_CM_PARTIAL_RESOURCE_DESCRIPTOR *Inner, _CM_PARTIAL_RESOURCE_DESCRIPTOR *Outer){
  unsigned int v2; 
  unsigned __int64 v5; 
  UINT64 v6; 
  unsigned __int64 v7; 
  UINT64 v8; 
  UINT64 v10; 
  UINT64 v11; 
  unsigned __int64 Start; 
  UINT64 v13; 
  v2 = 0;
  Start = 0i64;
  v13 = 0i64;
  switch( *(_BYTE *)Inner )
  {
    case 1:
      goto LABEL_13;
    case 2:
      v5 = *((unsigned int *)Inner + 2);
      v6 = *((unsigned int *)Outer + 2);
LABEL_4:
      v7 = v5;
      v8 = v6;
LABEL_5:
      if( v5 > v6 || v7 < v8 )
        return v2;
      break;
    case 3:
      goto LABEL_13;
    case 4:
      v5 = *((unsigned int *)Inner + 1);
      v6 = *((unsigned int *)Outer + 1);
      goto LABEL_4;
    case 6:
      v7 = *((unsigned int *)Inner + 1);
      v5 = (unsigned int)(v7 + *((_DWORD *)Inner + 2) - 1);
      v8 = *((unsigned int *)Outer + 1);
      v6 = (unsigned int)(v8 + *((_DWORD *)Outer + 2) - 1);
      goto LABEL_5;
    case 7:
LABEL_13:
      v10 = RtlCmDecodeMemIoResource(Inner, &Start);
      v7 = Start;
      v5 = v10 + Start - 1;
      v11 = RtlCmDecodeMemIoResource(Outer, &v13);
      v8 = v13;
      v6 = v13 + v11 - 1;
      goto LABEL_5;
  }
  if( *((_BYTE *)Inner + 1) == *((_BYTE *)Outer + 1) && *((_WORD *)Inner + 1) == *((_WORD *)Outer + 1) )
    return 1;
  return v2;
}

Referenced by:

PnpNeedToReleaseBootResources