461 {
462 UBYTE *endinp = inpos + inlen;
464 UBYTE *runsrc, *rundest;
466
472
473 register ULONG bitbuf;
474 register int bitsleft;
477
478 int togo = outlen, this_run, main_element, aligned_bits;
479 int match_length, length_footer,
extra, verbatim_bits;
480 int copy_length;
481
483
484
490 }
491
492
493 while (togo > 0) {
494
499 }
500
505
510
511
517
520 break;
521
525 if (bitsleft > 16) inpos -= 2;
526 R0 = inpos[0]|(inpos[1]<<8)|(inpos[2]<<16)|(inpos[3]<<24);inpos+=4;
527 R1 = inpos[0]|(inpos[1]<<8)|(inpos[2]<<16)|(inpos[3]<<24);inpos+=4;
528 R2 = inpos[0]|(inpos[1]<<8)|(inpos[2]<<16)|(inpos[3]<<24);inpos+=4;
529 break;
530
531 default:
533 }
534 }
535
536
537 if (inpos > endinp) {
538
539
540
541
542
543
544
545
547 }
548
550 if (this_run > togo) this_run = togo;
551 togo -= this_run;
553
554
555 window_posn &= window_size - 1;
556
557 if ((window_posn + this_run) > window_size)
559
561
563 while (this_run > 0) {
565
567
568 window[window_posn++] = main_element;
569 this_run--;
570 }
571 else {
572
574
578 match_length += length_footer;
579 }
581
582 match_offset = main_element >> 3;
583
584 if (match_offset > 2) {
585
586 if (match_offset != 3) {
589 match_offset =
position_base[match_offset] - 2 + verbatim_bits;
590 }
591 else {
592 match_offset = 1;
593 }
594
595
597 }
598 else if (match_offset == 0) {
600 }
601 else if (match_offset == 1) {
603 R1 =
R0;
R0 = match_offset;
604 }
605 else {
607 R2 =
R0;
R0 = match_offset;
608 }
609
610 rundest =
window + window_posn;
611 this_run -= match_length;
612
613
614 if (window_posn >= match_offset) {
615
616 runsrc = rundest - match_offset;
617 } else {
618 runsrc = rundest + (window_size - match_offset);
619 copy_length = match_offset - window_posn;
620 if (copy_length < match_length) {
621 match_length -= copy_length;
622 window_posn += copy_length;
623 while (copy_length-- > 0) *rundest++ = *runsrc++;
625 }
626 }
627 window_posn += match_length;
628
629
630 while (match_length-- > 0) *rundest++ = *runsrc++;
631
632 }
633 }
634 break;
635
637 while (this_run > 0) {
639
641
642 window[window_posn++] = main_element;
643 this_run--;
644 }
645 else {
646
648
652 match_length += length_footer;
653 }
655
656 match_offset = main_element >> 3;
657
658 if (match_offset > 2) {
659
663
666 match_offset += (verbatim_bits << 3);
668 match_offset += aligned_bits;
669 }
670 else if (
extra == 3) {
671
673 match_offset += aligned_bits;
674 }
675 else if (
extra > 0) {
676
678 match_offset += verbatim_bits;
679 }
680 else {
681
682 match_offset = 1;
683 }
684
685
687 }
688 else if (match_offset == 0) {
690 }
691 else if (match_offset == 1) {
693 R1 =
R0;
R0 = match_offset;
694 }
695 else {
697 R2 =
R0;
R0 = match_offset;
698 }
699
700 rundest =
window + window_posn;
701 this_run -= match_length;
702
703
704 if (window_posn >= match_offset) {
705
706 runsrc = rundest - match_offset;
707 } else {
708 runsrc = rundest + (window_size - match_offset);
709 copy_length = match_offset - window_posn;
710 if (copy_length < match_length) {
711 match_length -= copy_length;
712 window_posn += copy_length;
713 while (copy_length-- > 0) *rundest++ = *runsrc++;
715 }
716 }
717 window_posn += match_length;
718
719
720 while (match_length-- > 0) *rundest++ = *runsrc++;
721
722 }
723 }
724 break;
725
729 inpos += this_run; window_posn += this_run;
730 break;
731
732 default:
734 }
735
736 }
737 }
738
740 memcpy(outpos,
window + ((!window_posn) ? window_size : window_posn) - outlen, (
size_t) outlen);
741
746
747
749 if (outlen <= 6 || !pState->intel_started) {
751 }
752 else {
757 LONG abs_off, rel_off;
758
760
761 while (
data < dataend) {
762 if (*
data++ != 0xE8) { curpos++;
continue; }
764 if ((abs_off >= -curpos) && (abs_off < filesize)) {
765 rel_off = (abs_off >= 0) ? abs_off - curpos : abs_off + filesize;
770 }
772 curpos += 5;
773 }
774 }
775 }
777}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define READ_LENGTHS(tbl, first, last)
#define LZX_BLOCKTYPE_ALIGNED
#define LZX_NUM_SECONDARY_LENGTHS
#define LZX_BLOCKTYPE_VERBATIM
#define LZX_NUM_PRIMARY_LENGTHS
#define LZX_BLOCKTYPE_UNCOMPRESSED
static const ULONG position_base[51]
static const UBYTE extra_bits[51]
#define memcpy(s1, s2, n)
static IHTMLWindow2 * window
#define R1(v, w, x, y, z, i)
#define R2(v, w, x, y, z, i)
#define R0(v, w, x, y, z, i)
cab_ULONG block_remaining