void output( int code, OutputStream outs ) throws IOException {
		cur_accum &= masks[cur_bits];

		if ( cur_bits > 0 )
			cur_accum |= ( code << cur_bits );
		else
			cur_accum = code;

		cur_bits += n_bits;

		while ( cur_bits >= 8 ) {
			char_out( (byte) ( cur_accum & 0xff ), outs );
			cur_accum >>= 8;
			cur_bits -= 8;
		}

		/* If the next entry is going to be too big for the code size, */
		/* then increase it, if possible. */
		if ( free_ent > maxcode || clear_flg ) {
			if ( clear_flg ) {
				maxcode = MAXCODE(n_bits = g_init_bits);
				clear_flg = false;
			}
			else {
				++n_bits;
				if ( n_bits == maxbits )
					maxcode = maxmaxcode;
				else
					maxcode = MAXCODE(n_bits);
			}
		}

		if ( code == EOFCode ) {
			/* At EOF, write the rest of the buffer. */
			while ( cur_bits > 0 ) {
				char_out( (byte) ( cur_accum & 0xff ), outs );
				cur_accum >>= 8;
		cur_bits -= 8;
			}

			flush_char( outs );
		}
	}