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