RtlpMuiRegValidatePartialLanguage
__int64 __fastcall RtlpMuiRegValidatePartialLanguage(__int64 a1, int a2){
__int64 v3;
int v4;
char v5;
_WORD *v6;
int v7;
INT16 *v8;
unsigned __int16 v9;
unsigned __int8 v10;
INT64 v11;
__int64 v12;
INT16 v13;
INT16 ResultIndexRtrn;
v3 = a1;
v4 = 0;
v5 = 0;
v6 = (_WORD *)(*(_QWORD *)(*(_QWORD *)(a1 + 24) + 16i64) + 28i64 * a2);
v7 = 0;
v8 = v6 + 6;
do
{
v9 = v6[4];
v10 = (v9 >> (2 * v5)) & 3;
if( v10 )
{
v11 = (unsigned int)*v8;
if( v10 == 2 )
{
if( (_DWORD)v11 == a2 )
v6[4] = v9 & ~(3 << v7);
else
++v4;
}
else
{
v12 = *(_QWORD *)(v3 + 24);
ResultIndexRtrn = -1;
if( RtlpMuiRegGetInstalledLangInfoIndex((_MUILANGUAGES *)v12, v10, v11, &ResultIndexRtrn) < 0 )
{
++v4;
}
else
{
v13 = ResultIndexRtrn;
if( ResultIndexRtrn >= 0 && ResultIndexRtrn < (int)*(unsigned __int16 *)(v12 + 6) && ResultIndexRtrn != a2 )
{
++v4;
if( (*(_BYTE *)(28i64 * ResultIndexRtrn + *(_QWORD *)(v12 + 16)) & 1) != 0 )
{
v6[4] = (2 << v7) | v9 & ~(3 << v7);
*v8 = v13;
}
}
}
v3 = a1;
}
}
++v5;
++v8;
v7 += 2;
}
while( v7 < 8 );
if( v4 >= 1 )
return 0i64;
*v6 |= 0x1000u;
return 3221225473i64;
}Referenced by:
RtlpMuiRegValidateInstalled