static int PK_packed_num () { int i, j; if ((i = PK_get_nyb ()) == 0) { do { j = PK_get_nyb (); i++; } while (j == 0); while (i > 0) { j = (j << 4) + PK_get_nyb (); i--; } return (j - 15 + ((13 - PK_dyn_f) << 4) + PK_dyn_f); } else { if (i <= PK_dyn_f) return (i); if (i < 14) return ((i - PK_dyn_f - 1) << 4) + PK_get_nyb () + PK_dyn_f + 1; if (i == 14) PK_repeat_count = PK_packed_num (); else PK_repeat_count = 1; return PK_packed_num (); } }
static int PK_packed_num(FILE *fp) { int i, j; if ((i = PK_get_nyb(fp)) == 0) { do { j = PK_get_nyb(fp); ++i; } while (j == 0); while (i > 0) { j = (j << 4) | PK_get_nyb(fp); --i; } return (j - 15 + ((13 - PK_dyn_f) << 4) + PK_dyn_f); } else { if (i <= PK_dyn_f) return i; if (i < 14) return (((i - PK_dyn_f - 1) << 4) + PK_get_nyb(fp) + PK_dyn_f + 1); if (i == 14) PK_repeat_count = PK_packed_num(fp); else PK_repeat_count = 1; return PK_packed_num(fp); } }