HalpAcpiGetTableWork

LARGE_INTEGER *__stdcall HalpAcpiGetTableWork(_LOADER_PARAMETER_BLOCK *LoaderBlock, UINT8 *OemId, UINT8 *OemTableId){
  UINT8 *v3; 
  unsigned int v5; 
  LARGE_INTEGER *v7; 
  LARGE_INTEGER *CachedTable; 
  DESCRIPTION_HEADER *TableFromBios; 
  LARGE_INTEGER *v11; 
  v5 = (unsigned int)OemId;
  v7 = (LARGE_INTEGER *)v3;
  CachedTable = (LARGE_INTEGER *)HalpAcpiGetCachedTable((unsigned int)OemId, OemTableId, v3);
  if( !CachedTable || HalpAcpiIsCachedTableCompromised(LoaderBlock, (UINT8 *)v5, OemTableId, (DESCRIPTION_HEADER *)v7) )
  {
    TableFromBios = (DESCRIPTION_HEADER *)HalpAcpiGetTableFromBios(LoaderBlock, (UINT8 *)v5, OemTableId, v7);
    CachedTable = (LARGE_INTEGER *)TableFromBios;
    if( TableFromBios )
    {
      v11 = HalpAcpiCopyBiosTable(LoaderBlock, TableFromBios, 0i64);
      if( LoaderBlock )
        HalpUnmapVirtualAddress(
          CachedTable,
          ((unsigned __int64)((unsigned __int16)CachedTable & 0xFFF) + 4095) >> 12,
          0);
      else
        MmUnmapIoSpace(CachedTable, 0i64);
      if( v11 )
      {
        HalpAcpiCacheTable(LoaderBlock, v11);
        return v11;
      }
      else
      {
        return 0i64;
      }
    }
  }
  return CachedTable;
}

Referenced by:

HalpAcpiGetAllTablesWork
HalpAcpiGetFacsMapping
HalpAcpiGetTable
HalpAcpiGetTableFromBios