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