docs: function slurp(R, blob, length, opts) {
  	var l = length;
  	var bufs = [];
  	var d = blob.slice(blob.l,blob.l+l);
  	if(opts && opts.enc && opts.enc.insitu_decrypt) switch(R.n) {
  	case 'BOF': case 'FilePass': case 'FileLock': case 'InterfaceHdr': case 'RRDInfo': case 'RRDHead': case 'UsrExcl': break;
  	default:
  		if(d.length === 0) break;
  		opts.enc.insitu_decrypt(d);
  	}
  	bufs.push(d);
  	blob.l += l;
  	var next = (XLSRecordEnum[__readUInt16LE(blob,blob.l)]);
  	while(next != null && next.n === 'Continue') {
  		l = __readUInt16LE(blob,blob.l+2);
  		bufs.push(blob.slice(blob.l+4,blob.l+4+l));
  		blob.l += 4+l;
  		next = (XLSRecordEnum[__readUInt16LE(blob, blob.l)]);
  	}
  	var b = (bconcat(bufs));
  	prep_blob(b, 0);
  	var ll = 0; b.lens = [];
  	for(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }
  	return R.f(b, b.length, opts);
  }