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