⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inftrees.asm

📁 zlib dll in wince 5.0 parfrom
💻 ASM
📖 第 1 页 / 共 5 页
字号:
// 136  :     }

 {   .mmb  //R-Addr: 0X0700 
	nop.m	 0
	nop.m	 0
	br.cond.sptk.few $LN46@inflate_ta#;;		    //136 	cc:0
 }
$LN45@inflate_ta:

// 137  :     if (left > 0 && (type == CODES || max != 1))

 {   .mmi  //R-Addr: 0X0710 
	adds	r22=left$, sp;;				    //137 	cc:0
	ld4	r21=[r22]				    //137 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0720 
	cmp4.ge.unc p14,p15=r0, r21			    //137 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN43@inflate_ta#;;		    //137 	cc:2
 }

// 137  :     if (left > 0 && (type == CODES || max != 1))

 {   .mmi  //R-Addr: 0X0730 
	adds	r20=type$, sp;;				    //137 	cc:3
	ld4	r19=[r20]				    //137 	cc:4
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0740 
	cmp4.eq.unc p14,p15=r0, r19			    //137 	cc:5
	nop.m	 0
  (p14)	br.cond.dptk.few $LN42@inflate_ta#;;		    //137 	cc:5
 }

// 137  :     if (left > 0 && (type == CODES || max != 1))

 {   .mmi  //R-Addr: 0X0750 
	adds	r18=max$, sp;;				    //137 	cc:6
	ld4	r17=[r18]				    //137 	cc:7
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0760 
	cmp4.eq.unc p14,p15=1, r17			    //137 	cc:8
	nop.m	 0
  (p14)	br.cond.dptk.few $LN43@inflate_ta#;;		    //137 	cc:8
 }
$LN42@inflate_ta:

// 138  :         return -1;                      /* incomplete set */

 {   .mmb  //R-Addr: 0X0770 
	mov	r8=-1					    //138 	cc:0
	nop.m	 0
	br.cond.sptk.few $LN65@inflate_ta#;;		    //138 	cc:0
 }
$LN43@inflate_ta:

// 139  : 
// 140  :     /* generate offsets into symbol table for each length for sorting */
// 141  :     offs[1] = 0;
// 142  :     for (len = 1; len < MAXBITS; len++)

 {   .mmi  //R-Addr: 0X0780 
	adds	r16=offs$+2, sp;;			    //141 	cc:0
	st2	[r16]=r0				    //141 	cc:1
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0790 
	mov	r15=1					    //142 	cc:0
	adds	r11=len$, sp				    //142 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X07a0 
	st4	[r11]=r15				    //142 	cc:1
	nop.m	 0
	br.cond.sptk.few $LN41@inflate_ta#;;		    //142 	cc:1
 }
$LN40@inflate_ta:

// 142  :     for (len = 1; len < MAXBITS; len++)

 {   .mib  //R-Addr: 0X07b0 
	adds	r10=len$, sp				    //142 	cc:0
	adds	r31=len$, sp				    //142 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X07c0 
	ld4	r9=[r10];;				    //142 	cc:1
	adds	r8=1, r9				    //142 	cc:2
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X07d0 
	st4	[r31]=r8				    //142 	cc:3
	nop.m	 0
	nop.b	 0;;
 }
$LN41@inflate_ta:

// 142  :     for (len = 1; len < MAXBITS; len++)

 {   .mmi  //R-Addr: 0X07e0 
	adds	r30=len$, sp;;				    //142 	cc:0
	ld4	r29=[r30]				    //142 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X07f0 
	cmp4.leu.unc p14,p15=15, r29			    //142 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN39@inflate_ta#;;		    //142 	cc:2
 }

// 143  :         offs[len + 1] = offs[len] + count[len];

 {   .mmi  //R-Addr: 0X0800 
	adds	r28=len$, sp				    //143 	cc:0
	adds	r20=len$, sp				    //143 	cc:0
	adds	r10=len$, sp				    //143 	cc:0
 }
 {   .mmi  //R-Addr: 0X0810 
	adds	r25=offs$, sp				    //143 	cc:0
	adds	r17=count$, sp				    //143 	cc:0
	adds	r29=offs$, sp;;				    //143 	cc:0
 }
 {   .mmb  //R-Addr: 0X0820 
	ld4	r27=[r28]				    //143 	cc:1
	ld4	r19=[r20]				    //143 	cc:1
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X0830 
	ld4	r9=[r10]				    //143 	cc:2
	shl	r26=r27, 1				    //143 	cc:2
	shl	r18=r19, 1;;				    //143 	cc:2
 }
 {   .mmi  //R-Addr: 0X0840 
	adds	r8=1, r9				    //143 	cc:3
	add	r22=r25, r26				    //143 	cc:3
	add	r16=r17, r18;;				    //143 	cc:3
 }
 {   .mmi  //R-Addr: 0X0850 
	ld2	r21=[r22]				    //143 	cc:4
	ld2	r15=[r16]				    //143 	cc:4
	zxt4	r31=r8;;				    //143 	cc:4
 }
 {   .mii  //R-Addr: 0X0860 
	add	r11=r21, r15				    //143 	cc:5
	shl	r30=r31, 1;;				    //143 	cc:5
	add	r28=r29, r30;;				    //143 	cc:6
 }
 {   .mmb  //R-Addr: 0X0870 
	st2	[r28]=r11				    //143 	cc:7
	nop.m	 0
	br.cond.sptk.few $LN40@inflate_ta#;;		    //143 	cc:7
 }
$LN39@inflate_ta:

// 144  : 
// 145  :     /* sort symbols by length, by symbol order within each length */
// 146  :     for (sym = 0; sym < codes; sym++)

 {   .mmi  //R-Addr: 0X0880 
	adds	r27=sym$, sp;;				    //146 	cc:0
	st4	[r27]=r0				    //146 	cc:1
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0890 
	nop.m	 0
	nop.m	 0
	br.cond.sptk.few $LN38@inflate_ta#;;		    //146 	cc:1
 }
$LN37@inflate_ta:

// 146  :     for (sym = 0; sym < codes; sym++)

 {   .mib  //R-Addr: 0X08a0 
	adds	r26=sym$, sp				    //146 	cc:0
	adds	r21=sym$, sp				    //146 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X08b0 
	ld4	r25=[r26];;				    //146 	cc:1
	adds	r22=1, r25				    //146 	cc:2
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X08c0 
	st4	[r21]=r22				    //146 	cc:3
	nop.m	 0
	nop.b	 0;;
 }
$LN38@inflate_ta:

// 146  :     for (sym = 0; sym < codes; sym++)

 {   .mib  //R-Addr: 0X08d0 
	adds	r20=sym$, sp				    //146 	cc:0
	adds	r18=codes$, sp				    //146 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X08e0 
	ld4	r19=[r20]				    //146 	cc:1
	ld4	r17=[r18]				    //146 	cc:1
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X08f0 
	cmp4.geu.unc p14,p15=r19, r17			    //146 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN36@inflate_ta#;;		    //146 	cc:2
 }

// 147  :         if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym;

 {   .mib  //R-Addr: 0X0900 
	adds	r16=sym$, sp				    //147 	cc:0
	adds	r10=lens$, sp				    //147 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0910 
	ld4	r15=[r16]				    //147 	cc:1
	ld8	r9=[r10]				    //147 	cc:1
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X0920 
	nop.m	 0
	shl	r11=r15, 1;;				    //147 	cc:2
	add	r8=r9, r11;;				    //147 	cc:3
 }
 {   .mmi  //R-Addr: 0X0930 
	ld2	r31=[r8];;				    //147 	cc:4
	cmp4.eq.unc p14,p15=r0, r31			    //147 	cc:5
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0940 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN35@inflate_ta#;;		    //147 	cc:5
 }

// 147  :         if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym;

 {   .mmi  //R-Addr: 0X0950 
	adds	r28=sym$, sp				    //147 	cc:6
	adds	r25=lens$, sp				    //147 	cc:6
	adds	r18=offs$, sp				    //147 	cc:6
 }
 {   .mmi  //R-Addr: 0X0960 
	adds	r11=work$, sp				    //147 	cc:6
	adds	r30=sym$, sp				    //147 	cc:6
	adds	r8=sym$, sp;;				    //147 	cc:6
 }
 {   .mmb  //R-Addr: 0X0970 
	ld4	r27=[r28]				    //147 	cc:7
	ld8	r22=[r25]				    //147 	cc:7
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0980 
	ld8	r10=[r11]				    //147 	cc:8
	ld4	r29=[r30]				    //147 	cc:8
	shl	r26=r27, 1;;				    //147 	cc:8
 }
 {   .mib  //R-Addr: 0X0990 
	add	r21=r22, r26				    //147 	cc:9
	adds	r22=offs$, sp				    //147 	cc:9
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X09a0 
	ld2	r20=[r21];;				    //147 	cc:10
	nop.m	 0
	shl	r19=r20, 1;;				    //147 	cc:11
 }
 {   .mib  //R-Addr: 0X09b0 
	add	r17=r18, r19				    //147 	cc:12
	adds	r18=sym$, sp				    //147 	cc:12
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X09c0 
	ld2	r16=[r17];;				    //147 	cc:13
	nop.m	 0
	shl	r15=r16, 1;;				    //147 	cc:14
 }
 {   .mib  //R-Addr: 0X09d0 
	add	r9=r10, r15				    //147 	cc:15
	adds	r15=lens$, sp				    //147 	cc:15
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X09e0 
	st2	[r9]=r29				    //147 	cc:16
	ld4	r31=[r8]				    //147 	cc:16
	adds	r29=lens$, sp				    //147 	cc:16
 }
 {   .mmi  //R-Addr: 0X09f0 
	ld4	r17=[r18];;				    //147 	cc:16
	ld8	r28=[r29]				    //147 	cc:17
	shl	r30=r31, 1				    //147 	cc:17
 }
 {   .mii  //R-Addr: 0X0a00 
	ld8	r11=[r15]				    //147 	cc:17
	shl	r16=r17, 1				    //147 	cc:17
	adds	r31=offs$, sp;;				    //147 	cc:17
 }
 {   .mib  //R-Addr: 0X0a10 
	add	r27=r28, r30				    //147 	cc:18
	add	r10=r11, r16				    //147 	cc:18
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0a20 
	ld2	r26=[r27]				    //147 	cc:19
	ld2	r9=[r10]				    //147 	cc:19
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X0a30 
	nop.m	 0
	shl	r25=r26, 1				    //147 	cc:20
	shl	r8=r9, 1;;				    //147 	cc:20
 }
 {   .mib  //R-Addr: 0X0a40 
	add	r21=r22, r25				    //147 	cc:21
	add	r30=r31, r8				    //147 	cc:21
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0a50 
	ld2	r20=[r21];;				    //147 	cc:22
	adds	r19=1, r20				    //147 	cc:23
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0a60 
	st2	[r30]=r19				    //147 	cc:24
	nop.m	 0
	nop.b	 0;;
 }
$LN35@inflate_ta:

// 148  : 
// 149  :     /*
// 150  :        Create and fill in decoding tables.  In this loop, the table being
// 151  :        filled is at next and has curr index bits.  The code being used is huff
// 152  :        with length len.  That code is converted to an index by dropping drop
// 153  :        bits off of the bottom.  For codes where len is less than drop + curr,
// 154  :        those top drop + curr - len bits are incremented through all values to
// 155  :        fill the table with replicated entries.
// 156  : 
// 157  :        root is the number of index bits for the root table.  When len exceeds
// 158  :        root, sub-tables are created pointed to by the root entry with an index
// 159  :        of the low root bits of huff.  This is saved in low to check for when a
// 160  :        new sub-table should be started.  drop is zero when the root table is
// 161  :        being filled, and drop is root when sub-tables are being filled.
// 162  : 
// 163  :        When a new sub-table is needed, it is necessary to look ahead in the
// 164  :        code lengths to determine what size sub-table is needed.  The length
// 165  :        counts are used for this, and so count[] is decremented as codes are
// 166  :        entered in the tables.
// 167  : 
// 168  :        used keeps track of how many table entries have been allocated from the
// 169  :        provided *table space.  It is checked when a LENS table is being made
// 170  :        against the space in *table, ENOUGH, minus the maximum space needed by
// 171  :        the worst case distance code, MAXD.  This should never happen, but the
// 172  :        sufficiency of ENOUGH has not been proven exhaustively, hence the check.
// 173  :        This assumes that when type == LENS, bits == 9.
// 174  : 
// 175  :        sym increments through all symbols, and the loop terminates when
// 176  :        all codes of length max, i.e. all codes, have been processed.  This
// 177  :        routine permits incomplete codes, so another loop after this one fills
// 178  :        in the rest of the decoding tables with invalid code markers.
// 179  :      */
// 180  : 
// 181  :     /* set up for code type */
// 182  :     switch (type) {

 {   .mmb  //R-Addr: 0X0a70 
	nop.m	 0
	nop.m	 0
	br.cond.sptk.few $LN37@inflate_ta#;;		    //182 	cc:0
 }
$LN36@inflate_ta:

// 182  :     switch (type) {

 {   .mmi  //R-Addr: 0X0a80 
	adds	r29=type$, sp				    //182 	cc:0
	adds	r27=$T78873, sp				    //182 	cc:0
	adds	r26=$T78873, sp;;			    //182 	cc:0
 }
 {   .mmi  //R-Addr: 0X0a90 
	ld4	r28=[r29];;				    //182 	cc:1
	st4	[r27]=r28				    //182 	cc:2
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X0aa0 
	ld4	r25=[r26];;				    //182 	cc:2
	cmp4.eq.unc p14,p15=r0, r25			    //182 	cc:3
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0ab0 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN32@inflate_ta#;;		    //182 	cc:3
 }

// 182  :     switch (type) {

 {   .mmi  //R-Addr: 0X0ac0 
	adds	r22=$T78873, sp;;			    //182 	cc:4
	ld4	r21=[r22]				    //182 	cc:5
	nop.i	 0;;
 }
 {   .mbb  //R-Addr: 0X0ad0 
	cmp4.eq.unc p14,p15=1, r21			    //182 	cc:6
  (p14)	br.cond.dptk.many $LN31@inflate_ta#		    //182 	cc:6
	br.cond.sptk.many $LN30@inflate_ta#;;		    //182 	cc:6
 }
$LN32@inflate_ta:

// 183  :     case CODES:
// 184  :         base = extra = work;    /* dummy value--not used */
// 185  :         end = 19;
// 186  :         break;

 {   .mmi  //R-Addr: 0X0ae0 
	adds	r20=work$, sp				    //184 	cc:0
	adds	r18=extra$, sp				    //184 	cc:0
	adds	r17=extra$, sp				    //184 	cc:0
 }
 {   .mmi  //R-Addr: 0X0af0 
	adds	r15=base$, sp;;				    //184 	cc:0
	ld8	r19=[r20]				    //184 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0b00 
	st8	[r18]=r19				    //184 	cc:2
	ld8	r16=[r17]				    //184 	cc:2
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0b10 
	st8	[r15]=r16;;				    //184 	cc:3
	mov	r11=19					    //185 	cc:0
	adds	r10=end$, sp;;				    //185 	cc:0
 }
 {   .mmb  //R-Addr: 0X0b20 
	st4	[r10]=r11				    //185 	cc:2
	nop.m	 0
	br.cond.sptk.many $LN33@inflate_ta#;;		    //186 	cc:0
 }
$LN31@inflate_ta:

// 187  :     case LENS:
// 188  :         base = lbase;
// 189  :         base -= 257;
// 190  :         extra = lext;
// 191  :         extra -= 257;
// 192  :         end = 256;
// 193  :         break;

 {   .mib  //R-Addr: 0X0b30 
	addl	r9=@ltoff(?lbase@?1??inflate_table@@9@9#),gp //188 	cc:0
	adds	r31=base$, sp				    //188 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0b40 
	ld8	r8=[r9];;				    //188 	cc:1
	st8	[r31]=r8				    //188 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0b50 
	adds	r30=base$, sp				    //189 	cc:0
	adds	r27=base$, sp				    //189 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0b60 
	ld8	r29=[r30];;				    //189 	cc:1
	adds	r28=-514, r29				    //189 	cc:2, fffffdfeH
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0b70 
	st8	[r27]=r28;;				    //189 	cc:3
	addl	r26=@ltoff(?lext@?1??inflate_table@@9@9#),gp //190 	cc:0
	adds	r22=extra$, sp;;			    //190 	cc:0
 }
 {   .mmi  //R-Addr: 0X0b80 
	ld8	r25=[r26];;				    //190 	cc:1
	st8	[r22]=r25				    //190 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0b90 
	adds	r21=extra$, sp				    //191 	cc:0
	adds	r18=extra$, sp				    //191 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0ba0 
	ld8	r20=[r21];;				    //191 	cc:1
	adds	r19=-514, r20				    //191 	cc:2, fffffdfeH
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0bb0 
	st8	[r18]=r19;;				    //191 	cc:3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -