MiStartingOffsetNeedLock

unsigned __int64 __fastcall MiStartingOffsetNeedLock(unsigned __int64 *a1, unsigned int a2){
  unsigned __int64 v2; 
  KIRQL v5; 
  volatile LONG *v6; 
  unsigned __int64 v7; 
  v2 = *a1;
  if( (*(_DWORD *)(*a1 + 56) & 0x20) != 0 || !*(_QWORD *)(v2 + 64) )
  {
    v5 = 17;
    v6 = (volatile LONG *)(v2 + 72);
  }
  else
  {
    v6 = (volatile LONG *)(v2 + 72);
    v5 = ExAcquireSpinLockShared((PEX_SPIN_LOCK)(v2 + 72));
  }
  v7 = MiStartingOffset((__int64)a1, a1[1], a2);
  if( v5 != 17 )
  {
    ExReleaseSpinLockSharedFromDpcLevel(v6);
    __writecr8(v5);
  }
  return v7;
}

Referenced by:

MiPfPrepareReadList