if (!tab) {  return -2; }
static int zlib_huflookup(unsigned long *bitsp, int *nbitsp,		   struct zlib_table *tab){    unsigned long bits = *bitsp;    int nbits = *nbitsp;    while (1) {	struct zlib_tableentry *ent;	ent = &tab->table[bits & tab->mask];	if (ent->nbits > nbits)	    return -1;		       /* not enough data */	bits >>= ent->nbits;	nbits -= ent->nbits;	if (ent->code == -1)	    tab = ent->nexttable;	else {	    *bitsp = bits;	    *nbitsp = nbits;	    return ent->code;	}    }}