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

📄 inffast.asm

📁 zlib dll in wince 5.0 parfrom
💻 ASM
📖 第 1 页 / 共 5 页
字号:
// Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.21022.08 

	.file	"f:/Study/wincezip/DLL/inffast.c"
	.radix	D
	.section	.text,	"ax", "progbits"
	.align 32
	.section	.pdata,	"a", "progbits"
	.align 4
	.section	.xdata,	"a", "progbits"
	.align 8
	.section	.text$zz,	"ax", "progbits"
	.align 16
	.section	.pdata,	"a", "progbits"
	.align 4
	.section	.text$zy,	"ax", "progbits"
	.align 16
	.section	.pdata,	"a", "progbits"
	.align 4
	.section	.data,	"wa", "progbits"
	.align 16
	.section	.rdata,	"a", "progbits"
	.align 16
	.section	.bss,	"wa", "nobits"
	.align 16
	.section	.debug$S,	"ax", "progbits"
	.align 16
	.section	$$TYPES,	"ax", "progbits"
	.align 16
	.section	.tls$,	"was", "progbits"
	.align 16
	.section	.sdata,	"was", "progbits"
	.align 16
	.section	.sbss,	"was", "nobits"
	.align 16
	.section	.srdata,	"as", "progbits"
	.align 16
	.section	.rdata,	"a", "progbits"
	.align 16
	.section	.data
$SG78849:
	string	"invalid distance too far back\000"
	.skip 2
$SG78885:
	string	"invalid distance code\000"
	.skip 10
$SG78892:
	string	"invalid literal/length code\000"
	.type	inflate_fast#	,@function 
        .global inflate_fast#
	.section	.pdata
$T78932: data4	@imagerel($LN61@inflate_fa#)
	data4	@imagerel($LN61@inflate_fa#+8768)
	data4	@imagerel($T78930#)
	.section	.xdata
$T78930: data2	03H
	data2	00H
	data4	02H
	string	"\x05"		//R1:prologue size 5
	string	"\xe0\x00\x0a"	//P7:mem_stack_f time 0 size 10
	string	"\x61\xe7\x0c"	//R3:body size 1639
	string	"\x81"		//B1:label_state 1
	string	"\xc0\x02"	//B2:ecount 0 time 2
	string	"\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
// File f:\study\wincezip\dll\inffast.c
	.section	.text

// Begin code for function: inflate_fast:
	.proc	inflate_fast#
	.align 32
beg$	= 0
window$	= 8
last$	= 16
dcode$	= 24
whave$	= 32
in$	= 40
len$	= 48
bits$	= 52
lmask$	= 56
end$	= 64
lcode$	= 72
dist$	= 80
hold$	= 84
wsize$	= 88
this$	= 92
dmask$	= 96
from$	= 104
op$	= 112
out$	= 120
write$	= 128
state$	= 136
$T78928	= 144
$T78929	= 152
strm$	= 160
start$	= 168
inflate_fast: 
// strm$ = r32
// start$ = r33
// Output regs: None
$LN61@inflate_fa:

// 70   : {
// 71   :     struct inflate_state FAR *state;
// 72   :     unsigned char FAR *in;      /* local strm->next_in */
// 73   :     unsigned char FAR *last;    /* while in < last, enough input available */
// 74   :     unsigned char FAR *out;     /* local strm->next_out */
// 75   :     unsigned char FAR *beg;     /* inflate()'s initial strm->next_out */
// 76   :     unsigned char FAR *end;     /* while out < end, enough space available */
// 77   : #ifdef INFLATE_STRICT
// 78   :     unsigned dmax;              /* maximum distance from zlib header */
// 79   : #endif
// 80   :     unsigned wsize;             /* window size or zero if not using window */
// 81   :     unsigned whave;             /* valid bytes in the window */
// 82   :     unsigned write;             /* window write index */
// 83   :     unsigned char FAR *window;  /* allocated sliding window, if wsize != 0 */
// 84   :     unsigned long hold;         /* local strm->hold */
// 85   :     unsigned bits;              /* local strm->bits */
// 86   :     code const FAR *lcode;      /* local strm->lencode */
// 87   :     code const FAR *dcode;      /* local strm->distcode */
// 88   :     unsigned lmask;             /* mask for first level of length codes */
// 89   :     unsigned dmask;             /* mask for first level of distance codes */
// 90   :     code this;                  /* retrieved table entry */
// 91   :     unsigned op;                /* code bits, operation, extra bits, or */
// 92   :                                 /*  window position, window bytes to copy */
// 93   :     unsigned len;               /* match length, unused bytes */
// 94   :     unsigned dist;              /* match distance */
// 95   :     unsigned char FAR *from;    /* where to copy match from */
// 96   : 
// 97   :     /* copy state to local variables */
// 98   :     state = (struct inflate_state FAR *)strm->state;
// 99   :     in = strm->next_in - OFF;
// 100  :     last = in + (strm->avail_in - 5);
// 101  :     out = strm->next_out - OFF;
// 102  :     beg = out - (start - strm->avail_out);
// 103  :     end = out + (strm->avail_out - 257);
// 104  : #ifdef INFLATE_STRICT
// 105  :     dmax = state->dmax;
// 106  : #endif
// 107  :     wsize = state->wsize;
// 108  :     whave = state->whave;
// 109  :     write = state->write;
// 110  :     window = state->window;
// 111  :     hold = state->hold;
// 112  :     bits = state->bits;
// 113  :     lcode = state->lencode;
// 114  :     dcode = state->distcode;
// 115  :     lmask = (1U << state->lenbits) - 1;
// 116  :     dmask = (1U << state->distbits) - 1;

 {   .mmi  //R-Addr: 0X00 
	adds	sp=-160, sp;;				    //70 	cc:0, ffffff60H
	adds	r31=strm$, sp
	adds	r30=start$, sp;;
 }
 {   .mmb  //R-Addr: 0X010 
	st8	[r31]=r32
	st4	[r30]=r33
	nop.b	 0;;
 }
 {   .mib  //R-Addr: 0X020 
	adds	r29=strm$, sp				    //98 	cc:0
	adds	r25=state$, sp				    //98 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X030 
	ld8	r28=[r29];;				    //98 	cc:1
	adds	r27=40, r28				    //98 	cc:2, 00000028H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X040 
	ld8	r26=[r27];;				    //98 	cc:3
	st8	[r25]=r26				    //98 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X050 
	adds	r22=strm$, sp				    //99 	cc:0
	adds	r18=in$, sp				    //99 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X060 
	ld8	r21=[r22];;				    //99 	cc:1
	ld8	r20=[r21]				    //99 	cc:3
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X070 
	adds	r19=-1, r20;;				    //99 	cc:4
	st8	[r18]=r19				    //99 	cc:5
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X080 
	adds	r17=strm$, sp				    //100 	cc:0
	adds	r8=in$, sp				    //100 	cc:0
	adds	r29=last$, sp;;				    //100 	cc:0
 }
 {   .mmb  //R-Addr: 0X090 
	ld8	r16=[r17]				    //100 	cc:1
	ld8	r31=[r8]				    //100 	cc:1
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0a0 
	adds	r15=8, r16;;				    //100 	cc:2
	ld4	r11=[r15]				    //100 	cc:3
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0b0 
	adds	r10=-5, r11;;				    //100 	cc:4
	nop.m	 0
	zxt4	r9=r10;;				    //100 	cc:5
 }
 {   .mmi  //R-Addr: 0X0c0 
	add	r30=r31, r9;;				    //100 	cc:6
	st8	[r29]=r30				    //100 	cc:7
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0d0 
	adds	r28=strm$, sp				    //101 	cc:0
	adds	r21=out$, sp				    //101 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0e0 
	ld8	r27=[r28];;				    //101 	cc:1
	adds	r26=16, r27				    //101 	cc:2
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0f0 
	ld8	r25=[r26];;				    //101 	cc:3
	adds	r22=-1, r25				    //101 	cc:4
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0100 
	st8	[r21]=r22;;				    //101 	cc:5
	adds	r20=strm$, sp				    //102 	cc:0
	adds	r17=start$, sp				    //102 	cc:0
 }
 {   .mib  //R-Addr: 0X0110 
	adds	r9=out$, sp				    //102 	cc:0
	adds	r30=beg$, sp				    //102 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0120 
	ld8	r19=[r20]				    //102 	cc:1
	ld4	r16=[r17]				    //102 	cc:1
	nop.b	 0;;
 }
 {   .mib  //R-Addr: 0X0130 
	ld8	r8=[r9]					    //102 	cc:2
	adds	r18=24, r19				    //102 	cc:2
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0140 
	ld4	r15=[r18];;				    //102 	cc:3
	sub	r11=r16, r15				    //102 	cc:4
	nop.i	 0;;
 }
 {   .mii  //R-Addr: 0X0150 
	nop.m	 0
	zxt4	r10=r11;;				    //102 	cc:5
	sub	r31=r8, r10;;				    //102 	cc:6
 }
 {   .mmi  //R-Addr: 0X0160 
	st8	[r30]=r31;;				    //102 	cc:7
	adds	r29=strm$, sp				    //103 	cc:0
	adds	r21=out$, sp				    //103 	cc:0
 }
 {   .mmi  //R-Addr: 0X0170 
	adds	r18=end$, sp;;				    //103 	cc:0
	ld8	r28=[r29]				    //103 	cc:1
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X0180 
	ld8	r20=[r21];;				    //103 	cc:1
	adds	r27=24, r28				    //103 	cc:2
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0190 
	ld4	r26=[r27];;				    //103 	cc:3
	adds	r25=-257, r26				    //103 	cc:4, fffffeffH
	nop.i	 0;;
 }
 {   .mii  //R-Addr: 0X01a0 
	nop.m	 0
	zxt4	r22=r25;;				    //103 	cc:5
	add	r19=r20, r22;;				    //103 	cc:6
 }
 {   .mmi  //R-Addr: 0X01b0 
	st8	[r18]=r19;;				    //103 	cc:7
	adds	r17=state$, sp				    //107 	cc:0
	adds	r10=wsize$, sp;;			    //107 	cc:0
 }
 {   .mmi  //R-Addr: 0X01c0 
	ld8	r16=[r17];;				    //107 	cc:1
	adds	r15=44, r16				    //107 	cc:2, 0000002cH
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X01d0 
	ld4	r11=[r15];;				    //107 	cc:3
	st4	[r10]=r11				    //107 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X01e0 
	adds	r9=state$, sp				    //108 	cc:0
	adds	r29=whave$, sp				    //108 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01f0 
	ld8	r8=[r9];;				    //108 	cc:1
	adds	r31=48, r8				    //108 	cc:2, 00000030H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0200 
	ld4	r30=[r31];;				    //108 	cc:3
	st4	[r29]=r30				    //108 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0210 
	adds	r28=state$, sp				    //109 	cc:0
	adds	r22=write$, sp				    //109 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0220 
	ld8	r27=[r28];;				    //109 	cc:1
	adds	r26=52, r27				    //109 	cc:2, 00000034H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0230 
	ld4	r25=[r26];;				    //109 	cc:3
	st4	[r22]=r25				    //109 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0240 
	adds	r21=state$, sp				    //110 	cc:0
	adds	r17=window$, sp				    //110 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0250 
	ld8	r20=[r21];;				    //110 	cc:1
	adds	r19=56, r20				    //110 	cc:2, 00000038H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0260 
	ld8	r18=[r19];;				    //110 	cc:3
	st8	[r17]=r18				    //110 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0270 
	adds	r16=state$, sp				    //111 	cc:0
	adds	r9=hold$, sp				    //111 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0280 
	ld8	r15=[r16];;				    //111 	cc:1
	adds	r11=64, r15				    //111 	cc:2, 00000040H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0290 
	ld4	r10=[r11];;				    //111 	cc:3
	st4	[r9]=r10				    //111 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X02a0 
	adds	r8=state$, sp				    //112 	cc:0
	adds	r28=bits$, sp				    //112 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X02b0 
	ld8	r31=[r8];;				    //112 	cc:1
	adds	r30=68, r31				    //112 	cc:2, 00000044H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X02c0 
	ld4	r29=[r30];;				    //112 	cc:3
	st4	[r28]=r29				    //112 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X02d0 
	adds	r27=state$, sp				    //113 	cc:0
	adds	r21=lcode$, sp				    //113 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X02e0 
	ld8	r26=[r27];;				    //113 	cc:1
	adds	r25=88, r26				    //113 	cc:2, 00000058H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X02f0 
	ld8	r22=[r25];;				    //113 	cc:3
	st8	[r21]=r22				    //113 	cc:4
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0300 
	adds	r20=state$, sp				    //114 	cc:0
	adds	r16=dcode$, sp				    //114 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0310 
	ld8	r19=[r20];;				    //114 	cc:1
	adds	r18=96, r19				    //114 	cc:2, 00000060H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0320 
	ld8	r17=[r18];;				    //114 	cc:3
	st8	[r16]=r17				    //114 	cc:4
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0330 
	adds	r15=state$, sp				    //115 	cc:0
	mov	r8=1					    //115 	cc:0
	adds	r29=lmask$, sp;;			    //115 	cc:0
 }
 {   .mmi  //R-Addr: 0X0340 
	ld8	r11=[r15];;				    //115 	cc:1
	adds	r10=104, r11				    //115 	cc:2, 00000068H
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0350 
	ld4	r9=[r10];;				    //115 	cc:3
	nop.m	 0
	shl	r31=r8, r9;;				    //115 	cc:5
 }
 {   .mmi  //R-Addr: 0X0360 
	adds	r30=-1, r31;;				    //115 	cc:8
	st4	[r29]=r30				    //115 	cc:9
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0370 
	adds	r28=state$, sp				    //116 	cc:0
	mov	r22=1					    //116 	cc:0
	adds	r19=dmask$, sp;;			    //116 	cc:0
 }
 {   .mmi  //R-Addr: 0X0380 
	ld8	r27=[r28];;				    //116 	cc:1
	adds	r26=108, r27				    //116 	cc:2, 0000006cH
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0390 
	ld4	r25=[r26];;				    //116 	cc:3
	nop.m	 0
	shl	r21=r22, r25;;				    //116 	cc:5
 }
 {   .mmi  //R-Addr: 0X03a0 
	adds	r20=-1, r21;;				    //116 	cc:8
	st4	[r19]=r20				    //116 	cc:9
	nop.i	 0;;
 }
$LN54@inflate_fa:

// 117  : 
// 118  :     /* decode literals and length/distances until end-of-block or not enough
// 119  :        input data or output space */
// 120  :     do {
// 121  :         if (bits < 15) {

 {   .mmi  //R-Addr: 0X03b0 
	adds	r18=bits$, sp;;				    //121 	cc:0
	ld4	r17=[r18]				    //121 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X03c0 
	cmp4.leu.unc p14,p15=15, r17			    //121 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.many $LN51@inflate_fa#;;		    //121 	cc:2
 }

// 122  :             hold += (unsigned long)(PUP(in)) << bits;
// 123  :             bits += 8;
// 124  :             hold += (unsigned long)(PUP(in)) << bits;
// 125  :             bits += 8;

 {   .mmi  //R-Addr: 0X03d0 
	adds	r16=in$, sp				    //122 	cc:0
	adds	r10=in$, sp				    //122 	cc:0
	adds	r9=in$, sp				    //122 	cc:0
 }
 {   .mmi  //R-Addr: 0X03e0 
	adds	r30=bits$, sp				    //122 	cc:0
	adds	r27=hold$, sp				    //122 	cc:0
	adds	r22=hold$, sp;;				    //122 	cc:0
 }
 {   .mmi  //R-Addr: 0X03f0 
	ld8	r15=[r16];;				    //122 	cc:1
	adds	r11=1, r15				    //122 	cc:2
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0400 
	st8	[r10]=r11				    //122 	cc:3
	ld8	r8=[r9]					    //122 	cc:3
	nop.b	 0
 }
 {   .mmi  //R-Addr: 0X0410 

⌨️ 快捷键说明

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