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

📄 compress.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/compress.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	compress2#	,@function 
        .global compress2#
	.type	deflateEnd#	,@function 
        .global deflateEnd#
	.type	deflate#	,@function 
        .global deflate#
	.type	deflateInit_#	,@function 
        .global deflateInit_#
	.section	.pdata
$T78735: data4	@imagerel($LN8@compress2#)
	data4	@imagerel($LN8@compress2#+880)
	data4	@imagerel($T78733#)
	.section	.xdata
$T78733: data2	03H
	data2	00H
	data4	03H
	string	"\x10"		//R1:prologue size 16
	string	"\xe6\x00"	//P7:pfs_when time 0
	string	"\xb1\x26"	//P3:pfs_gr 38
	string	"\xe0\x01\x0a"	//P7:mem_stack_f time 1 size 10
	string	"\xe4\x02"	//P7:rp_when time 2
	string	"\xb0\xa5"	//P3:rp_gr 37
	string	"\x61\x95\x01"	//R3:body size 149
	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\compress.c
	.section	.text

// Begin code for function: compress2:
	.proc	compress2#
	.align 32
stream$	= 16
err$	= 104
$T78729	= 108
$T78730	= 112
$T78731	= 116
$T78732	= 120
dest$	= 128
destLen$	= 136
source$	= 144
sourceLen$	= 152
level$	= 160
compress2: 
// dest$ = r32
// destLen$ = r33
// source$ = r34
// sourceLen$ = r35
// level$ = r36
// Output regs: r40-r43
$LN8@compress2:

// 28   : {
// 29   :     z_stream stream;
// 30   :     int err;
// 31   : 
// 32   :     stream.next_in = (Bytef*)source;
// 33   :     stream.avail_in = (uInt)sourceLen;
// 34   : #ifdef MAXSEG_64K
// 35   :     /* Check for source > 64K on 16-bit machine: */
// 36   :     if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
// 37   : #endif
// 38   :     stream.next_out = dest;
// 39   :     stream.avail_out = (uInt)*destLen;
// 40   :     if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;

 {   .mmi  //R-Addr: 0X00 
	alloc	r38=5, 3, 4, 0				    //28 	cc:0
	adds	sp=-160, sp				    //28 	cc:0, ffffff60H
	mov	r37=b0					    //28 	cc:0
 }
 {   .mmi  //R-Addr: 0X010 
	mov	r39=gp;;				    //28 	cc:0
	ld8.nta	r2=[sp]					    //28 	cc:1
	adds	r31=dest$, sp
 }
 {   .mmi  //R-Addr: 0X020 
	adds	r30=destLen$, sp
	adds	r29=source$, sp
	adds	r28=sourceLen$, sp;;
 }
 {   .mmi  //R-Addr: 0X030 
	st8	[r31]=r32
	st8	[r30]=r33
	adds	r27=level$, sp;;
 }
 {   .mmb  //R-Addr: 0X040 
	st8	[r29]=r34
	st4	[r28]=r35
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X050 
	st4	[r27]=r36;;
	adds	r26=source$, sp				    //32 	cc:0
	adds	r22=stream$, sp;;			    //32 	cc:0
 }
 {   .mmi  //R-Addr: 0X060 
	ld8	r25=[r26];;				    //32 	cc:1
	st8	[r22]=r25				    //32 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X070 
	adds	r21=sourceLen$, sp			    //33 	cc:0
	adds	r19=stream$+8, sp			    //33 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X080 
	ld4	r20=[r21];;				    //33 	cc:1
	st4	[r19]=r20				    //33 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X090 
	adds	r18=dest$, sp				    //38 	cc:0
	adds	r16=stream$+16, sp			    //38 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0a0 
	ld8	r17=[r18];;				    //38 	cc:1
	st8	[r16]=r17				    //38 	cc:2
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0b0 
	adds	r15=destLen$, sp			    //39 	cc:0
	adds	r9=stream$+24, sp			    //39 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0c0 
	ld8	r11=[r15];;				    //39 	cc:1
	ld4	r10=[r11]				    //39 	cc:3
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0d0 
	st4	[r9]=r10;;				    //39 	cc:4
	adds	r30=destLen$, sp			    //40 	cc:0
	adds	r8=stream$+24, sp;;			    //40 	cc:0
 }
 {   .mmb  //R-Addr: 0X0e0 
	ld8	r29=[r30]				    //40 	cc:1
	ld4	r31=[r8]				    //40 	cc:1
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0f0 
	ld4	r28=[r29];;				    //40 	cc:3
	cmp4.eq.unc p14,p15=r31, r28			    //40 	cc:4
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0100 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN3@compress2#;;		    //40 	cc:4
 }

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

 {   .mmb  //R-Addr: 0X0110 
	mov	r8=-5					    //40 	cc:5
	nop.m	 0
	br.cond.sptk.few $LN4@compress2#;;		    //40 	cc:5
 }
$LN3@compress2:

// 41   : 
// 42   :     stream.zalloc = (alloc_func)0;
// 43   :     stream.zfree = (free_func)0;
// 44   :     stream.opaque = (voidpf)0;
// 45   : 
// 46   :     err = deflateInit(&stream, level);
// 47   :     if (err != Z_OK) return err;

 {   .mmi  //R-Addr: 0X0120 
	adds	r27=stream$+48, sp;;			    //42 	cc:0
	st8	[r27]=r0				    //42 	cc:1
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0130 
	adds	r26=stream$+56, sp;;			    //43 	cc:0
	st8	[r26]=r0				    //43 	cc:1
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0140 
	adds	r25=stream$+64, sp;;			    //44 	cc:0
	st8	[r25]=r0				    //44 	cc:1
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0150 
	adds	r22=level$, sp				    //46 	cc:0
	addl	r42=@gprel($SG78687#),gp		    //46 	cc:0
	mov	r43=88;;				    //46 	cc:0, 00000058H
 }
 {   .mmb  //R-Addr: 0X0160 
	adds	r40=stream$, sp				    //46 	cc:1
	ld4	r41=[r22]				    //46 	cc:1
	br.call.sptk.few b0=deflateInit_#;;		    //46 	cc:1
 }
 {   .mmi  //R-Addr: 0X0170 
	adds	r21=$T78729, sp				    //46 	cc:12
	adds	r20=$T78729, sp				    //46 	cc:12
	adds	r18=err$, sp				    //46 	cc:12
 }
 {   .mmi  //R-Addr: 0X0180 
	mov	gp=r39;;				    //46 	cc:12
	st4	[r21]=r8				    //46 	cc:13
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X0190 
	ld4	r19=[r20];;				    //46 	cc:13
	st4	[r18]=r19				    //46 	cc:14
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X01a0 
	adds	r17=err$, sp;;				    //47 	cc:0
	ld4	r16=[r17]				    //47 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X01b0 
	cmp4.eq.unc p14,p15=r0, r16			    //47 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN2@compress2#;;		    //47 	cc:2
 }

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

 {   .mmi  //R-Addr: 0X01c0 
	adds	r15=err$, sp;;				    //47 	cc:3
	ld4	r8=[r15]				    //47 	cc:4
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X01d0 
	nop.m	 0
	nop.m	 0
	br.cond.sptk.few $LN4@compress2#;;		    //47 	cc:4
 }
$LN2@compress2:

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

 {   .mib  //R-Addr: 0X01e0 
	mov	r41=4					    //49 	cc:0
	adds	r40=stream$, sp				    //49 	cc:0
	br.call.sptk.few b0=deflate#;;			    //49 	cc:0
 }
 {   .mmi  //R-Addr: 0X01f0 
	adds	r11=$T78730, sp				    //49 	cc:11
	adds	r10=$T78730, sp				    //49 	cc:11
	mov	gp=r39;;				    //49 	cc:11
 }
 {   .mmi  //R-Addr: 0X0200 
	st4	[r11]=r8				    //49 	cc:12
	ld4	r9=[r10]				    //49 	cc:12
	adds	r8=err$, sp;;				    //49 	cc:12
 }
 {   .mmi  //R-Addr: 0X0210 
	st4	[r8]=r9;;				    //49 	cc:13
	adds	r31=err$, sp				    //50 	cc:0
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0220 
	ld4	r30=[r31];;				    //50 	cc:1
	cmp4.eq.unc p14,p15=1, r30			    //50 	cc:2
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0230 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN1@compress2#;;		    //50 	cc:2
 }

// 51   :         deflateEnd(&stream);
// 52   :         return err == Z_OK ? Z_BUF_ERROR : err;

 {   .mmb  //R-Addr: 0X0240 
	adds	r40=stream$, sp				    //51 	cc:0
	nop.m	 0
	br.call.sptk.few b0=deflateEnd#;;		    //51 	cc:0
 }
 {   .mmi  //R-Addr: 0X0250 
	mov	gp=r39;;				    //51 	cc:11
	adds	r29=err$, sp				    //52 	cc:0
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0260 
	ld4	r28=[r29];;				    //52 	cc:1
	cmp4.ne.unc p14,p15=r0, r28			    //52 	cc:2
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0270 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN6@compress2#;;		    //52 	cc:2
 }

// 52   :         return err == Z_OK ? Z_BUF_ERROR : err;

 {   .mib  //R-Addr: 0X0280 
	mov	r27=-5					    //52 	cc:3
	adds	r26=$T78732, sp				    //52 	cc:3
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0290 
	st4	[r26]=r27				    //52 	cc:4
	nop.m	 0
	br.cond.sptk.few $LN7@compress2#;;		    //52 	cc:4
 }
$LN6@compress2:

// 52   :         return err == Z_OK ? Z_BUF_ERROR : err;

 {   .mib  //R-Addr: 0X02a0 
	adds	r25=err$, sp				    //52 	cc:0
	adds	r21=$T78732, sp				    //52 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X02b0 
	ld4	r22=[r25];;				    //52 	cc:1
	st4	[r21]=r22				    //52 	cc:2
	nop.i	 0;;
 }
$LN7@compress2:

// 52   :         return err == Z_OK ? Z_BUF_ERROR : err;

 {   .mmi  //R-Addr: 0X02c0 
	adds	r20=$T78732, sp;;			    //52 	cc:0
	ld4	r8=[r20]				    //52 	cc:1
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X02d0 
	nop.m	 0
	nop.m	 0
	br.cond.sptk.few $LN4@compress2#;;		    //52 	cc:1
 }
$LN1@compress2:

// 53   :     }
// 54   :     *destLen = stream.total_out;
// 55   : 
// 56   :     err = deflateEnd(&stream);
// 57   :     return err;

 {   .mib  //R-Addr: 0X02e0 
	adds	r19=stream$+28, sp			    //54 	cc:0
	adds	r17=destLen$, sp			    //54 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X02f0 
	ld4	r18=[r19]				    //54 	cc:1
	ld8	r16=[r17]				    //54 	cc:1
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0300 
	st4	[r16]=r18				    //54 	cc:3
	adds	r40=stream$, sp				    //56 	cc:0
	br.call.sptk.few b0=deflateEnd#;;		    //56 	cc:0
 }
 {   .mmi  //R-Addr: 0X0310 
	adds	r15=$T78731, sp				    //56 	cc:11
	adds	r11=$T78731, sp				    //56 	cc:11
	adds	r9=err$, sp				    //56 	cc:11
 }
 {   .mmi  //R-Addr: 0X0320 
	mov	gp=r39;;				    //56 	cc:11
	st4	[r15]=r8				    //56 	cc:12
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X0330 
	ld4	r10=[r11];;				    //56 	cc:12
	st4	[r9]=r10				    //56 	cc:13
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0340 
	adds	r8=err$, sp;;				    //57 	cc:0
	ld4	r8=[r8]					    //57 	cc:1
	nop.i	 0;;
 }
$LN4@compress2:

// 58   : }

 {   .mii  //R-Addr: 0X0350 
	adds	sp=160, sp				    //58 	cc:0, 000000a0H
	mov.ret	b0=r37;;				    //58 	cc:0
	mov.i	ar.pfs=r38				    //58 	cc:1
 }
 {   .mmb  //R-Addr: 0X0360 
	nop.m	 0
	nop.m	 0
	br.ret.sptk.many b0;;				    //58 	cc:1
 }
// End code for function:
	.endp	compress2#
	.type	compress#	,@function 
        .global compress#
	.section	.pdata
$T78742: data4	@imagerel($LN3@compress#)
	data4	@imagerel($LN3@compress#+208)
	data4	@imagerel($T78740#)
	.section	.xdata
	.skip 8
$T78740: data2	03H
	data2	00H
	data4	02H
	string	"\x0e"		//R1:prologue size 14
	string	"\xe6\x00"	//P7:pfs_when time 0
	string	"\xb1\x25"	//P3:pfs_gr 37
	string	"\xe4\x01"	//P7:rp_when time 1
	string	"\xb0\xa4"	//P3:rp_gr 36
	string	"\xe0\x02\x03"	//P7:mem_stack_f time 2 size 3
	string	"\x39"		//R1:body size size 25
	string	"\x81"		//B1:label_state 1
	string	"\xc0\x05"	//B2:ecount 0 time 5
// Function compile flags: /Odtp
	.section	.text

// Begin code for function: compress:
	.proc	compress#
	.align 32
$T78739	= 16
dest$	= 32
destLen$	= 40
source$	= 48
sourceLen$	= 56
compress: 
// dest$ = r32
// destLen$ = r33
// source$ = r34
// sourceLen$ = r35
// Output regs: r38-r42
$LN3@compress:

// 67   : {
// 68   :     return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
// 69   : }

 {   .mii  //R-Addr: 0X00 
	alloc	r37=4, 2, 5, 0				    //67 	cc:0
	mov	r36=b0					    //67 	cc:0
	adds	sp=-48, sp;;				    //67 	cc:0, ffffffd0H
 }
 {   .mmi  //R-Addr: 0X010 
	ld8.nta	r2=[sp]					    //67 	cc:1
	adds	r31=dest$, sp
	adds	r30=destLen$, sp
 }
 {   .mib  //R-Addr: 0X020 
	adds	r29=source$, sp
	adds	r28=sourceLen$, sp
	nop.b	 0;;
 }
 {   .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;;
 }
 {   .mmi  //R-Addr: 0X050 
	adds	r27=sourceLen$, sp			    //68 	cc:0
	adds	r26=source$, sp				    //68 	cc:0
	adds	r25=destLen$, sp			    //68 	cc:0
 }
 {   .mib  //R-Addr: 0X060 
	adds	r22=dest$, sp				    //68 	cc:0
	mov	r42=-1					    //68 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X070 
	ld4	r41=[r27]				    //68 	cc:1
	ld8	r40=[r26]				    //68 	cc:1
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X080 
	ld8	r39=[r25]				    //68 	cc:2
	ld8	r38=[r22]				    //68 	cc:2
	br.call.sptk.few b0=compress2#;;		    //68 	cc:2
 }
 {   .mib  //R-Addr: 0X090 
	adds	r21=$T78739, sp				    //68 	cc:13
	adds	r20=$T78739, sp				    //68 	cc:13
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0a0 
	st4	[r21]=r8				    //68 	cc:14
	ld4	r8=[r20]				    //68 	cc:14
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X0b0 
	adds	sp=48, sp				    //69 	cc:0, 00000030H
	mov.ret	b0=r36;;				    //69 	cc:0
	mov.i	ar.pfs=r37				    //69 	cc:1
 }
 {   .mmb  //R-Addr: 0X0c0 
	nop.m	 0
	nop.m	 0
	br.ret.sptk.many b0;;				    //69 	cc:1
 }
// End code for function:
	.endp	compress#
	.type	compressBound#	,@function 
        .global compressBound#
// Function compile flags: /Odtp
	.section	.text

// Begin code for function: compressBound:
	.proc	compressBound#
	.align 32
sourceLen$	= 0
compressBound: 
// sourceLen$ = r32
// Output regs: None

// 78   :     return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + 11;
// 79   : }

 {   .mmi  //R-Addr: 0X00 
	adds	r31=sourceLen$, sp;;
	st4	[r31]=r32
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X010 
	adds	r30=sourceLen$, sp			    //78 	cc:0
	adds	r27=sourceLen$, sp			    //78 	cc:0
	adds	r22=sourceLen$, sp;;			    //78 	cc:0
 }
 {   .mmb  //R-Addr: 0X020 
	ld4	r29=[r30]				    //78 	cc:1
	ld4	r26=[r27]				    //78 	cc:1
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X030 
	ld4	r21=[r22]				    //78 	cc:2
	extr.u	r28=r29, 12, 20;;			    //78 	cc:2
	extr.u	r20=r21, 14, 18				    //78 	cc:3
 }
 {   .mmi  //R-Addr: 0X040 
	add	r25=r26, r28;;				    //78 	cc:3
	add	r19=r25, r20				    //78 	cc:4
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X050 
	adds	r8=11, r19				    //78 	cc:6
	nop.m	 0
	br.ret.sptk.many b0;;				    //79 	cc:0
 }
// End code for function:
	.endp	compressBound#

// Total code size for all functions: 0X04a0 bytes (74 bundles)

// END

⌨️ 快捷键说明

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