RtlpMuiRegGetInstalledLangInfoIndex
NTSTATUS __stdcall RtlpMuiRegGetInstalledLangInfoIndex(
_MUILANGUAGES *Languages,
INT64 LangType,
INT64 LangSpec,
INT16 *ResultIndexRtrn){
int v5;
INT16 v6;
__int64 v7;
int v8;
__int64 v9;
int v11;
__int64 v12;
__int64 v13;
if( Languages && (_DWORD)LangType )
{
switch( (_DWORD)LangType )
{
case 1:
if( (_WORD)LangSpec )
{
v5 = *((unsigned __int16 *)Languages + 3);
v6 = 0;
if( *((_WORD *)Languages + 3) )
{
v7 = *((_QWORD *)Languages + 2);
v8 = (__int16)LangSpec;
while( 1 )
{
v9 = 28i64 * v6;
if( *(unsigned __int16 *)(v9 + v7 + 4) == v8 && (*(_WORD *)(v9 + v7) & 0x1020) == 32 )
break;
if( ++v6 >= v5 )
return -1073741823;
}
LABEL_19:
if( ResultIndexRtrn )
*ResultIndexRtrn = v6;
return 0;
}
return -1073741823;
}
break;
case 3:
if( (LangSpec & 0x8000u) == 0i64 )
{
v11 = *((unsigned __int16 *)Languages + 3);
v6 = 0;
if( *((_WORD *)Languages + 3) )
{
v12 = *((_QWORD *)Languages + 2);
while( 1 )
{
v13 = 28i64 * v6;
if( *(_WORD *)(v13 + v12 + 6) == (_WORD)LangSpec && (*(_WORD *)(v13 + v12) & 0x1020) == 32 )
break;
if( ++v6 >= v11 )
return -1073741823;
}
goto LABEL_19;
}
return -1073741823;
}
break;
case 2:
if( (LangSpec & 0x8000u) == 0i64 && (__int16)LangSpec < (int)*((unsigned __int16 *)Languages + 3) )
{
if( (*(_WORD *)(28i64 * (__int16)LangSpec + *((_QWORD *)Languages + 2)) & 0x1020) == 32 )
{
if( ResultIndexRtrn )
*ResultIndexRtrn = LangSpec;
return 0;
}
return -1073741823;
}
break;
default:
return -1073741823;
}
}
return -1073741811;
}Referenced by:
RtlpMuiRegValidateLIPLanguage
RtlpMuiRegValidatePartialLanguage