PfpScenCtxServiceThreadSet

VOID __fastcall PfpScenCtxServiceThreadSet(volatile INT64 *a1, INT64 a2){
  HANDLE v2; 
  _ETHREAD *CurrentThread; 
  HANDLE ThreadId; 
  __int64 v6; 
  _ETHREAD *v7; 
  char v8; 
  v2 = 0i64;
  if( (_DWORD)a2 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    ThreadId = PsGetThreadId((PETHREAD)CurrentThread);
    v6 = *((_QWORD *)CurrentThread + 134);
    v2 = ThreadId;
  }
  else
  {
    v6 = 0i64;
  }
  v7 = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)v7 + 242);
  ExAcquirePushLockExclusiveEx((UINT64)a1, 0i64);
  *((_QWORD *)a1 + 9) = v2;
  *((_QWORD *)a1 + 10) = v6;
  v8 = _InterlockedExchangeAdd64(a1, 0xFFFFFFFFFFFFFFFFui64);
  if( (v8 & 2) != 0 && (v8 & 4) == 0 )
    ExfTryToWakePushLock(a1);
  KeAbPostRelease((PVOID)a1);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}

Referenced by:

PfSetSuperfetchInformation