PfTInitialize

VOID __stdcall PfTInitialize(){
  INT64 v0; 
  char v1; 
  _FAST_MUTEX *v2; 
  char v3; 
  INT64 v4; 
  unsigned int v5; 
  UINT64 v6; 
  UINT8 v7; 
  UINT8 v8; 
  _KEVENT *v9; 
  UINT64 v10; 
  UINT8 v11; 
  UINT8 v12; 
  UINT64 v13; 
  UINT8 v14; 
  UINT8 v15; 
  UINT64 v16; 
  UINT8 v17; 
  UINT8 v18; 
  __int64 v19; 
  int v20; 
  int v21; 
  __int64 v22; 
  void *v23; 
  void *v24; 
  v2 = (_FAST_MUTEX *)(v0 + 560);
  v3 = v1;
  v4 = v0;
  if( v1 )
  {
    ExAcquireFastMutex(v2);
    KeReleaseGuardedMutex(v2);
    *(_OWORD *)(v4 + 784) = 0i64;
    *(_OWORD *)(v4 + 800) = 0i64;
    *(_QWORD *)(v4 + 816) = 0i64;
  }
  else
  {
    memset(v0, 0i64);
    memset((INT64)&stru_140CEBE88, 0i64);
    *(_QWORD *)v4 = 0i64;
  }
  PfKernelGlobals = 0x23C34600ui64 / KeQueryTimeIncrement();
  *(_OWORD *)(v4 + 24) = 0i64;
  *(_OWORD *)(v4 + 40) = 0i64;
  *(_QWORD *)(v4 + 56) = 0i64;
  *(_DWORD *)(v4 + 24) &= 0xFFFFFFF0;
  *(_QWORD *)(v4 + 56) = v4 + 48;
  *(_QWORD *)(v4 + 48) = v4 + 48;
  *(_WORD *)(v4 + 34) = 0;
  *(_QWORD *)(v4 + 40) = 0i64;
  *(_WORD *)(v4 + 32) = 2;
  *(_OWORD *)(v4 + 64) = 0i64;
  *(_OWORD *)(v4 + 80) = 0i64;
  *(_QWORD *)(v4 + 96) = 0i64;
  *(_QWORD *)(v4 + 96) = v4 + 88;
  *(_QWORD *)(v4 + 88) = v4 + 88;
  v5 = *(_DWORD *)(v4 + 64) & 0xFFFFFFF1;
  *(_WORD *)(v4 + 74) = 0;
  *(_QWORD *)(v4 + 80) = 0i64;
  *(_DWORD *)(v4 + 64) = v5 | 1;
  *(_WORD *)(v4 + 72) = 0;
  if( v3 )
    ExAcquireFastMutex(v2);
  else
    KeInitializeGuardedMutex(v2);
  *(_QWORD *)(v4 + 512) = v4 + 504;
  *(_QWORD *)(v4 + 504) = v4 + 504;
  *(_QWORD *)(v4 + 528) = v4 + 520;
  *(_QWORD *)(v4 + 520) = v4 + 520;
  if( v3 )
    KeReleaseGuardedMutex(v2);
  else
    PfTAccessTracingInitialize(v4, (INT64)&PfKernelGlobals, 0i64);
  v9 = (_KEVENT *)(v4 + 136);
  if( v3 )
  {
    KeResetEvent(v9, v6, v7, v8, (IRP *)v19);
    KeResetEvent((VOID *)(v4 + 160), v10, v11, v12, (IRP *)v19);
    KeResetEvent((VOID *)(v4 + 112), v13, v14, v15, (IRP *)v19);
    KeResetEvent((VOID *)(v4 + 200), v16, v17, v18, (IRP *)v19);
  }
  else
  {
    KeInitializeEvent(v9, NotificationEvent, 0);
    KeInitializeEvent((_KEVENT *)(v4 + 160), NotificationEvent, 0);
    KeInitializeEvent((_KEVENT *)(v4 + 112), NotificationEvent, 0);
    KeInitializeEvent((_KEVENT *)(v4 + 200), NotificationEvent, 0);
  }
  v19 = 0x4C4E6650CEB10001i64;
  v24 = PfpSectInfoHandleFullBuffer;
  v23 = PfpSectInfoHandleOutOfBuffers;
  v20 = 1;
  v21 = 64;
  v22 = 64i64;
  PfFbBufferListInitialize((PKSPIN_LOCK)(v4 + 224), (__int64)&v19, v3);
  InitializeSListHead((_SLIST_HEADER *)(v4 + 480));
  *(_DWORD *)(v4 + 496) = -1;
  v24 = PfpEventHandleFullBuffer;
  v19 = 0x4C456650CEB10002i64;
  v23 = PfpEventHandleOutOfBuffers;
  v20 = 512;
  v21 = 48;
  v22 = 64i64;
  PfFbBufferListInitialize((PKSPIN_LOCK)(v4 + 352), (__int64)&v19, v3);
}

Referenced by:

PfSetSuperfetchInformation
PfTStart
PfpParametersPropagate