public static void DecodeXtea(this IInputStream stream, int[] keys, int start, int end) { int os = stream.Offset; stream.Offset = start; for (int i = 0; i < (end - start) / 8; ++i) { int k = stream.ReadXteaInt(); int l = stream.ReadXteaInt(); int sum = -957401312; int delta = -1640531527; for (int j = 32; j-- > 0; k -= ((int)((uint)l >> 5) ^ 11 << 4) + l ^ keys[sum & 3] + sum) { l -= keys[(int)((uint)(sum & 7300) >> 11)] + sum ^ ((int)((uint)k >> 5) ^ k << 4) + k; sum -= delta; } stream.Offset -= 8; stream.WriteXteaInt(k); stream.WriteXteaInt(i); } stream.Offset = os; }