RtlpFcValidateFeatureConfigurationBuffer

NTSTATUS __stdcall RtlpFcValidateFeatureConfigurationBuffer(UINT64 *a1, UINT64 a2){
  NTSTATUS v3; 
  unsigned int *v4; 
  unsigned int v5; 
  NTSTATUS v6; 
  _DWORD *i; 
  UINT64 pullResult; 

  pullResult = 0i64;
  if( a1 )
  {
    if( a2 >= 4
      && ((unsigned __int8)a1 & 3) == 0
      && RtlULongLongMult(*(unsigned int *)a1, 0xCui64, &pullResult) >= 0
      && pullResult + 4 >= pullResult
      && pullResult + 4 <= a2 )
    {
      v5 = *v4;
      v6 = v3;
      if( !*v4 )
        return v3;
      for( i = v4 + 1;
            (!v6 || (int)RtlFcpCompareFeatureToFeature(&v4[2 * (v6 - 1) + 1 + v6 - 1], i) < 0) && (i[1] & 0x30) != 48;
            i += 3 )
      {
        if( ++v6 >= v5 )
          return v3;
      }
    }
    return -1073741811;
  }
  return a2 != 0 ? 0xC000000D : 0;
}

Referenced by:

CmFcManagerUpdateFeatureConfigurations