RtlpLoadLanguageConfigList
__int64 __fastcall RtlpLoadLanguageConfigList(int a1, void **a2, __int64 a3){
void *v5;
UINT64 v6;
WCHAR v7;
UINT64 v8;
int v9;
int v10;
void *v12;
CHAR *LanguageConfigList;
struct _UNICODE_STRING DestinationString;
int v15;
__int16 v16;
HANDLE Handle;
v15 = a1;
LOBYTE(v15) = 0;
v16 = 0;
Handle = 0i64;
v5 = 0i64;
DestinationString = 0i64;
if( a2 && a3 )
{
v5 = *a2;
RtlInitUnicodeString(&DestinationString, L"\\Registry\\Machine\\Software\\Policies\\Microsoft\\MUI\\Settings", a3);
if( (int)LdrpOpenKey(&DestinationString, 0i64, v6, &Handle) >= 0 )
{
v10 = RtlpLoadPolicyLanguageSpec(Handle, a3, (BYTE *)&v15, &v16);
if( v10 >= 0 )
goto LABEL_6;
NtClose(Handle);
Handle = 0i64;
}
RtlInitUnicodeString(
&DestinationString,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\MUI\\Settings\\LanguageConfiguration",
v7);
v9 = LdrpOpenKey(&DestinationString, 0i64, v8, &Handle);
v10 = v9;
if( v9 < 0 )
{
if( v9 == -1073741772 )
v10 = 0;
}
else
{
v10 = RtlpPopulateLanguageConfigList(Handle, (CHAR **)a2, a3);
}
}
else
{
v10 = -1073741811;
}
LABEL_6:
if( Handle )
NtClose(Handle);
if( v10 < 0 )
{
if( a2 )
{
v12 = *a2;
if( *a2 != v5 )
{
if( v12 )
ExFreePoolWithTag(v12, 0);
goto LABEL_22;
}
}
}
else if( !*a2 )
{
LanguageConfigList = RtlpMuiRegCreateLanguageConfigList(1ui64);
*a2 = LanguageConfigList;
if( !LanguageConfigList )
{
v10 = -1073741801;
LABEL_22:
*a2 = v5;
}
}
return(unsigned int)v10;
}Referenced by:
RtlpMuiRegLoadRegistryInfo