BF2Statistics.Gamespy.Enctypex.Three C# (CSharp) Method

Three() private static method

private static Three ( byte &u0002, byte &u0003, byte u0005, byte &u0008, long &u0006, GSEncodingData &u000e ) : byte[]
u0002 byte
u0003 byte
u0005 byte
u0008 byte
u0006 long
u000e GSEncodingData
return byte[]
        private static byte[] Three(ref byte[] u0002, ref byte[] u0003, byte[] u0005, ref byte[] u0008, ref long u0006, ref GSEncodingData u000e)
        {
            long num = (long)((u0008[0] ^ 236) + 2);
            byte[] numArray = new byte[8];
            if (u0006 < (long)1)
            {
                return null;
            }
            if (u0006 < num)
            {
                return null;
            }
            long num1 = (long)(u0008[num - 1] ^ 234);
            if (u0006 < num + num1)
            {
                return null;
            }
            Array.Copy(u0005, numArray, 8);
            byte[] numArray1 = new byte[u0006 - num];
            Array.ConstrainedCopy(u0008, (int)num, numArray1, 0, (int)(u0006 - num));
            Six(ref u0002, ref u0003, ref numArray, numArray1, num1);
            Array.ConstrainedCopy(numArray1, 0, u0008, (int)num, (int)(u0006 - num));
            num = num + num1;
            if (u000e != null)
            {
                u000e.Offset = num;
                u000e.Start = num;
            }
            else
            {
                byte[] numArray2 = new byte[u0006 - num];
                Array.ConstrainedCopy(u0008, (int)num, numArray2, 0, (int)(u0006 - num));
                u0008 = numArray2;
                u0006 = u0006 - num;
            }
            return u0008;
        }