MiCreateAweInfoBitMap
INT64 __fastcall MiCreateAweInfoBitMap(INT64 a1){
__int64 v2;
__int64 v3;
__int64 v4;
__int16 v5;
unsigned __int64 v6;
unsigned __int64 v7;
void *v8;
void *v9;
INT64 result;
int v11;
v2 = *((_QWORD *)KeGetCurrentThread() + 23);
v3 = *(_QWORD *)(MiGetAweInfoPartition(a1) + 6920);
v4 = *(_QWORD *)(v2 + 1408);
if( v4 )
{
v5 = *(_WORD *)(v4 + 8);
if( (v5 == 332 || v5 == 452) && (unsigned __int64)(v3 + 1) > 0x100000000i64 )
v3 = 0xFFFFFFFFi64;
}
v6 = ExGetCallBackBlockRoutine(a1);
if( v6 == 1 )
v7 = v3 + 1;
else
v7 = (~(v6 - 1) & (v3 + v6 - 1)) / v6;
LODWORD(v8) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
v9 = v8;
if( !v8 )
return 3221225626i64;
if( (*(_DWORD *)a1 & 1) != 0
&& (v11 = PsChargeProcessNonPagedPoolQuota(v2, 8 * ((v7 >> 6) + ((v7 & 0x3F) != 0))), v11 < 0) )
{
ExFreePoolWithTag(v9, 0);
return(unsigned int)v11;
}
else
{
*(_QWORD *)(a1 + 16) = v7;
result = 0i64;
*(_QWORD *)(a1 + 24) = v9;
}
return result;
}Referenced by:
MiAllocateAweInfo
MiResizeAweBitMap