internal void SetBinaryForm(byte[] binaryForm, int offset)
{
int count;
int length;
RawAcl.VerifyHeader(binaryForm, offset, out this._revision, out count, out length);
int num1 = length + offset;
offset += 8;
this._aces = new ArrayList(count);
int num2 = 8;
for (int index = 0; index < count; ++index)
{
GenericAce fromBinaryForm = GenericAce.CreateFromBinaryForm(binaryForm, offset);
int binaryLength = fromBinaryForm.BinaryLength;
if (num2 + binaryLength > GenericAcl.MaxBinaryLength)
{
throw new ArgumentException(Environment.GetResourceString("ArgumentException_InvalidAclBinaryForm"), "binaryForm");
}
this._aces.Add((object)fromBinaryForm);
if (binaryLength % 4 != 0)
{
throw new SystemException();
}
num2 += binaryLength;
if ((int)this._revision == (int)GenericAcl.AclRevisionDS)
{
offset += (int)binaryForm[offset + 2] + ((int)binaryForm[offset + 3] << 8);
}
else
{
offset += binaryLength;
}
if (offset > num1)
{
throw new ArgumentException(Environment.GetResourceString("ArgumentException_InvalidAclBinaryForm"), "binaryForm");
}
}
}