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