HalpAuditAcpiTables

VOID __stdcall HalpAuditAcpiTables(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  int v1; 
  _DWORD *v2; 
  int SlicAddresses; 
  unsigned int v4; 
  unsigned int i; 
  void *v6; 
  PVOID P; 

  if( (*(_DWORD *)&LoaderBlock->FirmwareInformation & 1) == 0 )
  {
    P = 0i64;
    v1 = HalpAuditEnumerateRsdts((__int64)LoaderBlock, &P);
    v2 = P;
    SlicAddresses = v1;
    if( v1 >= 0 )
    {
      SlicAddresses = 0;
      v4 = 0;
      if( *((_DWORD *)P + 1) )
      {
        do
        {
          SlicAddresses = HalpAuditQuerySlicAddresses((_LARGE_INTEGER *)&v2[8 * v4 + 2]);
          if( SlicAddresses < 0 )
            break;
          ++v4;
        }
        while( v4 < v2[1] );
      }
      if( SlicAddresses >= 0 )
        HalpAuditSlicTables((__int64)v2);
    }
    HalpAuditStatus = SlicAddresses;
    if( v2 )
    {
      for( i = 0; i < v2[1]; ++i )
      {
        v6 = *(void **)&v2[8 * i + 8];
        if( v6 )
          ExFreePoolWithTag(v6, 0);
      }
      ExFreePoolWithTag(v2, 0);
    }
  }
}

Referenced by:

HalpAcpiInitSystem