MiValidateMdlTracker

NTSTATUS __stdcall MiValidateMdlTracker(PVOID BugCheckParameter3){
  int v1; 
  __int64 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, (PVOID)5, *((PVOID *)BugCheckParameter3 + 3), BugCheckParameter3, (PVOID)(v6 | (v4 << 32)));
  v7 = *((_QWORD *)BugCheckParameter3 + 8);
  v8 = *(_QWORD *)(v2 + 48);
  if( v7 != v8 )
    KeBugCheckEx(0x76u, (PVOID)6, (PVOID)v2, BugCheckParameter3, (PVOID)(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,
        (PVOID)7,
        (PVOID)v2,
        BugCheckParameter3,
        (PVOID)((unsigned int)v10 | (unsigned __int64)(v7 << 32)));
  }
  return v8;
}

Referenced by:

MiFreeMdlTracker
MmUpdateMdlTrackerForMdlSwitch