Simplify two if statements. Thanks to Reddit user raydeen.

c=0;if(a<j)c+=32768;  ->  c=(a<j)*32768;

m=0;if(h>7&&h<28)m=(h-4)/4;  ->  m=(h>7&&h<28)*(h-4)/4;
Removed final hard-coded table (or.. Get back to work on your thesis Chris!!)

Huffman code lengths are stored in a *special* order, specifically,
16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15. See [1] for more
detail and the reasons behind it.

Anyway. This was snippet containing the hard-coded table.

o[i++["qrsaihjgkflemdncobp"]-97]=L(3);

Here it is now without the table.

{h=0;if(i<3)h=16+i;if(i>3){h=i-4;h=(h&1)?7-(h>>1):8+(h>>1);}o[h]=L(3);i++;}

Let me briefly comment on what is going on here -- mainly so that I
can remember what on earth I was thinking when I look at it six months
down the track.

The first 4 integers in the table are 16,17,18,0.

h=0;         if i==3 then h=0
if(i<3)      if i<3 then h=16+i
  h=16+i;
if(i>3){     if i>3 then things get hairy
  ...

The rest of the integers are split into two groups.

A run of increasing integers found at even indexes beginning with 8; and
a run of decreasing integers found at odd indexes beginning with 7.

First, we remap 4-17 to 0-13.

h=i-4;

Then

h=(h&1)

If we are an odd index we begin at 7 then subtract its index in the
run, not the array. This is given by removing the first bit from our
remapped index.

  ? 7-(h>>1)

Otherwise, we are an even index. We begin at 8 and add the current run
position.

  : 8+(h>>1);

Now h contains the real index for the code length. We read it from the
stream and continue.

o[h]=L(3);
i++;

[1]
An Explanation of the Deflate Algorithm
http://www.zlib.net/feldspar.html