private void ReadSector()
 {
     if (_bufferLoaded && _bufferDirty)
     {
         WriteSector();
     }
     if (_s.Position != _s.Length)
     {
         int num = _s.Read(_buffer, 0, _buffer.Length);
         if (num != _bufferSize)
         {
             Array.Clear(_buffer, num, _buffer.Length - num);
         }
         _bufferLoaded = true;
         _bufferPos    = 0;
         _bufferDirty  = false;
     }
 }
        /// <summary>
        /// Reads a sector
        /// </summary>
        private void ReadSector()
        {
            if (_bufferLoaded && _bufferDirty)
            {
                WriteSector();
            }

            if (_s.Position == _s.Length)
            {
                return;
            }

            var bytesRead = _s.Read(_buffer, 0, _buffer.Length);

            //clean the end of it
            if (bytesRead != _bufferSize)
            {
                Array.Clear(_buffer, bytesRead, _buffer.Length - bytesRead);
            }

            _bufferLoaded = true;
            _bufferPos    = 0;
            _bufferDirty  = false;
        }