KeCommitSmtState

NTSTATUS __stdcall KeCommitSmtState(){
  INT64 v0; 
  NTSTATUS result; 
  int v2; 
  INT64 Length; 
  UINT64 Lengtha; 
  UINT64 *ResultLength; 
  UINT64 *ResultLengtha; 
  INT64 Data; 
  VOID *KeyHandle; 
  UINT64 v9; 
  _UNICODE_STRING ValueName; 
  __int64 v11[2]; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  __int128 KeyValueInformation; 
  int v14; 

  *(&ObjectAttributes.Length + 1) = 0;
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  LODWORD(v9) = 0;
  LODWORD(Data) = 0;
  ObjectAttributes.RootDirectory = 0i64;
  v14 = 0;
  v11[1] = (__int64)L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management";
  ValueName.Buffer = L"FeatureSettings";
  ObjectAttributes.ObjectName = (_UNICODE_STRING *)v11;
  KeyValueInformation = 0i64;
  v11[0] = 11141288i64;
  *(_QWORD *)&ValueName.Length = 2097182i64;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 576;
  result = ZwOpenKey(&KeyHandle, 0x2001Fui64, &ObjectAttributes, v0, Length, (INT64)ResultLength, Data, 0i64);
  if( result < 0 )
    goto LABEL_7;
  LODWORD(Lengtha) = 20;
  result = ZwQueryValueKey(KeyHandle, &ValueName, KeyValuePartialInformation, &KeyValueInformation, Lengtha, &v9);
  if( result == -1073741772 )
  {
    v2 = 0;
  }
  else
  {
    if( result < 0 || *(_QWORD *)((char *)&KeyValueInformation + 4) != 0x400000004i64 )
      goto LABEL_7;
    v2 = HIDWORD(KeyValueInformation);
  }
  LODWORD(ResultLengtha) = 4;
  LODWORD(Data) = v2 ^ (v2 ^ KiFeatureSettings) & 0x1C0000;
  result = ZwSetValueKey(KeyHandle, &ValueName, 0i64, 4ui64, &Data, (UINT64)ResultLengtha);
LABEL_7:
  if( KeyHandle )
    return ZwClose((_HANDLE)KeyHandle);
  return result;
}

Referenced by:

CmpAcceptBoot