MiInitializeDpcGang
NTSTATUS __stdcall MiInitializeDpcGang(INT64 a1, UINT64 a2, CHAR a3){
unsigned int v4;
VOID *Pool;
unsigned int v7;
v4 = a2;
LODWORD(Pool) = (unsigned int)memset((VOID *)a1, 0i64, 0x180u);
if( (a3 & 2) != 0 )
{
v7 = 1;
}
else
{
LODWORD(Pool) = MiComputeIdealDpcGang(a1, v4);
v7 = (unsigned int)Pool;
}
if( (a3 & 1) != 0 )
{
*(_DWORD *)(a1 + 184) |= 1u;
if( v7 > 8 )
{
Pool = MiAllocatePool(64i64, 16i64 * v7, 0x6544694Dui64);
*(_QWORD *)(a1 + 16) = Pool;
}
if( !*(_QWORD *)(a1 + 16) )
{
LODWORD(Pool) = a1 + 24;
*(_QWORD *)(a1 + 16) = a1 + 24;
goto LABEL_13;
}
}
else
{
if( v7 > 8 )
{
Pool = MiAllocatePool(64i64, 8i64 * v7, 0x6544694Dui64);
*(_QWORD *)(a1 + 8) = Pool;
}
if( !*(_QWORD *)(a1 + 8) )
{
LODWORD(Pool) = a1 + 16;
*(_QWORD *)(a1 + 8) = a1 + 16;
LABEL_13:
if( v7 > 8 )
v7 = 8;
}
}
*(_DWORD *)(a1 + 188) = v7;
return(int)Pool;
}Referenced by:
MiAllocateFastLargePagesForMdl
MiHugePageOperation
MiInitializeDynamicPfns