SepCompareSidValuesBlocks

UINT8 __stdcall SepCompareSidValuesBlocks(_SEP_SID_VALUES_BLOCK *SidValuesOne, _SEP_SID_VALUES_BLOCK *SidValuesTwo){
  unsigned int SidCount; 
  unsigned int v4; 
  unsigned __int8 *p_SidValuesStart; 
  unsigned __int8 *v6; 

  if( SidValuesOne == SidValuesTwo )
    return 1;
  if( SidValuesOne )
  {
    if( SidValuesTwo )
    {
      SidCount = SidValuesOne->SidCount;
      if( SidCount == SidValuesTwo->SidCount )
      {
        v4 = 0;
        p_SidValuesStart = (unsigned __int8 *)&SidValuesOne->SidValuesStart;
        v6 = (unsigned __int8 *)&SidValuesTwo->SidValuesStart;
        if( !SidCount )
          return 1;
        while( RtlEqualSid(p_SidValuesStart, v6) )
        {
          ++v4;
          p_SidValuesStart += (4i64 * p_SidValuesStart[1] + 11) & 0xFFFFFFFCi64;
          v6 += (4i64 * v6[1] + 11) & 0xFFFFFFFCi64;
          if( v4 >= SidCount )
            return 1;
        }
      }
    }
  }
  return 0;
}

Referenced by:

SepSetTokenUserAndGroups