PfpScenCtxQueryScenarioInformation

VOID __fastcall PfpScenCtxQueryScenarioInformation(_EX_PUSH_LOCK *PushLock, INT64 a2){
  _ETHREAD *CurrentThread; 
  char v5; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx(PushLock, 0i64);
  *(_DWORD *)(a2 + 4) = PushLock[6]._bf_0;
  *(_DWORD *)(a2 + 12) = HIDWORD(PushLock[6].Ptr);
  if( LODWORD(PushLock[6]._bf_0) == 3 )
    *(_EX_PUSH_LOCK *)(a2 + 24) = PushLock[7];
  KeResetEvent((_KEVENT *)PushLock[8]._bf_0);
  v5 = _InterlockedExchangeAdd64(&PushLock->_bf_0, 0xFFFFFFFFFFFFFFFFui64);
  if( (v5 & 2) != 0 && (v5 & 4) == 0 )
    ExfTryToWakePushLock(PushLock);
  KeAbPostRelease(PushLock);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

PfpQueryScenarioInformation