📄 deflate.asm
字号:
// Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.21022.08
.file "f:/Study/wincezip/DLL/deflate.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
.global deflate_copyright#
.section .srdata
?my_version@?1??deflateInit2_@@9@9:
string "1.2.3\000" // `deflateInit2_'::`2'::my_version
.section .rdata
deflate_copyright:
string " deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly \000"
.skip 11
configuration_table:
data2 00H
data2 00H
data2 00H
data2 00H
data8 deflate_stored#
data2 04H
data2 04H
data2 08H
data2 04H
data8 deflate_fast#
data2 04H
data2 05H
data2 010H
data2 08H
data8 deflate_fast#
data2 04H
data2 06H
data2 020H
data2 020H
data8 deflate_fast#
data2 04H
data2 04H
data2 010H
data2 010H
data8 deflate_slow#
data2 08H
data2 010H
data2 020H
data2 020H
data8 deflate_slow#
data2 08H
data2 010H
data2 080H
data2 080H
data8 deflate_slow#
data2 08H
data2 020H
data2 080H
data2 0100H
data8 deflate_slow#
data2 020H
data2 080H
data2 0102H
data2 0400H
data8 deflate_slow#
data2 020H
data2 0102H
data2 0102H
data2 01000H
data8 deflate_slow#
.type deflateInit_# ,@function
.global deflateInit_#
.section .pdata
$T79476: data4 @imagerel($LN3@deflateIni#)
data4 @imagerel($LN3@deflateIni#+224)
data4 @imagerel($T79474#)
.section .xdata
$T79474: 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 "\x3c" //R1:body size size 28
string "\x81" //B1:label_state 1
string "\xc0\x05" //B2:ecount 0 time 5
// Function compile flags: /Odtp
// File f:\study\wincezip\dll\deflate.c
.section .text
// Begin code for function: deflateInit_:
.proc deflateInit_#
.align 32
$T79473 = 16
strm$ = 32
level$ = 40
version$ = 48
stream_size$ = 56
deflateInit_:
// strm$ = r32
// level$ = r33
// version$ = r34
// stream_size$ = r35
// Output regs: r38-r45
$LN3@deflateIni:
// 209 : {
// 210 : return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
// 211 : Z_DEFAULT_STRATEGY, version, stream_size);
// 212 : /* To do: ignore strm->next_in if we use it as window */
// 213 : }
{ .mii //R-Addr: 0X00
alloc r37=4, 2, 8, 0 //209 cc:0
mov r36=b0 //209 cc:0
adds sp=-48, sp;; //209 cc:0, ffffffd0H
}
{ .mmi //R-Addr: 0X010
ld8.nta r2=[sp] //209 cc:1
adds r31=strm$, sp
adds r30=level$, sp
}
{ .mib //R-Addr: 0X020
adds r29=version$, sp
adds r28=stream_size$, sp
nop.b 0;;
}
{ .mmb //R-Addr: 0X030
st8 [r31]=r32
st4 [r30]=r33
nop.b 0;;
}
{ .mmb //R-Addr: 0X040
st8 [r29]=r34
st4 [r28]=r35
nop.b 0;;
}
{ .mmi //R-Addr: 0X050
adds r27=stream_size$, sp //211 cc:0
adds r26=version$, sp //211 cc:0
adds r25=level$, sp //211 cc:0
}
{ .mmi //R-Addr: 0X060
adds r22=strm$, sp //211 cc:0
mov r43=0 //211 cc:0
mov r42=8;; //211 cc:0
}
{ .mmi //R-Addr: 0X070
ld4 r45=[r27] //211 cc:1
ld8 r44=[r26] //211 cc:1
mov r41=15 //211 cc:1
}
{ .mmi //R-Addr: 0X080
mov r40=8;; //211 cc:1
ld4 r39=[r25] //211 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X090
ld8 r38=[r22] //211 cc:2
nop.m 0
br.call.sptk.few b0=deflateInit2_#;; //211 cc:2
}
{ .mib //R-Addr: 0X0a0
adds r21=$T79473, sp //211 cc:13
adds r20=$T79473, sp //211 cc:13
nop.b 0;;
}
{ .mmb //R-Addr: 0X0b0
st4 [r21]=r8 //211 cc:14
ld4 r8=[r20] //211 cc:14
nop.b 0;;
}
{ .mii //R-Addr: 0X0c0
adds sp=48, sp //213 cc:0, 00000030H
mov.ret b0=r36;; //213 cc:0
mov.i ar.pfs=r37 //213 cc:1
}
{ .mmb //R-Addr: 0X0d0
nop.m 0
nop.m 0
br.ret.sptk.many b0;; //213 cc:1
}
// End code for function:
.endp deflateInit_#
.type deflateInit2_# ,@function
.global deflateInit2_#
.type z_errmsg# ,@object
.global z_errmsg#
.type zcfree# ,@function
.global zcfree#
.type zcalloc# ,@function
.global zcalloc#
.section .pdata
$T79492: data4 @imagerel($LN18@deflateIni@2#)
data4 @imagerel($LN18@deflateIni@2#+4096)
data4 @imagerel($T79490#)
.section .xdata
.skip 16
$T79490: data2 03H
data2 00H
data4 03H
string "\x17" //R1:prologue size 23
string "\xe6\x00" //P7:pfs_when time 0
string "\xb1\x29" //P3:pfs_gr 41
string "\xe0\x01\x09" //P7:mem_stack_f time 1 size 9
string "\xe4\x02" //P7:rp_when time 2
string "\xb0\xa8" //P3:rp_gr 40
string "\x61\xe9\x05" //R3:body size 745
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
.section .text
// Begin code for function: deflateInit2_:
.proc deflateInit2_#
.align 32
s$ = 16
overlay$ = 24
wrap$ = 32
$T79478 = 40
$T79479 = 48
$T79480 = 56
$T79481 = 64
$T79482 = 72
$T79487 = 80
strm$ = 96
level$ = 104
method$ = 112
windowBits$ = 120
memLevel$ = 128
strategy$ = 136
version$ = 144
stream_size$ = 152
deflateInit2_:
// strm$ = r32
// level$ = r33
// method$ = r34
// windowBits$ = r35
// memLevel$ = r36
// strategy$ = r37
// version$ = r38
// stream_size$ = r39
// Output regs: r43-r45
$LN18@deflateIni@2:
// 226 : {
// 227 : deflate_state *s;
// 228 : int wrap = 1;
// 229 : static const char my_version[] = ZLIB_VERSION;
// 230 :
// 231 : ushf *overlay;
// 232 : /* We overlay pending_buf and d_buf+l_buf. This works since the average
// 233 : * output size for (length,distance) codes is <= 24 bits.
// 234 : */
// 235 :
// 236 : if (version == Z_NULL || version[0] != my_version[0] ||
// 237 : stream_size != sizeof(z_stream)) {
{ .mmi //R-Addr: 0X00
alloc r41=8, 3, 3, 0 //226 cc:0
adds sp=-144, sp //226 cc:0, ffffff70H
mov r40=b0 //226 cc:0
}
{ .mmi //R-Addr: 0X010
mov r42=gp;; //226 cc:0
ld8.nta r2=[sp] //226 cc:1
adds r31=strm$, sp
}
{ .mmi //R-Addr: 0X020
adds r30=level$, sp
adds r29=method$, sp
adds r28=windowBits$, sp;;
}
{ .mmi //R-Addr: 0X030
st8 [r31]=r32
st4 [r30]=r33
adds r27=memLevel$, sp
}
{ .mmi //R-Addr: 0X040
adds r26=strategy$, sp
adds r25=version$, sp
adds r22=stream_size$, sp;;
}
{ .mmb //R-Addr: 0X050
st4 [r29]=r34
st4 [r28]=r35
nop.b 0;;
}
{ .mmb //R-Addr: 0X060
st4 [r27]=r36
st4 [r26]=r37
nop.b 0;;
}
{ .mmb //R-Addr: 0X070
st8 [r25]=r38
st4 [r22]=r39
nop.b 0;;
}
{ .mib //R-Addr: 0X080
mov r21=1 //228 cc:0
adds r20=wrap$, sp //228 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X090
st4 [r20]=r21;; //228 cc:1
adds r19=version$, sp //237 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X0a0
ld8 r18=[r19];; //237 cc:1
cmp.eq.unc p14,p15=r0, r18 //237 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X0b0
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN14@deflateIni@2#;; //237 cc:2
}
// 237 : stream_size != sizeof(z_stream)) {
{ .mib //R-Addr: 0X0c0
adds r17=version$, sp //237 cc:3
addl r10=@gprel(?my_version@?1??deflateInit2_@@9@9#),gp //237 cc:3
nop.b 0;;
}
{ .mmb //R-Addr: 0X0d0
ld8 r16=[r17] //237 cc:4
ld1 r9=[r10] //237 cc:4
nop.b 0;;
}
{ .mib //R-Addr: 0X0e0
nop.m 0
sxt1 r8=r9 //237 cc:5
nop.b 0;;
}
{ .mmi //R-Addr: 0X0f0
ld1 r15=[r16];; //237 cc:6
nop.m 0
sxt1 r11=r15;; //237 cc:7
}
{ .mmb //R-Addr: 0X0100
cmp4.ne.unc p14,p15=r11, r8 //237 cc:8
nop.m 0
(p14) br.cond.dptk.few $LN14@deflateIni@2#;; //237 cc:8
}
// 237 : stream_size != sizeof(z_stream)) {
{ .mmi //R-Addr: 0X0110
adds r31=stream_size$, sp;; //237 cc:9
ld4 r30=[r31] //237 cc:10
nop.i 0;;
}
{ .mii //R-Addr: 0X0120
nop.m 0
sxt4 r29=r30;; //237 cc:11
cmp.eq.unc p14,p15=88, r29 //237 cc:12, 00000058H
}
{ .mmb //R-Addr: 0X0130
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN15@deflateIni@2#;; //237 cc:12
}
$LN14@deflateIni@2:
// 238 : return Z_VERSION_ERROR;
{ .mmb //R-Addr: 0X0140
mov r8=-6 //238 cc:0
nop.m 0
br.cond.sptk.few $LN16@deflateIni@2#;; //238 cc:0
}
$LN15@deflateIni@2:
// 239 : }
// 240 : if (strm == Z_NULL) return Z_STREAM_ERROR;
{ .mmi //R-Addr: 0X0150
adds r28=strm$, sp;; //240 cc:0
ld8 r27=[r28] //240 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0160
cmp.ne.unc p14,p15=r0, r27 //240 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN13@deflateIni@2#;; //240 cc:2
}
// 240 : if (strm == Z_NULL) return Z_STREAM_ERROR;
{ .mmb //R-Addr: 0X0170
mov r8=-2 //240 cc:3
nop.m 0
br.cond.sptk.few $LN16@deflateIni@2#;; //240 cc:3
}
$LN13@deflateIni@2:
// 241 :
// 242 : strm->msg = Z_NULL;
// 243 : if (strm->zalloc == (alloc_func)0) {
{ .mmi //R-Addr: 0X0180
adds r26=strm$, sp;; //242 cc:0
ld8 r25=[r26] //242 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0190
adds r22=32, r25;; //242 cc:2
st8 [r22]=r0 //242 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X01a0
adds r21=strm$, sp;; //243 cc:0
ld8 r20=[r21] //243 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X01b0
adds r19=48, r20;; //243 cc:2, 00000030H
ld8 r18=[r19] //243 cc:3
nop.i 0;;
}
{ .mmb //R-Addr: 0X01c0
cmp.ne.unc p14,p15=r0, r18 //243 cc:4
nop.m 0
(p14) br.cond.dptk.few $LN12@deflateIni@2#;; //243 cc:4
}
// 244 : strm->zalloc = zcalloc;
// 245 : strm->opaque = (voidpf)0;
{ .mib //R-Addr: 0X01d0
adds r17=strm$, sp //244 cc:0
addl r11=@ltoff(@fptr(zcalloc#)),gp //244 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X01e0
ld8 r16=[r17] //244 cc:1
ld8 r10=[r11] //244 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X01f0
adds r15=48, r16;; //244 cc:2, 00000030H
st8 [r15]=r10 //244 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0200
adds r9=strm$, sp;; //245 cc:0
ld8 r8=[r9] //245 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0210
adds r31=64, r8;; //245 cc:2, 00000040H
st8 [r31]=r0 //245 cc:3
nop.i 0;;
}
$LN12@deflateIni@2:
// 246 : }
// 247 : if (strm->zfree == (free_func)0) strm->zfree = zcfree;
{ .mmi //R-Addr: 0X0220
adds r30=strm$, sp;; //247 cc:0
ld8 r29=[r30] //247 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0230
adds r28=56, r29;; //247 cc:2, 00000038H
ld8 r27=[r28] //247 cc:3
nop.i 0;;
}
{ .mmb //R-Addr: 0X0240
cmp.ne.unc p14,p15=r0, r27 //247 cc:4
nop.m 0
(p14) br.cond.dptk.few $LN11@deflateIni@2#;; //247 cc:4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -