WmipIsEqualInstanceSets

UINT8 __stdcall WmipIsEqualInstanceSets(tagInstanceSet *InstanceSet1, tagInstanceSet *InstanceSet2){
  tagInstanceSet v2; 
  unsigned __int16 *v3; 
  unsigned int v6; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  unsigned __int16 *v10; 
  __int64 v11; 
  int v12; 
  int v13; 

  v2 = InstanceSet1[4];
  if( ((v2 ^ InstanceSet2[4]) & 0xFFFF9FFF) != 0 )
    return 0;
  if( (v2 & 1) == 0 )
  {
    if( (v2 & 2) != 0 )
    {
      v6 = InstanceSet1[18];
      if( v6 != InstanceSet2[18] )
        return 0;
      v7 = 0i64;
      if( v6 )
      {
        v8 = *((_QWORD *)InstanceSet2 + 11);
        v9 = *((_QWORD *)InstanceSet1 + 11);
        while( 1 )
        {
          v10 = *(unsigned __int16 **)(v9 + 8 * v7);
          v11 = *(_QWORD *)(v8 + 8 * v7) - (_QWORD)v10;
          do
          {
            v12 = *(unsigned __int16 *)((char *)v10 + v11);
            v13 = *v10 - v12;
            if( v13 )
              break;
            ++v10;
          }
          while( v12 );
          if( v13 )
            break;
          v7 = (unsigned int)(v7 + 1);
          if( (unsigned int)v7 >= v6 )
            return 1;
        }
        return 0;
      }
    }
    return 1;
  }
  if( InstanceSet1[18] == InstanceSet2[18] )
  {
    v3 = (unsigned __int16 *)(*((_QWORD *)InstanceSet1 + 11) + 4i64);
    while( *v3++ )
      ;
    return 1;
  }
  return 0;
}

Referenced by:

WmipUpdateModifyGuid