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

📄 uncompr.asm

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

	.file	"f:/Study/wincezip/DLL/uncompr.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	.sdata
$SG78687:
	string	"1.2.3\000"
	.type	uncompress#	,@function 
        .global uncompress#
	.type	inflateEnd#	,@function 
        .global inflateEnd#
	.type	inflate#	,@function 
        .global inflate#
	.type	inflateInit_#	,@function 
        .global inflateInit_#
	.section	.pdata
$T78725: data4	@imagerel($LN9@uncompress#)
	data4	@imagerel($LN9@uncompress#+944)
	data4	@imagerel($T78723#)
	.section	.xdata
$T78723: data2	03H
	data2	00H
	data4	03H
	string	"\x0e"		//R1:prologue size 14
	string	"\xe6\x00"	//P7:pfs_when time 0
	string	"\xb1\x25"	//P3:pfs_gr 37
	string	"\xe0\x01\x09"	//P7:mem_stack_f time 1 size 9
	string	"\xe4\x02"	//P7:rp_when time 2
	string	"\xb0\xa4"	//P3:rp_gr 36
	string	"\x61\xa3\x01"	//R3:body size 163
	string	"\x81"		//B1:label_state 1
	string	"\xc0\x05"	//B2:ecount 0 time 5
	string	"\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
// File f:\study\wincezip\dll\uncompr.c
	.section	.text

// Begin code for function: uncompress:
	.proc	uncompress#
	.align 32
stream$	= 16
err$	= 104
$T78720	= 108
$T78721	= 112
$T78722	= 116
dest$	= 128
destLen$	= 136
source$	= 144
sourceLen$	= 152
uncompress: 
// dest$ = r32
// destLen$ = r33
// source$ = r34
// sourceLen$ = r35
// Output regs: r39-r41
$LN9@uncompress:

// 31   : {
// 32   :     z_stream stream;
// 33   :     int err;
// 34   : 
// 35   :     stream.next_in = (Bytef*)source;
// 36   :     stream.avail_in = (uInt)sourceLen;
// 37   :     /* Check for source > 64K on 16-bit machine: */
// 38   :     if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;

 {   .mmi  //R-Addr: 0X00 
	alloc	r37=4, 3, 3, 0				    //31 	cc:0
	adds	sp=-144, sp				    //31 	cc:0, ffffff70H
	mov	r36=b0					    //31 	cc:0
 }
 {   .mmi  //R-Addr: 0X010 
	mov	r38=gp;;				    //31 	cc:0
	ld8.nta	r2=[sp]					    //31 	cc:1
	adds	r31=dest$, sp
 }
 {   .mmi  //R-Addr: 0X020 
	adds	r30=destLen$, sp
	adds	r29=source$, sp
	adds	r28=sourceLen$, sp;;
 }
 {   .mmb  //R-Addr: 0X030 
	st8	[r31]=r32
	st8	[r30]=r33
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X040 
	st8	[r29]=r34
	st4	[r28]=r35
	nop.b	 0;;
 }
 {   .mib  //R-Addr: 0X050 
	adds	r27=source$, sp				    //35 	cc:0
	adds	r25=stream$, sp				    //35 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X060 
	ld8	r26=[r27];;				    //35 	cc:1
	st8	[r25]=r26				    //35 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X070 
	adds	r22=sourceLen$, sp			    //36 	cc:0
	adds	r20=stream$+8, sp			    //36 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X080 
	ld4	r21=[r22];;				    //36 	cc:1
	st4	[r20]=r21				    //36 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X090 
	adds	r19=stream$+8, sp			    //38 	cc:0
	adds	r17=sourceLen$, sp			    //38 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0a0 
	ld4	r18=[r19]				    //38 	cc:1
	ld4	r16=[r17]				    //38 	cc:1
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0b0 
	cmp4.eq.unc p14,p15=r18, r16			    //38 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN6@uncompress#;;		    //38 	cc:2
 }

// 38   :     if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;

 {   .mmb  //R-Addr: 0X0c0 
	mov	r8=-5					    //38 	cc:3
	nop.m	 0
	br.cond.sptk.few $LN7@uncompress#;;		    //38 	cc:3
 }
$LN6@uncompress:

// 39   : 
// 40   :     stream.next_out = dest;
// 41   :     stream.avail_out = (uInt)*destLen;
// 42   :     if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;

 {   .mib  //R-Addr: 0X0d0 
	adds	r15=dest$, sp				    //40 	cc:0
	adds	r10=stream$+16, sp			    //40 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0e0 
	ld8	r11=[r15];;				    //40 	cc:1
	st8	[r10]=r11				    //40 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0f0 
	adds	r9=destLen$, sp				    //41 	cc:0
	adds	r30=stream$+24, sp			    //41 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0100 
	ld8	r8=[r9];;				    //41 	cc:1
	ld4	r31=[r8]				    //41 	cc:3
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0110 
	st4	[r30]=r31;;				    //41 	cc:4
	adds	r27=destLen$, sp			    //42 	cc:0
	adds	r29=stream$+24, sp;;			    //42 	cc:0
 }
 {   .mmb  //R-Addr: 0X0120 
	ld8	r26=[r27]				    //42 	cc:1
	ld4	r28=[r29]				    //42 	cc:1
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0130 
	ld4	r25=[r26];;				    //42 	cc:3
	cmp4.eq.unc p14,p15=r28, r25			    //42 	cc:4
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0140 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN5@uncompress#;;		    //42 	cc:4
 }

// 42   :     if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;

 {   .mmb  //R-Addr: 0X0150 
	mov	r8=-5					    //42 	cc:5
	nop.m	 0
	br.cond.sptk.few $LN7@uncompress#;;		    //42 	cc:5
 }
$LN5@uncompress:

// 43   : 
// 44   :     stream.zalloc = (alloc_func)0;
// 45   :     stream.zfree = (free_func)0;
// 46   : 
// 47   :     err = inflateInit(&stream);
// 48   :     if (err != Z_OK) return err;

 {   .mmi  //R-Addr: 0X0160 
	adds	r22=stream$+48, sp;;			    //44 	cc:0
	st8	[r22]=r0				    //44 	cc:1
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0170 
	adds	r21=stream$+56, sp;;			    //45 	cc:0
	st8	[r21]=r0				    //45 	cc:1
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0180 
	addl	r40=@gprel($SG78687#),gp		    //47 	cc:0
	mov	r41=88					    //47 	cc:0, 00000058H
	adds	r39=stream$, sp				    //47 	cc:0
 }
 {   .mmb  //R-Addr: 0X0190 
	nop.m	 0
	nop.m	 0
	br.call.sptk.few b0=inflateInit_#;;		    //47 	cc:0
 }
 {   .mmi  //R-Addr: 0X01a0 
	adds	r20=$T78720, sp				    //47 	cc:11
	adds	r19=$T78720, sp				    //47 	cc:11
	adds	r17=err$, sp				    //47 	cc:11
 }
 {   .mmi  //R-Addr: 0X01b0 
	mov	gp=r38;;				    //47 	cc:11
	st4	[r20]=r8				    //47 	cc:12
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X01c0 
	ld4	r18=[r19];;				    //47 	cc:12
	st4	[r17]=r18				    //47 	cc:13
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X01d0 
	adds	r16=err$, sp;;				    //48 	cc:0
	ld4	r15=[r16]				    //48 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X01e0 
	cmp4.eq.unc p14,p15=r0, r15			    //48 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN4@uncompress#;;		    //48 	cc:2
 }

// 48   :     if (err != Z_OK) return err;

 {   .mmi  //R-Addr: 0X01f0 
	adds	r11=err$, sp;;				    //48 	cc:3
	ld4	r8=[r11]				    //48 	cc:4
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0200 
	nop.m	 0
	nop.m	 0
	br.cond.sptk.few $LN7@uncompress#;;		    //48 	cc:4
 }
$LN4@uncompress:

// 49   : 
// 50   :     err = inflate(&stream, Z_FINISH);
// 51   :     if (err != Z_STREAM_END) {

 {   .mib  //R-Addr: 0X0210 
	mov	r40=4					    //50 	cc:0
	adds	r39=stream$, sp				    //50 	cc:0
	br.call.sptk.few b0=inflate#;;			    //50 	cc:0
 }
 {   .mmi  //R-Addr: 0X0220 
	adds	r10=$T78721, sp				    //50 	cc:11
	adds	r9=$T78721, sp				    //50 	cc:11
	adds	r31=err$, sp				    //50 	cc:11
 }
 {   .mmi  //R-Addr: 0X0230 
	mov	gp=r38;;				    //50 	cc:11
	st4	[r10]=r8				    //50 	cc:12
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X0240 
	ld4	r8=[r9];;				    //50 	cc:12
	st4	[r31]=r8				    //50 	cc:13
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0250 
	adds	r30=err$, sp;;				    //51 	cc:0
	ld4	r29=[r30]				    //51 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0260 
	cmp4.eq.unc p14,p15=1, r29			    //51 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN3@uncompress#;;		    //51 	cc:2
 }

// 52   :         inflateEnd(&stream);
// 53   :         if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))

 {   .mmb  //R-Addr: 0X0270 
	adds	r39=stream$, sp				    //52 	cc:0
	nop.m	 0
	br.call.sptk.few b0=inflateEnd#;;		    //52 	cc:0
 }
 {   .mmi  //R-Addr: 0X0280 
	mov	gp=r38;;				    //52 	cc:11
	adds	r28=err$, sp				    //53 	cc:0
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0290 
	ld4	r27=[r28];;				    //53 	cc:1
	cmp4.eq.unc p14,p15=2, r27			    //53 	cc:2
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X02a0 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN1@uncompress#;;		    //53 	cc:2
 }

// 53   :         if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))

 {   .mmi  //R-Addr: 0X02b0 
	adds	r26=err$, sp;;				    //53 	cc:3
	ld4	r25=[r26]				    //53 	cc:4
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X02c0 
	cmp4.ne.unc p14,p15=-5, r25			    //53 	cc:5
	nop.m	 0
  (p14)	br.cond.dptk.few $LN2@uncompress#;;		    //53 	cc:5
 }

// 53   :         if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))

 {   .mmi  //R-Addr: 0X02d0 
	adds	r22=stream$+8, sp;;			    //53 	cc:6
	ld4	r21=[r22]				    //53 	cc:7
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X02e0 
	cmp4.ne.unc p14,p15=r0, r21			    //53 	cc:8
	nop.m	 0
  (p14)	br.cond.dptk.few $LN2@uncompress#;;		    //53 	cc:8
 }
$LN1@uncompress:

// 54   :             return Z_DATA_ERROR;

 {   .mmb  //R-Addr: 0X02f0 
	mov	r8=-3					    //54 	cc:0
	nop.m	 0
	br.cond.sptk.few $LN7@uncompress#;;		    //54 	cc:0
 }
$LN2@uncompress:

// 55   :         return err;

 {   .mmi  //R-Addr: 0X0300 
	adds	r20=err$, sp;;				    //55 	cc:0
	ld4	r8=[r20]				    //55 	cc:1
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0310 
	nop.m	 0
	nop.m	 0
	br.cond.sptk.few $LN7@uncompress#;;		    //55 	cc:1
 }
$LN3@uncompress:

// 56   :     }
// 57   :     *destLen = stream.total_out;
// 58   : 
// 59   :     err = inflateEnd(&stream);
// 60   :     return err;

 {   .mib  //R-Addr: 0X0320 
	adds	r19=stream$+28, sp			    //57 	cc:0
	adds	r17=destLen$, sp			    //57 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0330 
	ld4	r18=[r19]				    //57 	cc:1
	ld8	r16=[r17]				    //57 	cc:1
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0340 
	st4	[r16]=r18				    //57 	cc:3
	adds	r39=stream$, sp				    //59 	cc:0
	br.call.sptk.few b0=inflateEnd#;;		    //59 	cc:0
 }
 {   .mmi  //R-Addr: 0X0350 
	adds	r15=$T78722, sp				    //59 	cc:11
	adds	r11=$T78722, sp				    //59 	cc:11
	adds	r9=err$, sp				    //59 	cc:11
 }
 {   .mmi  //R-Addr: 0X0360 
	mov	gp=r38;;				    //59 	cc:11
	st4	[r15]=r8				    //59 	cc:12
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X0370 
	ld4	r10=[r11];;				    //59 	cc:12
	st4	[r9]=r10				    //59 	cc:13
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0380 
	adds	r8=err$, sp;;				    //60 	cc:0
	ld4	r8=[r8]					    //60 	cc:1
	nop.i	 0;;
 }
$LN7@uncompress:

// 61   : }

 {   .mii  //R-Addr: 0X0390 
	adds	sp=144, sp				    //61 	cc:0, 00000090H
	mov.ret	b0=r36;;				    //61 	cc:0
	mov.i	ar.pfs=r37				    //61 	cc:1
 }
 {   .mmb  //R-Addr: 0X03a0 
	nop.m	 0
	nop.m	 0
	br.ret.sptk.many b0;;				    //61 	cc:1
 }
// End code for function:
	.endp	uncompress#

// Total code size for all functions: 0X03b0 bytes (59 bundles)

// END

⌨️ 快捷键说明

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