public override void TransformBytes(byte[] a_data, int a_index, int a_length) { Debug.Assert(a_index >= 0); Debug.Assert(a_length >= 0); Debug.Assert(a_index + a_length <= a_data.Length); if (!m_buffer.IsEmpty) { if (m_buffer.Feed(a_data, ref a_index, ref a_length, ref m_processed_bytes)) { TransformBuffer(); } } while (a_length >= m_buffer.Length) { m_processed_bytes += (ulong)m_buffer.Length; TransformBlock(a_data, a_index); a_index += m_buffer.Length; a_length -= m_buffer.Length; } if (a_length > 0) { m_buffer.Feed(a_data, ref a_index, ref a_length, ref m_processed_bytes); } }