PfpScenCtxQueryScenarioInformation

VOID __fastcall PfpScenCtxQueryScenarioInformation(volatile INT64 *a1, INT64 a2){
  _ETHREAD *CurrentThread; 
  UINT64 v5; 
  UINT8 v6; 
  UINT8 v7; 
  char v8; 
  IRP *v9; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)a1, 0i64);
  *(_DWORD *)(a2 + 4) = *((_DWORD *)a1 + 12);
  *(_DWORD *)(a2 + 12) = *((_DWORD *)a1 + 13);
  if( *((_DWORD *)a1 + 12) == 3 )
    *(_QWORD *)(a2 + 24) = *((_QWORD *)a1 + 7);
  KeResetEvent(*((VOID **)a1 + 8), v5, v6, v7, v9);
  v8 = _InterlockedExchangeAdd64(a1, 0xFFFFFFFFFFFFFFFFui64);
  if( (v8 & 2) != 0 && (v8 & 4) == 0 )
    ExfTryToWakePushLock(a1);
  KeAbPostRelease((PVOID)a1);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}

Referenced by:

PfpQueryScenarioInformation