HalpAcpiIsCachedTableCompromised

BOOL __stdcall HalpAcpiIsCachedTableCompromised(
        _LOADER_PARAMETER_BLOCK *LoaderBlock,
        UINT8 *OemId,
        UINT8 *OemTableId,
        DESCRIPTION_HEADER *CachedTable){
  const char *v4; 
  unsigned int *TableFromBios; 
  bool v7; 
  unsigned int *v8; 
  void *Buf2; 
  v4 = "SLIC";
  LODWORD(TableFromBios) = 0;
  v7 = 1;
  do
  {
    if( (_DWORD)OemId == *(_DWORD *)v4 )
      break;
    LODWORD(TableFromBios) = (_DWORD)TableFromBios + 1;
    v4 += 4;
  }
  while( !(_DWORD)TableFromBios );
  if( (_DWORD)TableFromBios == 1 )
  {
    v7 = 0;
  }
  else
  {
    TableFromBios = (unsigned int *)HalpAcpiGetTableFromBios(
                                      LoaderBlock,
                                      OemId,
                                      OemTableId,
                                      (LARGE_INTEGER *)CachedTable);
    v8 = TableFromBios;
    if( TableFromBios )
    {
      v7 = memcmp(TableFromBios, Buf2, TableFromBios[1]) != 0;
      if( LoaderBlock )
        HalpUnmapVirtualAddress(v8, ((unsigned __int64)((unsigned __int16)v8 & 0xFFF) + 4095) >> 12, 0);
      else
        MmUnmapIoSpace(v8, 0i64);
    }
  }
  LOBYTE(TableFromBios) = v7;
  return(int)TableFromBios;
}

Referenced by:

HalpAcpiGetTableWork