MmUpdateMdlTracker

UINT64 __stdcall MmUpdateMdlTracker(MDL *MemoryDescriptorList, PVOID CallingAddress, PVOID CallersCaller){
  _QWORD *Process; 
  __int64 *i; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  Process = MemoryDescriptorList->Process;
  LockHandle.LockQueue = 0i64;
  if( !Process )
    Process = PsInitialSystemProcess;
  *(_QWORD *)&LockHandle.OldIrql = 0i64;
  i = (__int64 *)Process[193];
  if( !i )
    return 0i64;
  KeAcquireInStackQueuedSpinLock((UINT64 *)i + 3, &LockHandle);
LABEL_5:
  for( i = (__int64 *)*i; i; i = (__int64 *)i[1] )
  {
    if( (unsigned __int64)MemoryDescriptorList < i[3] )
      goto LABEL_5;
    if( (unsigned __int64)MemoryDescriptorList <= i[3] )
    {
      if( CallingAddress || CallersCaller )
      {
        i[9] = (__int64)CallingAddress;
        i[10] = (__int64)CallersCaller;
        *(_OWORD *)(i + 11) = 0i64;
        *(_OWORD *)(i + 13) = 0i64;
        *(_OWORD *)(i + 15) = 0i64;
      }
      break;
    }
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  return i != 0;
}

Referenced by:

IopProbeAndLockPages
IopProbeAndLockPages_0
IopProbeAndLockPages_1
IopProbeAndLockPages_2
NtWriteFile
NtWriteFileGather