WmipEnumerateGuids
__int64 __fastcall WmipEnumerateGuids(int a1, _DWORD *a2, int a3, _DWORD *a4){
__int64 v5;
int v8;
unsigned int v9;
_QWORD **v10;
_QWORD *i;
__int64 v12;
_QWORD *v13;
__int64 result;
v5 = 0i64;
v8 = 0;
v9 = (a3 - 8) / 0x24u;
KeWaitForSingleObject(&WmipSMMutex, Executive, 0, 0, 0i64);
v10 = (_QWORD **)WmipGEHeadPtr;
for( i = *(_QWORD **)WmipGEHeadPtr; i != v10; i = (_QWORD *)*i )
{
++v8;
if( (unsigned int)v5 < v9 )
{
v12 = 9 * v5;
v5 = (unsigned int)(v5 + 1);
*(_OWORD *)&a2[v12 + 2] = *(_OWORD *)(i + 9);
}
}
if( a1 == 2244960 )
{
v13 = *v10;
v8 = 0;
v5 = 0i64;
while( v13 != v10 )
{
++v8;
if( (unsigned int)v5 < v9 )
{
WmipGetGuidPropertiesFromGuidEntry((__int64)&a2[8 * v5 + 2 + (unsigned int)v5], (__int64)v13);
v5 = (unsigned int)(v5 + 1);
}
v13 = (_QWORD *)*v13;
}
}
KeReleaseMutex(&WmipSMMutex, 0);
*a4 = 36 * v5 + 8;
result = 0i64;
*a2 = v8;
a2[1] = v5;
return result;
}Referenced by:
WmipIoControl