81 typedef struct inffast_ar {
86 unsigned char FAR *
in;
87 unsigned char FAR *last;
89 unsigned char FAR *beg;
91 unsigned char FAR *window;
112 void inffas8664fnc(
struct inffast_ar * par);
116 #if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64)) 117 #define PAD_AVAIL_IN 6 118 #define PAD_AVAIL_OUT 258 120 #define PAD_AVAIL_IN 5 121 #define PAD_AVAIL_OUT 257 127 ar.in = strm->next_in;
129 ar.out = strm->next_out;
130 ar.beg = ar.out - (
start - strm->avail_out);
132 ar.wsize = state->
wsize;
133 ar.write = state->
wnext;
134 ar.window = state->
window;
135 ar.hold = state->
hold;
136 ar.bits = state->
bits;
139 ar.lmask = (1U << state->
lenbits) - 1;
140 ar.dmask = (1U << state->
distbits) - 1;
146 while (((
size_t)(
void *)ar.in & (
sizeof(ar.hold) / 2 - 1)) != 0) {
147 ar.hold += (
unsigned long)*ar.in++ << ar.
bits;
155 strm->msg =
"invalid literal/length code";
156 else if (ar.status == 3)
157 strm->msg =
"invalid distance code";
159 strm->msg =
"invalid distance too far back";
162 else if ( ar.status == 1 ) {
167 ar.len = ar.bits >> 3;
169 ar.bits -= ar.len << 3;
170 ar.hold &= (1U << ar.bits) - 1;
173 strm->next_in = ar.in;
174 strm->next_out = ar.out;
175 strm->avail_in = (unsigned)(ar.in < ar.last ?
178 strm->avail_out = (unsigned)(ar.out < ar.end ?
181 state->
hold = (
unsigned long)ar.hold;
182 state->
bits = ar.bits;
int write(int fd, const char *buf, int nbytes)
code const FAR * distcode
void inflate_fast(z_streamp strm, unsigned start)
struct inffast_ar type_ar
local int out(void *out_desc, unsigned char *buf, unsigned len)
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque
unsigned char FAR * window