public override int Read(byte[] buffer, int offset, int count) { int read = 0; if (!m_eof && m_remaining > 0) { uint chunk_size = (uint)Math.Min(count, m_remaining); read = (int)m_decoder.DecodeNemesisCodeBytes(buffer, offset, chunk_size); m_eof = read < count; m_remaining -= read; } return(read); }
Stream DecodeNemesis(Stream input) { var decoder = new NemesisDecodeContext(); decoder.AttachInputFile(input); decoder.PrepareToDecodeERISANCode(); var file = new MemoryStream((int)input.Length); var buffer = new byte[0x10000]; for (;;) { int read = (int)decoder.DecodeNemesisCodeBytes(buffer, 0x10000); if (0 == read) { break; } file.Write(buffer, 0, read); } file.Position = 0; return(file); }