HalpPowerInitFwPerformanceTableMappings
NTSTATUS __stdcall HalpPowerInitFwPerformanceTableMappings(){
NTSTATUS v0;
_LARGE_INTEGER *Table;
_LARGE_INTEGER *v2;
char *v3;
_LARGE_INTEGER v4;
unsigned int v5;
_DWORD *v6;
unsigned int v7;
VOID *v8;
_LARGE_INTEGER v10;
unsigned int v11;
_DWORD *v12;
unsigned int v13;
__int64 v14;
_MEMORY_CACHING_TYPE CacheType;
v0 = 0;
CacheType = MmNonCached;
Table = HalpAcpiGetTable(0i64, (const UINT8 *)0x54445046, 0i64);
v2 = Table;
if( !Table || Table->anonymous_0.LowPart != 1413763142 )
return -1073741275;
v3 = (char *)&Table[4].QuadPart + 4;
if( (char *)&Table[4].QuadPart + 4 < (char *)Table + (unsigned int)Table->anonymous_0.HighPart )
{
do
{
if( *(_WORD *)v3 )
{
if( *(_WORD *)v3 != 1 )
return -1073741822;
v10 = *(_LARGE_INTEGER *)(v3 + 8);
HalGetMemoryCachingRequirements(v10, 8ui64, &CacheType);
v11 = 4;
if( CacheType != MmCached )
v11 = 516;
v12 = MmMapIoSpaceEx(v10, 8ui64, v11);
if( !v12 )
return -1073741670;
v13 = v12[1];
MmUnmapIoSpace(v12, 8ui64);
v14 = (__int64)MmMapIoSpaceEx(v10, v13, v11);
if( !v14 )
return -1073741670;
qword_140C4AD30 = v14;
dword_140C4AD28 = (((v14 & 0xFFF) + v13 + 4095) & 0xFFFFF000) - (v14 & 0xFFF);
}
else
{
v4 = *(_LARGE_INTEGER *)(v3 + 8);
HalGetMemoryCachingRequirements(v4, 8ui64, &CacheType);
v5 = 4;
if( CacheType != MmCached )
v5 = 516;
v6 = MmMapIoSpaceEx(v4, 8ui64, v5);
if( !v6 )
return -1073741670;
v7 = v6[1];
MmUnmapIoSpace(v6, 8ui64);
v8 = MmMapIoSpaceEx(v4, v7, v5);
if( !v8 )
return -1073741670;
qword_140C4AD38 = (__int64)v8;
dword_140C4AD2C = v7;
}
v3 += (unsigned __int8)v3[2];
}
while( v3 < (char *)v2 + (unsigned int)v2->anonymous_0.HighPart );
}
return v0;
}Referenced by:
HalpPowerInitSystem