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