wil_details_EvaluateFeatureDependencies

INT64 *__stdcall wil_details_EvaluateFeatureDependencies(){
  INT64 *v0; 
  int v1; 
  int v2; 
  _BOOL8 v3; 
  INT64 *i; 
  INT64 *result; 
  INT64 *v6; 

  v0 = wil_details_FeatureDescriptors_SkipPadding((INT64 *)&wil_details_featureDescriptors_a);
  if( v0 )
  {
    v1 = 0;
    do
    {
      v2 = *(_DWORD *)*v0;
      if( (v2 & 0x80u) != 0 )
      {
        if( (v2 & 0x60) != 0 )
          LODWORD(v3) = (*(_DWORD *)*v0 & 0x60) == 64;
        else
          v3 = *((_BYTE *)v0 + 23) != 0;
        _InterlockedXor((volatile signed __int32 *)*v0, v1 & 0xFFFFFFEF | (16 * v3) ^ *(_DWORD *)*v0 & 0x10);
      }
      v0 = wil_details_FeatureDescriptors_SkipPadding(v0 + 4);
    }
    while( v0 );
  }
  for( i = (INT64 *)&wil_details_featureDescriptors_a; ; i = v6 + 4 )
  {
    result = wil_details_FeatureDescriptors_SkipPadding(i);
    v6 = result;
    if( !result )
      break;
    wil_details_EvaluateFeatureDependencies_GetCachedFeatureEnabledState((INT32 *)*result, (INT64)result);
  }
  return result;
}

Referenced by:

wil_InitializeFeatureStagingFromBuffers
wil_details_OnFeatureConfigurationChange