PfCheckDeprioritizeImage

UINT64 __stdcall PfCheckDeprioritizeImage(UINT64 ImagePathHash){
  __int64 v1; 
  _ETHREAD *CurrentThread; 
  __int64 v3; 
  unsigned __int64 v4; 
  __int64 v5; 
  _BOOL8 v6; 
  __int64 v8; 
  v1 = (unsigned int)ImagePathHash;
  if( !(_DWORD)ImagePathHash )
    return 0i64;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockSharedEx((UINT64)&qword_140C50110, 0i64);
  if( (_DWORD)qword_140C50104 )
  {
    v3 = 0i64;
    v4 = (37
        * (BYTE6(v1)
         + 37
         * (BYTE5(v1)
          + 37
          * (BYTE4(v1) + 37 * (BYTE3(v1) + 37 * (BYTE2(v1) + 37 * (BYTE1(v1) + 37 * ((unsigned __int8)v1 + 11623883)))))))
        + HIBYTE(v1)) & (unsigned int)(qword_140C50104 - 1);
    v5 = *(_QWORD *)((v4 << dword_140C50100) + qword_140C500F8);
    if( v5 )
    {
      v8 = *(_QWORD *)(((unsigned __int64)((37
                                          * (BYTE6(v1)
                                           + 37
                                           * (BYTE5(v1)
                                            + 37
                                            * (BYTE4(v1)
                                             + 37
                                             * (BYTE3(v1)
                                              + 37
                                              * (BYTE2(v1) + 37 * (BYTE1(v1) + 37 * ((unsigned __int8)v1 + 11623883)))))))
                                          + HIBYTE(v1)) & (unsigned int)(qword_140C50104 - 1)) << dword_140C50100)
                     + qword_140C500F8);
      do
      {
        v5 = v8;
        if( v8 == (unsigned int)v1 )
          break;
        if( !v3 )
        {
          v3 = 2654435761i64 * (unsigned int)v1 + 1;
          if( ((-79 * (_BYTE)v1) & 1) != 0 )
            v3 = 2654435761i64 * (unsigned int)v1;
        }
        v4 = (unsigned int)(qword_140C50104 - 1) & (v3 + v4);
        v5 = *(_QWORD *)((v4 << dword_140C50100) + qword_140C500F8);
        v8 = v5;
      }
      while( v5 );
    }
  }
  else
  {
    v5 = 0i64;
  }
  v6 = v5 != 0;
  if( _InterlockedCompareExchange64((volatile signed __int64 *)&qword_140C50110, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((INT64 *)&qword_140C50110);
  KeAbPostRelease(&qword_140C50110);
  KeLeaveCriticalRegion();
  return v6;
}

Referenced by:

CcUnmapVacb
PfProcessCreateNotification