PfSnAsyncContextInitialize

VOID __fastcall PfSnAsyncContextInitialize(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  int v6; 
  void *v8; 
  UINT64 v9; 
  struct _EX_RUNDOWN_REF *v10; 
  EX_RUNDOWN_REF *v11; 
  v6 = a4;
  memset(a1, 0i64);
  *(_QWORD *)(a1 + 208) = a2;
  *(_QWORD *)(a1 + 32) = a3;
  v8 = (void *)*((_QWORD *)KeGetCurrentThread() + 23);
  *(_QWORD *)(a1 + 216) = v8;
  ObfReferenceObject(v8);
  v10 = PfSnReferenceProcessTrace(*(_QWORD *)(a1 + 216), v9);
  v11 = *(EX_RUNDOWN_REF **)(a1 + 32);
  *(_QWORD *)(a1 + 224) = v10;
  ExInitializePushLock(v11);
  *(_DWORD *)(a1 + 236) = PsGetPagePriorityThread((__int64)KeGetCurrentThread());
  *(_QWORD *)a1 = 0i64;
  *(_QWORD *)(a1 + 16) = PfSnAsyncPrefetchWorker;
  *(_QWORD *)(a1 + 24) = a1;
  if( v6 )
    *(_DWORD *)(a1 + 240) |= 1u;
  ExInitializePushLock((EX_RUNDOWN_REF *)(a1 + 40));
  *(_QWORD *)(a1 + 176) = 0i64;
  *(_QWORD *)(a1 + 192) = PfSnPowerBoostWorker;
  *(_QWORD *)(a1 + 200) = a1 + 40;
  KeInitializeTimerEx((PKTIMER)(a1 + 48), NotificationTimer);
  KeInitializeDpc((PRKDPC)(a1 + 112), PfSnPowerBoostDpc, (PVOID)(a1 + 40));
}

Referenced by:

PfSnPrefetchScenario