4 const unsigned char *p;
9 int ComLib_getBit(struct ComLib_Str *s)
11 if (s->bitBufLen == 0) {
12 s->bitBuf = s->p[0] | s->p[1] << 8;
17 return (s->bitBuf >> s->bitBufLen) & 1;
20 int ComLib_getTmpBit(struct ComLib_Str *s)
22 s->tmp = (s->tmp << 1 | ComLib_getBit(s)) & 0xffff;
23 return ComLib_getBit(s);
26 unsigned char *ComLib_main(const unsigned char *p, unsigned char *q)
37 i = ComLib_getBit(&s);
41 i = ComLib_getTmpBit(&s);
42 if (s.tmp == 0) goto fin;
45 dis = ~((s.tmp - 3) << 8 | *s.p++);
47 i = ComLib_getTmpBit(&s);
48 s.tmp = s.tmp << 1 | i;
52 i = ComLib_getTmpBit(&s);
57 if (dis < -0xd00) s.tmp++;
58 for (i = 0; i < s.tmp; i++)