RtlpMuiRegGetOrAddLangInfo
__int64 __fastcall RtlpMuiRegGetOrAddLangInfo(__int64 *a1, __int64 a2, __int16 *a3){
__int64 v6;
__int16 LangInfoIndex;
int v8;
unsigned int v9;
__int64 v10;
__int64 v11;
INT64 v13;
if( !a1 )
return 3221225485i64;
v6 = *a1;
if( !*a1 || !a2 || !*(_WORD *)(a2 + 4) && *(__int16 *)(a2 + 6) < 0 )
return 3221225485i64;
LangInfoIndex = RtlpMuiRegGetLangInfoIndex(*a1, (CHAR *)a2);
if( LangInfoIndex < 0 )
{
v8 = *(unsigned __int16 *)(v6 + 6);
v9 = *(unsigned __int16 *)(v6 + 4);
if( (unsigned __int16)v8 >= (unsigned __int16)v9 )
{
v13 = (unsigned int)(v8 + 4);
if( (unsigned int)v13 >= v9 )
v6 = (__int64)RtlpMuiRegResizeLanguages((UINT16 *)v6, v13);
if( !v6 )
return 3221225495i64;
*a1 = v6;
}
LangInfoIndex = *(_WORD *)(v6 + 6);
v10 = *(_QWORD *)(v6 + 16);
v11 = 28i64 * LangInfoIndex;
*(_WORD *)(v6 + 6) = LangInfoIndex + 1;
*(_OWORD *)(v11 + v10) = *(_OWORD *)a2;
*(_QWORD *)(v11 + v10 + 16) = *(_QWORD *)(a2 + 16);
*(_DWORD *)(v11 + v10 + 24) = *(_DWORD *)(a2 + 24);
}
if( a3 )
*a3 = LangInfoIndex;
return 0i64;
}Referenced by:
RtlpMuiRegAddBaseLanguage
RtlpMuiRegAddLanguageByName
RtlpMuiRegValidateInstalled