CmpMigrateOOBELanguageToInstallationLanguage
__int64 __fastcall CmpMigrateOOBELanguageToInstallationLanguage(__int64 a1, __int64 a2, __int64 a3, INT64 a4){
NTSTATUS v5;
unsigned __int16 v6;
__int64 i;
__int16 v8;
unsigned __int16 v9;
VOID *Data;
INT64 DataSize;
UINT64 DataSizea;
VOID *KeyHandle;
_OBJECT_ATTRIBUTES ObjectAttributes;
__int64 v15;
*(&ObjectAttributes.Length + 1) = 0;
*(&ObjectAttributes.Attributes + 1) = 0;
KeyHandle = 0i64;
v15 = 0i64;
if( !CmInstallUILanguageFallbackToOOBm )
return 0i64;
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.ObjectName = (_UNICODE_STRING *)&CmpCurrentControlSetControlNlsLanguagePathString;
ObjectAttributes.Attributes = 576;
ObjectAttributes.Length = 48;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
v5 = ZwOpenKey(
&KeyHandle,
0xF003Fui64,
&ObjectAttributes,
a4,
(INT64)Data,
DataSize,
(INT64)KeyHandle,
*(INT64 *)&ObjectAttributes.Length);
if( v5 >= 0 )
{
v6 = PsInstallUILanguageId;
for( i = 3i64; i >= 0; --i )
{
v8 = 55;
v9 = v6 & 0xF;
if( v9 <= 9u )
v8 = 48;
v6 >>= 4;
*((_WORD *)&v15 + i) = v9 + v8;
}
LODWORD(DataSizea) = 8;
v5 = ZwSetValueKey(KeyHandle, (_UNICODE_STRING *)&CmpInstallLanguageString, 0i64, 1ui64, &v15, DataSizea);
if( v5 >= 0 )
v5 = 0;
}
if( KeyHandle )
ZwClose((_HANDLE)KeyHandle);
return(unsigned int)v5;
}Referenced by:
CmInitSystem1