IoInitializeProcessor

INT64 __fastcall IoInitializeProcessor(INT64 a1, INT64 *a2){
  INT64 *v4; 
  __int64 *PoolWithTag; 
  __int64 *v6; 
  int v7; 
  __int64 *v8; 
  LIST_ENTRY *(__stdcall *v9)(LIST_ENTRY *, UINT64 *); 
  __int64 *v10; 
  __int128 v12[2]; 
  memset(v12, 0, sizeof(v12));
  if( !a2 )
    IopQueryProcessorInitValues((__int64)v12, 0i64);
  v4 = (INT64 *)v12;
  if( a2 )
    v4 = a2;
  PoolWithTag = (__int64 *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x280ui64, 0x6F49ui64);
  v6 = PoolWithTag;
  if( IopIrpCreditsEnabled > 0 )
    v7 = *((_DWORD *)v4 + 7);
  else
    v7 = 0x7FFFFFFF;
  *(_DWORD *)(a1 + 11676) = v7;
  *(_QWORD *)(a1 + 2168) = IopCompletionLookasideList;
  if( PoolWithTag )
  {
    ExInitializeSystemLookasideList(
      (_DWORD)PoolWithTag,
      512,
      56,
      1349542729,
      *((_WORD *)v4 + 3),
      (__int64)&ExSystemLookasideListHead);
    PoolWithTag += 16;
  }
  else
  {
    v6 = IopCompletionLookasideList;
  }
  *(_QWORD *)(a1 + 2160) = v6;
  *(_QWORD *)(a1 + 2088) = IopLargeIrpLookasideList;
  v8 = PoolWithTag;
  if( PoolWithTag )
  {
    ExInitializeSystemLookasideList(
      (_DWORD)PoolWithTag,
      512,
      *((_DWORD *)v4 + 5),
      1282437705,
      *((_WORD *)v4 + 2),
      (__int64)&ExSystemLookasideListHead);
    PoolWithTag += 16;
  }
  else
  {
    v8 = IopLargeIrpLookasideList;
  }
  *(_QWORD *)(a1 + 2080) = v8;
  *(_QWORD *)(a1 + 2072) = IopMediumIrpLookasideList;
  v9 = (LIST_ENTRY *(__stdcall *)(LIST_ENTRY *, UINT64 *))PoolWithTag;
  if( PoolWithTag )
  {
    ExInitializeSystemLookasideList(
      (_DWORD)PoolWithTag,
      512,
      *((_DWORD *)v4 + 4),
      1299214921,
      *((_WORD *)v4 + 1),
      (__int64)&ExSystemLookasideListHead);
    PoolWithTag += 16;
  }
  else
  {
    v9 = IopMediumIrpLookasideList;
  }
  *(_QWORD *)(a1 + 2064) = v9;
  *(_QWORD *)(a1 + 2056) = IopSmallIrpLookasideList;
  v10 = PoolWithTag;
  if( PoolWithTag )
  {
    ExInitializeSystemLookasideList(
      (_DWORD)PoolWithTag,
      512,
      *((_DWORD *)v4 + 3),
      1399878217,
      *(_WORD *)v4,
      (__int64)&ExSystemLookasideListHead);
    PoolWithTag += 16;
  }
  else
  {
    v10 = IopSmallIrpLookasideList;
  }
  *(_QWORD *)(a1 + 2048) = v10;
  *(_QWORD *)(a1 + 2104) = IopMdlLookasideList;
  if( PoolWithTag )
    ExInitializeSystemLookasideList(
      (_DWORD)PoolWithTag,
      512,
      *((_DWORD *)v4 + 6),
      1349280845,
      *((_WORD *)v4 + 4),
      (__int64)&ExSystemLookasideListHead);
  else
    PoolWithTag = IopMdlLookasideList;
  *(_QWORD *)(a1 + 2096) = PoolWithTag;
  if( (IopIrpStackProfilerFlags & 3) != 0 )
  {
    memset(a1 + 34752, 0i64);
    *(_DWORD *)(a1 + 34832) = 0;
    memset(a1 + 34836, 0i64);
    *(_DWORD *)(a1 + 34916) = 0;
  }
  return 0i64;
}

Referenced by:

IoInitSystemPreDrivers
KiStartDynamicProcessor