SepConstrainByConstraintMask

VOID __stdcall SepConstrainByConstraintMask(INT64 a1, INT64 a2, CHAR *a3, CHAR *a4, BOOL *a5, UINT64 a6, _BYTE *a7){
  int v7; 
  int v8; 
  int v9; 
  signed __int64 v10; 
  BOOL *v11; 
  __int64 v12; 
  int v13; 

  v7 = a2;
  v8 = a1;
  *a7 = 0;
  if( (_DWORD)a1 != -1 )
  {
    if( (_DWORD)a6 )
    {
      v10 = a4 - a3;
      v11 = a5;
      v12 = (unsigned int)a6;
      do
      {
        v13 = v8 & *(_DWORD *)a3;
        if( v13 != *(_DWORD *)a3 )
        {
          *a7 = 1;
          *(_DWORD *)a3 = v13;
          if( (v7 & 0x2000000) != 0 )
          {
            if( v13 )
            {
              *(_DWORD *)&a3[v10] = 0;
              if( a5 )
                *v11 = 1;
            }
            else
            {
              *(_DWORD *)&a3[v10] = -1073741790;
              if( a5 )
                *v11 = 0;
            }
          }
          else
          {
            *(_DWORD *)&a3[v10] = -1073741790;
            if( a5 )
              *v11 = *(_DWORD *)a3 != 0;
          }
        }
        a3 += 4;
        ++v11;
        --v12;
      }
      while( v12 );
    }
    else
    {
      v9 = a1 & *(_DWORD *)a3;
      if( v9 != *(_DWORD *)a3 )
      {
        *a7 = 1;
        *(_DWORD *)a3 = v9;
        if( (a2 & 0x2000000) != 0 )
        {
          if( v9 )
          {
            *(_DWORD *)a4 = 0;
            if( a5 )
              *a5 = 1;
          }
          else
          {
            *(_DWORD *)a4 = -1073741790;
            if( a5 )
              *a5 = 0;
          }
        }
        else
        {
          *(_DWORD *)a4 = -1073741790;
          if( a5 )
            *a5 = *(_DWORD *)a3 != 0;
        }
      }
    }
  }
}

Referenced by:

SeAccessCheckByTypeWithAdminlessChecks
SepAccessCheckAndAuditAlarmWithAdminlessChecks