RtlpMuiRegValidateConfigNode
INT64 __fastcall RtlpMuiRegValidateConfigNode(UINT64 a1, INT64 a2){
unsigned int v3;
INT16 v5;
int InstalledLanguageIndex;
__int64 v7;
__int16 v8;
__int16 v9;
unsigned __int8 v10;
__int16 v11;
__int16 v12;
__int16 v13;
char v14;
unsigned __int16 v15;
__int64 v17[11];
__int16 v19;
unsigned __int16 v20;
__int16 i;
v3 = *(unsigned __int16 *)(a2 + 2);
v19 = 0;
v5 = *(_WORD *)a2;
v20 = -1;
InstalledLanguageIndex = RtlpMuiRegGetInstalledLanguageIndex(a1, v3 >> 14, v5, &v19);
if( InstalledLanguageIndex >= 0 )
{
v7 = *(_QWORD *)(*(_QWORD *)(a1 + 24) + 16i64) + 28i64 * v19;
if( (*(_WORD *)v7 & 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 = (*(_WORD *)(v7 + 8) >> v12) & 3;
v17[0] = 0i64;
if( RtlpMuiRegConfigMatchesInstalled(a1, v10, v13, v14, *(_WORD *)(v7 + 2i64 * v11 + 12), v17, &v20) )
{
if( (!v17[0] || (*(_WORD *)v17[0] & 0x1000) == 0) && ((*(_BYTE *)v7 & 4) == 0 || v17[0]) )
break;
}
++v11;
v12 += 2;
if( v12 >= 8 )
return(unsigned int)-1073741772;
}
v15 = v20;
v7 = v17[0];
if( v20 != 0xFFFF )
{
*(_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