RtlEqualPrefixSid

UINT8 __stdcall RtlEqualPrefixSid(VOID *Sid1, VOID *Sid2){
  __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  int v6; 
  _DWORD *v7; 
  signed __int64 v8; 

  if( *(_BYTE *)Sid1 != *(_BYTE *)Sid2 )
    return 0;
  if( *((_BYTE *)Sid1 + 2) != *((_BYTE *)Sid2 + 2) )
    return 0;
  if( *((_BYTE *)Sid1 + 3) != *((_BYTE *)Sid2 + 3) )
    return 0;
  if( *((_BYTE *)Sid1 + 4) != *((_BYTE *)Sid2 + 4) )
    return 0;
  if( *((_BYTE *)Sid1 + 5) != *((_BYTE *)Sid2 + 5) )
    return 0;
  if( *((_BYTE *)Sid1 + 6) != *((_BYTE *)Sid2 + 6) )
    return 0;
  if( *((_BYTE *)Sid1 + 7) != *((_BYTE *)Sid2 + 7) )
    return 0;
  v3 = *((unsigned __int8 *)Sid1 + 1);
  if( (_BYTE)v3 != *((_BYTE *)Sid2 + 1) )
    return 0;
  v4 = 0i64;
  if( (_BYTE)v3 )
  {
    if( (_BYTE)v3 != 11 )
      goto LABEL_12;
    v6 = *(_DWORD *)((char *)Sid1 + 2);
    if( !v6 )
      v6 = *((unsigned __int16 *)Sid1 + 3) - 2816;
    v5 = 5i64;
    if( v6 )
LABEL_12:
      v5 = 1i64;
    if( v3 - v5 > 0 )
    {
      v7 = (char *)Sid1 + 8;
      v8 = (_BYTE *)Sid2 - (_BYTE *)Sid1;
      while( *v7 == *(_DWORD *)((char *)v7 + v8) )
      {
        ++v4;
        ++v7;
        if( v4 >= v3 - v5 )
          return 1;
      }
      return 0;
    }
  }
  return 1;
}

Referenced by:

RtlpCopyEffectiveAce