WmipFindSysIdTable

NTSTATUS __stdcall WmipFindSysIdTable(
        _LARGE_INTEGER *SysidTablePhysicalAddress,
        UINT8 *SysiosRevision,
        UINT64 *NumberEntries){
  char *v6; 
  NTSTATUS v7; 
  char *v8; 
  char *v9; 
  char v10; 
  __int64 i; 

  v6 = (char *)MmMapIoSpaceEx((_LARGE_INTEGER)917504i64, 0x20000ui64, 4ui64);
  if( v6 )
  {
    v8 = v6;
    v9 = v6 + 131055;
    while( 1 )
    {
      if( v8 > v9 )
        goto LABEL_14;
      if( *(_DWORD *)v8 == 1398362975 && *((_WORD *)v8 + 2) == 17481 && v8[6] == 95 )
      {
        v10 = 0;
        for( i = 0i64; (unsigned int)i < 0x11; i = (unsigned int)(i + 1) )
          v10 += v8[i];
        if( !v10 )
          break;
      }
      v8 += 16;
    }
    if( v8 > v9 )
    {
LABEL_14:
      v7 = -1073741823;
      goto LABEL_16;
    }
    SysidTablePhysicalAddress->anonymous_0.HighPart = 0;
    SysidTablePhysicalAddress->anonymous_0.LowPart = *(_DWORD *)(v8 + 10);
    *SysiosRevision = v8[16];
    *(_DWORD *)NumberEntries = *((unsigned __int16 *)v8 + 7);
    v7 = 0;
  }
  else
  {
    v7 = -1073741670;
  }
LABEL_16:
  if( v6 )
    MmUnmapIoSpace(v6, 0x20000ui64);
  return v7;
}

Referenced by:

WmipGetSysIds