470 {
471 UBYTE *endinp = inpos + inlen;
473 UBYTE *runsrc, *rundest;
475
481
482 register ULONG bitbuf;
483 register int bitsleft;
486
487 int togo = outlen, this_run, main_element, aligned_bits;
488 int match_length, length_footer,
extra, verbatim_bits;
489 int copy_length;
490
492
493
499 }
500
501
502 while (togo > 0) {
503
508 }
509
514
519
520
526
529 break;
530
534 if (bitsleft > 16) inpos -= 2;
535 R0 = inpos[0]|(inpos[1]<<8)|(inpos[2]<<16)|(inpos[3]<<24);inpos+=4;
536 R1 = inpos[0]|(inpos[1]<<8)|(inpos[2]<<16)|(inpos[3]<<24);inpos+=4;
537 R2 = inpos[0]|(inpos[1]<<8)|(inpos[2]<<16)|(inpos[3]<<24);inpos+=4;
538 break;
539
540 default:
542 }
543 }
544
545
546 if (inpos > endinp) {
547
548
549
550
551
552
553
554
556 }
557
559 if (this_run > togo) this_run = togo;
560 togo -= this_run;
562
563
564 window_posn &= window_size - 1;
565
566 if ((window_posn + this_run) > window_size)
568
570
572 while (this_run > 0) {
574
576
577 window[window_posn++] = main_element;
578 this_run--;
579 }
580 else {
581
583
587 match_length += length_footer;
588 }
590
591 match_offset = main_element >> 3;
592
593 if (match_offset > 2) {
594
595 if (match_offset != 3) {
598 match_offset =
position_base[match_offset] - 2 + verbatim_bits;
599 }
600 else {
601 match_offset = 1;
602 }
603
604
606 }
607 else if (match_offset == 0) {
609 }
610 else if (match_offset == 1) {
612 R1 =
R0;
R0 = match_offset;
613 }
614 else {
616 R2 =
R0;
R0 = match_offset;
617 }
618
619 rundest =
window + window_posn;
620 this_run -= match_length;
621
622
623 if (window_posn >= match_offset) {
624
625 runsrc = rundest - match_offset;
626 } else {
627 runsrc = rundest + (window_size - match_offset);
628 copy_length = match_offset - window_posn;
629 if (copy_length < match_length) {
630 match_length -= copy_length;
631 window_posn += copy_length;
632 while (copy_length-- > 0) *rundest++ = *runsrc++;
634 }
635 }
636 window_posn += match_length;
637
638
639 while (match_length-- > 0) *rundest++ = *runsrc++;
640
641 }
642 }
643 break;
644
646 while (this_run > 0) {
648
650
651 window[window_posn++] = main_element;
652 this_run--;
653 }
654 else {
655
657
661 match_length += length_footer;
662 }
664
665 match_offset = main_element >> 3;
666
667 if (match_offset > 2) {
668
672
675 match_offset += (verbatim_bits << 3);
677 match_offset += aligned_bits;
678 }
679 else if (
extra == 3) {
680
682 match_offset += aligned_bits;
683 }
684 else if (
extra > 0) {
685
687 match_offset += verbatim_bits;
688 }
689 else {
690
691 match_offset = 1;
692 }
693
694
696 }
697 else if (match_offset == 0) {
699 }
700 else if (match_offset == 1) {
702 R1 =
R0;
R0 = match_offset;
703 }
704 else {
706 R2 =
R0;
R0 = match_offset;
707 }
708
709 rundest =
window + window_posn;
710 this_run -= match_length;
711
712
713 if (window_posn >= match_offset) {
714
715 runsrc = rundest - match_offset;
716 } else {
717 runsrc = rundest + (window_size - match_offset);
718 copy_length = match_offset - window_posn;
719 if (copy_length < match_length) {
720 match_length -= copy_length;
721 window_posn += copy_length;
722 while (copy_length-- > 0) *rundest++ = *runsrc++;
724 }
725 }
726 window_posn += match_length;
727
728
729 while (match_length-- > 0) *rundest++ = *runsrc++;
730
731 }
732 }
733 break;
734
738 inpos += this_run; window_posn += this_run;
739 break;
740
741 default:
743 }
744
745 }
746 }
747
749 memcpy(outpos,
window + ((!window_posn) ? window_size : window_posn) - outlen, (
size_t) outlen);
750
755
756
758 if (outlen <= 6 || !pState->intel_started) {
760 }
761 else {
766 LONG abs_off, rel_off;
767
769
770 while (
data < dataend) {
771 if (*
data++ != 0xE8) { curpos++;
continue; }
773 if ((abs_off >= -curpos) && (abs_off < filesize)) {
774 rel_off = (abs_off >= 0) ? abs_off - curpos : abs_off + filesize;
779 }
781 curpos += 5;
782 }
783 }
784 }
786}
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