MmCreateMirror

NTSTATUS __stdcall MmCreateMirror(){
  char PreviousMode; 
  _UNICODE_STRING ValueName; 
  _MM_MIRROR_DISPATCH MirrorDispatch[2]; 
  __int64(__fastcall *v4)(); 
  __int64(__fastcall *v5)(); 
  unsigned __int64 v6; 
  int v7; 
  int v8; 
  int Data; 
  UINT64 ResultDataSize; 
  UINT64 Type; 

  v8 = 0;
  LODWORD(Type) = 0;
  Data = 0;
  ValueName.Buffer = L"Kernel-MemoryMirroringSupported";
  *(_QWORD *)&ValueName.Length = 4194366i64;
  LODWORD(ResultDataSize) = 4;
  if( ZwQueryLicenseValue(&ValueName, &Type, &Data, 4ui64, &ResultDataSize) < 0 || Data != 1 )
    return -1073741206;
  PreviousMode = KeGetCurrentThread()->PreviousMode;
  if( PreviousMode && !SeSinglePrivilegeCheck(*(_QWORD *)&SeShutdownPrivilege, PreviousMode) )
    return -1073741727;
  if( (dword_140CFA184 & 1) == 0 )
    return -1073741637;
  *(__int64(__fastcall **)())MirrorDispatch = off_140C00AE0[0];
  v4 = off_140C00AE8[0];
  v5 = off_140C00AF0[0];
  v6 = (unsigned __int64)off_140C00B00 & -(__int64)((dword_140CFA184 & 2) != 0);
  v7 = 2;
  return MmDuplicateMemory(MirrorDispatch);
}

Referenced by:

NtSetSystemInformation