WmipDetermineInstanceBaseIndex
UINT64 __fastcall WmipDetermineInstanceBaseIndex(const _GUID *Guid, const WCHAR *BaseName, UINT64 InstanceCount){
unsigned int v5;
volatile signed __int64 *GEByGuid;
volatile signed __int64 *v7;
__int64 *v8;
__int64 *i;
int v10;
int v11;
const WCHAR *v12;
_DWORD *v13;
v5 = 0;
KeWaitForSingleObject(&WmipSMMutex, Executive, 0, 0, 0i64);
GEByGuid = WmipFindGEByGuid(Guid, 0);
v7 = GEByGuid;
if( GEByGuid )
{
v8 = (__int64 *)(GEByGuid + 7);
for( i = (__int64 *)*((_QWORD *)GEByGuid + 7); i != v8; i = (__int64 *)*i )
{
if( (i[2] & 1) != 0 )
{
v13 = (_DWORD *)i[11];
v12 = BaseName;
do
{
v10 = *(const WCHAR *)((char *)v12 + (char *)(v13 + 1) - (char *)BaseName);
v11 = *v12 - v10;
if( v11 )
break;
++v12;
}
while( v10 );
if( !v11 && v5 <= *v13 + *((_DWORD *)i + 18) )
v5 = *v13 + *((_DWORD *)i + 18);
}
}
WmipUnreferenceEntry((__int64)&WmipGEChunkInfo, v7);
}
KeReleaseMutex(&WmipSMMutex, 0);
return v5;
}Referenced by:
WmipBuildInstanceSet