MmManagePartitionGetMemoryEvents

INT64 __fastcall MmManagePartitionGetMemoryEvents(PVOID **a1, INT64 a2, KPROCESSOR_MODE AccessMode){
  PVOID *v3; 
  ULONG v6; 
  void **Handle; 
  PVOID *v8; 
  PVOID *v9; 
  NTSTATUS v10; 
  v3 = *a1;
  if( *(_DWORD *)a2 != 1 )
    return 3221225485i64;
  v6 = *(_DWORD *)(a2 + 4);
  if( (v6 & (AccessMode != 0 ? 7666 : 73714)) != v6 )
    return 3221225485i64;
  Handle = (void **)(a2 + 16);
  *(_QWORD *)(a2 + 16) = 0i64;
  v8 = (PVOID *)(a2 + 24);
  *(_QWORD *)(a2 + 24) = 0i64;
  v9 = (PVOID *)(a2 + 32);
  *(_QWORD *)(a2 + 32) = 0i64;
  v10 = ObOpenObjectByPointer(
          v3[37],
          v6,
          0i64,
          *(_DWORD *)(a2 + 8),
          (POBJECT_TYPE)ExEventObjectType,
          AccessMode,
          Handle);
  if( v10 < 0
    || (v10 = ObOpenObjectByPointer(
                v3[38],
                *(_DWORD *)(a2 + 4),
                0i64,
                *(_DWORD *)(a2 + 8),
                (POBJECT_TYPE)ExEventObjectType,
                AccessMode,
                (PHANDLE)(a2 + 24)),
        v10 < 0)
    || (v10 = ObOpenObjectByPointer(
                v3[39],
                *(_DWORD *)(a2 + 4),
                0i64,
                *(_DWORD *)(a2 + 8),
                (POBJECT_TYPE)ExEventObjectType,
                AccessMode,
                (PHANDLE)(a2 + 32)),
        v10 < 0) )
  {
    if( *Handle )
      ObCloseHandle(*Handle, AccessMode);
    if( *v8 )
      ObCloseHandle(*v8, AccessMode);
    if( *v9 )
      ObCloseHandle(*v9, AccessMode);
  }
  return(unsigned int)v10;
}

Referenced by:

NtManagePartition