MiValidateMdlTracker

NTSTATUS __stdcall MiValidateMdlTracker(PVOID BugCheckParameter3){
  int v1; 
  ULONG_PTR v2; 
  int v3; 
  __int64 v4; 
  unsigned __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  __int64 v10; 
  v2 = *((_QWORD *)BugCheckParameter3 + 3);
  v3 = v1;
  v4 = *((_QWORD *)BugCheckParameter3 + 5);
  v6 = (((*(_DWORD *)(v2 + 32) + *(_DWORD *)(v2 + 44)) & 0xFFF) + (unsigned __int64)*(unsigned int *)(v2 + 40) + 4095) >> 12;
  if( v4 != v6 )
    KeBugCheckEx(0x76u, 5ui64, *((_QWORD *)BugCheckParameter3 + 3), (ULONG_PTR)BugCheckParameter3, v6 | (v4 << 32));
  v7 = *((_QWORD *)BugCheckParameter3 + 8);
  v8 = *(_QWORD *)(v2 + 48);
  if( v7 != v8 )
    KeBugCheckEx(0x76u, 6ui64, v2, (ULONG_PTR)BugCheckParameter3, v8 | (v7 << 32));
  if( v3 )
  {
    v10 = 0i64;
    MetroHash64::Hash((const unsigned __int8 *)(v2 + 48), 8 * v6, (unsigned __int8 *const)&v10);
    LODWORD(v8) = v10;
    if( *((_DWORD *)BugCheckParameter3 + 15) != (_DWORD)v10 )
      KeBugCheckEx(0x76u, 7ui64, v2, (ULONG_PTR)BugCheckParameter3, (unsigned int)v10 | (unsigned __int64)(v7 << 32));
  }
  return v8;
}

Referenced by:

MiFreeMdlTracker
MmUpdateMdlTrackerForMdlSwitch