RtlpMuiRegValidateConfigNode

__int64 __fastcall RtlpMuiRegValidateConfigNode(__int64 a1, __int64 a2){
  unsigned int v3; 
  INT16 v5; 
  NTSTATUS InstalledLanguageIndex; 
  _MUILANGINFO *v7; 
  __int16 v8; 
  __int16 v9; 
  UINT8 v10; 
  __int16 v11; 
  __int16 v12; 
  INT16 v13; 
  UINT8 v14; 
  INT16 v15; 
  _MUILANGINFO *ValidMatchRtrn; 
  INT16 v19; 
  INT16 OutResultIndex; 
  INT16 i; 

  v3 = *(unsigned __int16 *)(a2 + 2);
  v19 = 0;
  v5 = *(_WORD *)a2;
  OutResultIndex = -1;
  InstalledLanguageIndex = RtlpMuiRegGetInstalledLanguageIndex((_MUIREGISTRYINFO *)a1, v3 >> 14, v5, &v19);
  if( InstalledLanguageIndex >= 0 )
  {
    v7 = (_MUILANGINFO *)(*(_QWORD *)(*(_QWORD *)(a1 + 24) + 16i64) + 28i64 * v19);
    if( (v7->Flags & 0x1000) != 0 )
    {
      return(unsigned int)-1073741772;
    }
    else
    {
      v8 = 0;
      v9 = 0;
      while( 1 )
      {
        v10 = (*(_WORD *)(a2 + 2) >> v9) & 3;
        if( !v10 )
          break;
        if( !v7 )
          return(unsigned int)-1073741772;
        v11 = 0;
        v12 = 0;
        v13 = *(_WORD *)(a2 + 2i64 * v8 + 6);
        for( i = v13; ; v13 = i )
        {
          v14 = (v7->FallbackTypes >> v12) & 3;
          ValidMatchRtrn = 0i64;
          if( RtlpMuiRegConfigMatchesInstalled(
                 (_MUIREGISTRYINFO *)a1,
                 v10,
                 v13,
                 v14,
                 v7->FallbackSpecs[v11],
                 &ValidMatchRtrn,
                 &OutResultIndex) )
          {
            if( (!ValidMatchRtrn || (ValidMatchRtrn->Flags & 0x1000) == 0) && ((v7->Flags & 4) == 0 || ValidMatchRtrn) )
              break;
          }
          ++v11;
          v12 += 2;
          if( v12 >= 8 )
            return(unsigned int)-1073741772;
        }
        v15 = OutResultIndex;
        v7 = ValidMatchRtrn;
        if( OutResultIndex != -1 )
        {
          *(_WORD *)(a2 + 2) = (2 << (2 * v8)) | *(_WORD *)(a2 + 2) & ~(3 << (2 * v8));
          *(_WORD *)(a2 + 2i64 * v8 + 6) = v15;
        }
        ++v8;
        v9 += 2;
        if( v9 >= 6 )
          return(unsigned int)InstalledLanguageIndex;
      }
      if( !v8 )
        return(unsigned int)-1073741823;
    }
  }
  return(unsigned int)InstalledLanguageIndex;
}

Referenced by:

RtlpPopulateLanguageConfigList