wil_details_PopulateInitialConfiguredFeatureStatesFromBuffers

NTSTATUS __stdcall wil_details_PopulateInitialConfiguredFeatureStatesFromBuffers(INT64 *a1){
  NTSTATUS v2; 
  INT64 *i; 
  INT64 v4; 
  INT64 v5; 
  unsigned int FeatureConfigurationFromBuffers; 
  NTSTATUS v7; 
  INT64 *v8; 
  __int64 v9; 
  INT64 v11; 
  int v12; 
  INT64 v13[3]; 
  INT64 v14[3]; 
  __int64 v15; 

  v2 = 0;
  for( i = (INT64 *)&wil_details_featureDescriptors_a; ; i = v8 + 4 )
  {
    v8 = wil_details_FeatureDescriptors_SkipPadding(i);
    if( !v8 )
      break;
    v15 = 0i64;
    v11 = 0i64;
    v12 = 0;
    if( *((_BYTE *)v8 + 21) || *((_BYTE *)v8 + 22) )
    {
      FeatureConfigurationFromBuffers = -1073741275;
    }
    else
    {
      v14[0] = 0i64;
      v4 = *a1;
      v5 = *((unsigned int *)v8 + 4);
      v13[0] = 0i64;
      v14[1] = v4;
      v14[2] = a1[1];
      v13[1] = a1[2];
      v13[2] = a1[3];
      FeatureConfigurationFromBuffers = RtlpFcQueryFeatureConfigurationFromBuffers(
                                          v5,
                                          (INT64)v14,
                                          (INT64)v13,
                                          (INT64)&v11);
    }
    if( FeatureConfigurationFromBuffers == -2147483614 )
    {
      v15 = 131i64;
      v9 = 131i64;
      do
      {
        *(_QWORD *)*v8 = v9;
        v8 = wil_details_FeatureDescriptors_SkipPadding(v8 + 4);
      }
      while( v8 );
      return v2;
    }
    v7 = wil_details_BuildFeatureStateCacheFromQueryResults(FeatureConfigurationFromBuffers, (__int64)&v11, &v15);
    if( v7 )
      v2 = v7;
    *(_QWORD *)*v8 = v15;
  }
  return v2;
}

Referenced by:

wil_InitializeFeatureStagingFromBuffers