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