s->lookahead = s->strstart - 0xffff; s->strstart = 0xffff;
s->lookahead = (uInt)(s->strstart - max_start); s->strstart = (uInt)max_start; FLUSH_BLOCK(s, 0);
local block_state deflate_stored(s, flush)    deflate_state *s;    int flush;{    for (;;) {        /* Fill the window as much as possible: */        if (s->lookahead <= 1) {            Assert(s->strstart < s->w_size+MAX_DIST(s) ||		   s->block_start >= (long)s->w_size, "slide too late");            fill_window(s);            if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;            if (s->lookahead == 0) break; /* flush the current block */        }	Assert(s->block_start >= 0L, "block gone");	s->strstart += s->lookahead;	s->lookahead = 0;        /* Stored blocks are limited to 0xffff bytes: */        if (s->strstart == 0 || s->strstart > 0xfffe) {	    /* strstart == 0 is possible when wraparound on 16-bit machine */	    s->lookahead = s->strstart - 0xffff;	    s->strstart = 0xffff;	}	/* Emit a stored block if it is large enough: */        if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {            FLUSH_BLOCK(s, 0);	}    }    FLUSH_BLOCK(s, flush == Z_FINISH);    return flush == Z_FINISH ? finish_done : block_done;}