MiSessionUnlinkProcess

INT64 __fastcall MiSessionUnlinkProcess(INT64 a1, INT64 a2){
  _QWORD *v3; 
  __int64 v4; 
  _QWORD *v5; 
  INT64 result; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock(&WorkerRoutine, &LockHandle);
  v3 = (_QWORD *)(a2 + 1184);
  v4 = *v3;
  v5 = (_QWORD *)v3[1];
  if( *(_QWORD **)(*v3 + 8i64) != v3 || (_QWORD *)*v5 != v3 )
    __fastfail(3u);
  *v5 = v4;
  *(_QWORD *)(v4 + 8) = v5;
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(LockHandle.OldIrql);
  return result;
}

Referenced by:

MiDereferenceSessionFinal