code: function compress_block(ltree, dtree) {
  		var dist; // distance of matched string
  		var lc; // match length or unmatched char (if dist === 0)
  		var lx = 0; // running index in l_buf
  		var dx = 0; // running index in d_buf
  		var fx = 0; // running index in flag_buf
  		var flag = 0; // current flags
  		var code; // the code to send
  		var extra; // number of extra bits to send
  
  		if (last_lit !== 0) {
  			do {
  				if ((lx & 7) === 0) {
  					flag = flag_buf[fx++];
  				}
  				lc = l_buf[lx++] & 0xff;
  				if ((flag & 1) === 0) {
  					SEND_CODE(lc, ltree); /* send a literal byte */
  					//	Tracecv(isgraph(lc), (stderr," '%c' ", lc));
  				} else {
  					// Here, lc is the match length - MIN_MATCH
  					code = length_code[lc];
  					SEND_CODE(code + LITERALS + 1, ltree); // send the length code
  					extra = extra_lbits[code];
  					if (extra !== 0) {
  						lc -= base_length[code];
  						send_bits(lc, extra); // send the extra length bits
  					}
  					dist = d_buf[dx++];
  					// Here, dist is the match distance - 1
  					code = D_CODE(dist);
  					//	Assert (code < D_CODES, "bad d_code");
  
  					SEND_CODE(code, dtree); // send the distance code
  					extra = extra_dbits[code];
  					if (extra !== 0) {
  						dist -= base_dist[code];
  						send_bits(dist, extra); // send the extra distance bits
  					}
  				} // literal or match pair ?
  				flag >>= 1;
  			} while (lx < last_lit);
  		}
  
  		SEND_CODE(END_BLOCK, ltree);
  	}
docs: /* ==========================================================================
  Send the block data compressed using the given Huffman trees
  
  @param ltree- literal tree
  @param dtree- distance tree