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