📄 uncompr.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 + -