HalpPciAccessMmConfigSpace

CHAR __fastcall HalpPciAccessMmConfigSpace(INT16 a1, CHAR a2, CHAR a3, INT64 a4, UINT64 a5, INT64 a6, INT64 a7){
  UINT8 v10; 
  INT64 MmConfigPhysicalAddress; 
  INT64 v12; 
  __int64(__fastcall **v13)(); 
  int v15[8]; 
  INT64 v16; 
  if( (unsigned int)(a5 + a6) > 0x1000 )
    return 0;
  if( HalpPciCheckAmdK8(a1, a2, a3) )
    return 0;
  MmConfigPhysicalAddress = HalpPciGetMmConfigPhysicalAddress(a1, a2, v10);
  if( !MmConfigPhysicalAddress )
    return 0;
  v12 = HalpPciMapMmConfigPhysicalAddress(MmConfigPhysicalAddress);
  v13 = &HalpPciMmConfigReadHandlers;
  LODWORD(v16) = a6;
  if( (_DWORD)a7 )
    v13 = (__int64(__fastcall **)())&HalpPciMmConfigWriteHandlers;
  HalpPCIPerformConfigAccess((INT64)v13, v12, a4, (unsigned int)a5, v16);
  _InterlockedOr(v15, 0);
  return 1;
}

Referenced by:

HalpPCIConfig