WdipSemGetGuidKey

NTSTATUS __stdcall WdipSemGetGuidKey(const _GUID *Guid, UINT64 *Key){
  NTSTATUS v2; 
  __int64 v3; 
  unsigned int v4; 
  unsigned __int8 *Data4; 
  int v6; 

  v2 = 0;
  if( !Guid || !Key )
    return -1073741811;
  v3 = 8i64;
  v4 = Guid->Data1
     + ((320411091 * Guid->Data3 + 1) & 0xFFFF0000 | ((12345 - 393795277 * (unsigned int)Guid->Data3) >> 16))
     + ((320411091 * Guid->Data2 + 1) & 0xFFFF0000 | ((12345 - 393795277 * (unsigned int)Guid->Data2) >> 16));
  Data4 = Guid->Data4;
  do
  {
    v6 = *Data4++;
    v4 += (320411091 * v6 + 1) & 0xFFFF0000 | ((unsigned int)(12345 - 393795277 * v6) >> 16);
    --v3;
  }
  while( v3 );
  *(_DWORD *)Key = ((69069 * v4 + 1) & 0xFFFF0000 | ((1103515245 * v4 + 12345) >> 16)) % 0x7FFFFFFF;
  return v2;
}

Referenced by:

WdipSemSqmLogInflightLimitExceededDataPoints
WdipSemSqmLogTimeoutDataPoints