HalpPciReportMmConfigAddressRange
INT64 __fastcall HalpPciReportMmConfigAddressRange(){
unsigned int v0;
unsigned int *PoolWithTag;
unsigned int *v2;
unsigned int v3;
_QWORD *v4;
__int64 v5;
__int64 v6;
unsigned __int64 v7;
unsigned int v8;
ArbDeleteMmConfigRange();
v0 = 32 * (HalpPciMcfgTableCount - 1) + 72;
PoolWithTag = (unsigned int *)ExAllocatePoolWithTag(NonPagedPoolNx, v0, 0x206C6148ui64);
v2 = PoolWithTag;
if( !PoolWithTag )
return 3221225626i64;
memset((INT64)PoolWithTag, 0i64);
v3 = HalpPciMcfgTableCount;
*v2 = v0;
v2[7] = 1;
v2[9] = v3;
if( v3 )
{
v4 = v2 + 14;
v5 = HalpPciMcfgTable + 44;
v6 = v3;
do
{
*((_BYTE *)v4 - 15) = 3;
*v4 = *(_QWORD *)v5 + ((unsigned __int64)*(unsigned __int8 *)(v5 + 10) << 20);
v4 += 4;
v7 = *(_QWORD *)v5 + ((unsigned __int64)*(unsigned __int8 *)(v5 + 11) << 20) + 0xFFFFF;
v5 += 16i64;
*(v4 - 3) = v7;
--v6;
}
while( v6 );
}
v8 = ArbInitializeMmConfigRange(v2);
ExFreePoolWithTag(v2, 0);
return v8;
}Referenced by:
HalpPciInitSystem