PspReferenceSystemDll

UINT64 __fastcall PspReferenceSystemDll(__int64 a1){
  UINT64 v2; 
  _ETHREAD *CurrentThread; 
  v2 = (UINT64)ObFastReferenceObject((INT64 *)a1);
  if( !v2 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 242);
    ExAcquirePushLockSharedEx(a1 + 8, 0i64);
    v2 = ObFastReferenceObjectLocked((_EX_FAST_REF *)a1);
    if( _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 8), 0i64, 17i64) != 17 )
      ExfReleasePushLockShared((INT64 *)(a1 + 8));
    KeAbPostRelease((PVOID)(a1 + 8));
    KeLeaveCriticalRegionThread((__int64)CurrentThread);
  }
  return v2;
}

Referenced by:

DbgkCreateThread
MmInitSystemDll
PspGetSystemDllSecureHandle
PspMapSystemDll