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;
}