📄 inflate.asm
字号:
adds r17=96, r18;; //123 cc:4, 00000060H
}
{ .mmi //R-Addr: 0X02e0
ld8 r16=[r20];; //123 cc:5
st8 [r17]=r16 //123 cc:6
nop.i 0
}
{ .mmb //R-Addr: 0X02f0
ld8 r11=[r15] //123 cc:6
ld8 r8=[r9] //123 cc:6
nop.b 0;;
}
{ .mib //R-Addr: 0X0300
adds r10=96, r11 //123 cc:7, 00000060H
adds r31=88, r8 //123 cc:7, 00000058H
nop.b 0;;
}
{ .mmi //R-Addr: 0X0310
ld8 r30=[r10];; //123 cc:8
st8 [r31]=r30 //123 cc:9
nop.i 0;;
}
{ .mmi //R-Addr: 0X0320
mov r8=r0;; //125 cc:0
nop.m 0
nop.i 0;;
}
$LN3@inflateRes:
// 126 : }
{ .mmb //R-Addr: 0X0330
adds sp=16, sp //126 cc:0
nop.m 0
br.ret.sptk.many b0;; //126 cc:0
}
// End code for function:
.endp inflateReset#
.type inflatePrime# ,@function
.global inflatePrime#
.section .pdata
$T79729: data4 @imagerel($LN7@inflatePri#)
data4 @imagerel($LN7@inflatePri#+592)
data4 @imagerel($T79727#)
.section .xdata
.skip 8
$T79727: data2 03H
data2 00H
data4 02H
string "\x08" //R1:prologue size 8
string "\xe0\x00\x02" //P7:mem_stack_f time 0 size 2
string "\x61\x67" //R3:body size 103
string "\x81" //B1:label_state 1
string "\xc0\x02" //B2:ecount 0 time 2
string "\x00\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
.section .text
// Begin code for function: inflatePrime:
.proc inflatePrime#
.align 32
state$ = 0
strm$ = 16
bits$ = 24
value$ = 32
inflatePrime:
// strm$ = r32
// bits$ = r33
// value$ = r34
// Output regs: None
$LN7@inflatePri:
// 132 : {
// 133 : struct inflate_state FAR *state;
// 134 :
// 135 : if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
{ .mmi //R-Addr: 0X00
adds sp=-32, sp;; //132 cc:0
adds r31=strm$, sp
adds r30=bits$, sp
}
{ .mmi //R-Addr: 0X010
adds r29=value$, sp;;
st8 [r31]=r32
nop.i 0
}
{ .mmi //R-Addr: 0X020
st4 [r30]=r33;;
st4 [r29]=r34
nop.i 0;;
}
{ .mmi //R-Addr: 0X030
adds r28=strm$, sp;; //135 cc:0
ld8 r27=[r28] //135 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X040
cmp.eq.unc p14,p15=r0, r27 //135 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN3@inflatePri#;; //135 cc:2
}
// 135 : if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
{ .mmi //R-Addr: 0X050
adds r26=strm$, sp;; //135 cc:3
ld8 r25=[r26] //135 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X060
adds r22=40, r25;; //135 cc:5, 00000028H
ld8 r21=[r22] //135 cc:6
nop.i 0;;
}
{ .mmb //R-Addr: 0X070
cmp.ne.unc p14,p15=r0, r21 //135 cc:7
nop.m 0
(p14) br.cond.dptk.few $LN4@inflatePri#;; //135 cc:7
}
$LN3@inflatePri:
// 135 : if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
{ .mmb //R-Addr: 0X080
mov r8=-2 //135 cc:0
nop.m 0
br.cond.sptk.few $LN5@inflatePri#;; //135 cc:0
}
$LN4@inflatePri:
// 136 : state = (struct inflate_state FAR *)strm->state;
// 137 : if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
{ .mib //R-Addr: 0X090
adds r20=strm$, sp //136 cc:0
adds r16=state$, sp //136 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0a0
ld8 r19=[r20];; //136 cc:1
adds r18=40, r19 //136 cc:2, 00000028H
nop.i 0;;
}
{ .mmi //R-Addr: 0X0b0
ld8 r17=[r18];; //136 cc:3
st8 [r16]=r17 //136 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X0c0
adds r15=bits$, sp;; //137 cc:0
ld4 r11=[r15] //137 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0d0
cmp4.lt.unc p14,p15=16, r11 //137 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN1@inflatePri#;; //137 cc:2
}
// 137 : if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
{ .mib //R-Addr: 0X0e0
adds r10=state$, sp //137 cc:3
adds r30=bits$, sp //137 cc:3
nop.b 0;;
}
{ .mmb //R-Addr: 0X0f0
ld8 r9=[r10] //137 cc:4
ld4 r29=[r30] //137 cc:4
nop.b 0;;
}
{ .mmi //R-Addr: 0X0100
adds r8=68, r9;; //137 cc:5, 00000044H
ld4 r31=[r8] //137 cc:6
nop.i 0;;
}
{ .mmi //R-Addr: 0X0110
add r28=r31, r29;; //137 cc:7
cmp4.geu.unc p14,p15=32, r28 //137 cc:8
nop.i 0
}
{ .mmb //R-Addr: 0X0120
nop.m 0
nop.m 0
(p14) br.cond.dptk.many $LN2@inflatePri#;; //137 cc:8
}
$LN1@inflatePri:
// 137 : if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
{ .mmb //R-Addr: 0X0130
mov r8=-2 //137 cc:0
nop.m 0
br.cond.sptk.few $LN5@inflatePri#;; //137 cc:0
}
$LN2@inflatePri:
// 138 : value &= (1L << bits) - 1;
// 139 : state->hold += value << state->bits;
// 140 : state->bits += bits;
// 141 : return Z_OK;
{ .mmi //R-Addr: 0X0140
adds r27=bits$, sp //138 cc:0
mov r25=1 //138 cc:0
adds r20=value$, sp //138 cc:0
}
{ .mmi //R-Addr: 0X0150
adds r17=value$, sp;; //138 cc:0
ld4 r26=[r27] //138 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0160
ld4 r19=[r20];; //138 cc:1
nop.m 0
shl r22=r25, r26;; //138 cc:3
}
{ .mmi //R-Addr: 0X0170
adds r21=-1, r22;; //138 cc:6
and r18=r19, r21 //138 cc:7
nop.i 0;;
}
{ .mmi //R-Addr: 0X0180
st4 [r17]=r18;; //138 cc:8
adds r10=state$, sp //139 cc:0
adds r31=value$, sp //139 cc:0
}
{ .mib //R-Addr: 0X0190
adds r16=state$, sp //139 cc:0
adds r25=state$, sp //139 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X01a0
ld8 r9=[r10] //139 cc:1
ld4 r30=[r31] //139 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X01b0
ld8 r15=[r16] //139 cc:2
ld8 r22=[r25] //139 cc:2
adds r8=68, r9;; //139 cc:2, 00000044H
}
{ .mmi //R-Addr: 0X01c0
ld4 r29=[r8] //139 cc:3
adds r11=64, r15 //139 cc:3, 00000040H
adds r21=64, r22;; //139 cc:3, 00000040H
}
{ .mmi //R-Addr: 0X01d0
ld4 r27=[r11];; //139 cc:4
nop.m 0
shl r28=r30, r29;; //139 cc:5
}
{ .mmi //R-Addr: 0X01e0
add r26=r27, r28;; //139 cc:8
st4 [r21]=r26 //139 cc:9
nop.i 0;;
}
{ .mmi //R-Addr: 0X01f0
adds r20=state$, sp //140 cc:0
adds r16=bits$, sp //140 cc:0
adds r10=state$, sp;; //140 cc:0
}
{ .mmb //R-Addr: 0X0200
ld8 r19=[r20] //140 cc:1
ld4 r15=[r16] //140 cc:1
nop.b 0;;
}
{ .mii //R-Addr: 0X0210
ld8 r9=[r10] //140 cc:2
adds r18=68, r19;; //140 cc:2, 00000044H
adds r8=68, r9 //140 cc:3, 00000044H
}
{ .mmi //R-Addr: 0X0220
ld4 r17=[r18];; //140 cc:3
add r11=r17, r15 //140 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X0230
st4 [r8]=r11;; //140 cc:5
mov r8=r0 //141 cc:0
nop.i 0;;
}
$LN5@inflatePri:
// 142 : }
{ .mmb //R-Addr: 0X0240
adds sp=32, sp //142 cc:0
nop.m 0
br.ret.sptk.many b0;; //142 cc:0
}
// End code for function:
.endp inflatePrime#
.type inflateInit2_# ,@function
.global inflateInit2_#
.type zcfree# ,@function
.global zcfree#
.type zcalloc# ,@function
.global zcalloc#
.section .pdata
$T79739: data4 @imagerel($LN14@inflateIni#)
data4 @imagerel($LN14@inflateIni#+1424)
data4 @imagerel($T79737#)
.section .xdata
.skip 8
$T79737: 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\x04" //P7:mem_stack_f time 1 size 4
string "\xe4\x02" //P7:rp_when time 2
string "\xb0\xa4" //P3:rp_gr 36
string "\x61\xfd\x01" //R3:body size 253
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: inflateInit2_:
.proc inflateInit2_#
.align 32
state$ = 16
$T79733 = 24
$T79734 = 32
strm$ = 48
windowBits$ = 56
version$ = 64
stream_size$ = 72
inflateInit2_:
// strm$ = r32
// windowBits$ = r33
// version$ = r34
// stream_size$ = r35
// Output regs: r39-r41
$LN14@inflateIni:
// 149 : {
// 150 : struct inflate_state FAR *state;
// 151 :
// 152 : if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
// 153 : stream_size != (int)(sizeof(z_stream)))
{ .mmi //R-Addr: 0X00
alloc r37=4, 3, 3, 0 //149 cc:0
adds sp=-64, sp //149 cc:0, ffffffc0H
mov r36=b0 //149 cc:0
}
{ .mmi //R-Addr: 0X010
mov r38=gp;; //149 cc:0
ld8.nta r2=[sp] //149 cc:1
adds r31=strm$, sp
}
{ .mmi //R-Addr: 0X020
adds r30=windowBits$, sp
adds r29=version$, sp
adds r28=stream_size$, sp;;
}
{ .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=version$, sp;; //153 cc:0
ld8 r26=[r27] //153 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X060
cmp.eq.unc p14,p15=r0, r26 //153 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN10@inflateIni#;; //153 cc:2
}
// 153 : stream_size != (int)(sizeof(z_stream)))
{ .mib //R-Addr: 0X070
adds r25=version$, sp //153 cc:3
addl r19=@gprel($SG78832#),gp //153 cc:3
nop.b 0;;
}
{ .mmb //R-Addr: 0X080
ld8 r22=[r25] //153 cc:4
ld1 r18=[r19] //153 cc:4
nop.b 0;;
}
{ .mib //R-Addr: 0X090
nop.m 0
sxt1 r17=r18 //153 cc:5
nop.b 0;;
}
{ .mmi //R-Addr: 0X0a0
ld1 r21=[r22];; //153 cc:6
nop.m 0
sxt1 r20=r21;; //153 cc:7
}
{ .mmb //R-Addr: 0X0b0
cmp4.ne.unc p14,p15=r20, r17 //153 cc:8
nop.m 0
(p14) br.cond.dptk.few $LN10@inflateIni#;; //153 cc:8
}
// 153 : stream_size != (int)(sizeof(z_stream)))
{ .mmi //R-Addr: 0X0c0
adds r16=stream_size$, sp;; //153 cc:9
ld4 r15=[r16] //153 cc:10
nop.i 0;;
}
{ .mmb //R-Addr: 0X0d0
cmp4.eq.unc p14,p15=88, r15 //153 cc:11, 00000058H
nop.m 0
(p14) br.cond.dptk.few $LN11@inflateIni#;; //153 cc:11
}
$LN10@inflateIni:
// 154 : return Z_VERSION_ERROR;
{ .mmb //R-Addr: 0X0e0
mov r8=-6 //154 cc:0
nop.m 0
br.cond.sptk.few $LN12@inflateIni#;; //154 cc:0
}
$LN11@inflateIni:
// 155 : if (strm == Z_NULL) return Z_STREAM_ERROR;
{ .mmi //R-Addr: 0X0f0
adds r11=strm$, sp;; //155 cc:0
ld8 r10=[r11] //155 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0100
cmp.ne.unc p14,p15=r0, r10 //155 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN9@inflateIni#;; //155 cc:2
}
// 155 : if (strm == Z_NULL) return Z_STREAM_ERROR;
{ .mmb //R-Addr: 0X0110
mov r8=-2 //155 cc:3
nop.m 0
br.cond.sptk.few $LN12@inflateIni#;; //155 cc:3
}
$LN9@inflateIni:
// 156 : strm->msg = Z_NULL; /* in case we return an error */
// 157 : if (strm->zalloc == (alloc_func)0) {
{ .mmi //R-Addr: 0X0120
adds r9=strm$, sp;; //156 cc:0
ld8 r8=[r9] //156 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0130
adds r31=32, r8;; //156 cc:2
st8 [r31]=r0 //156 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0140
adds r30=strm$, sp;; //157 cc:0
ld8 r29=[r30] //157 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0150
adds r28=48, r29;; //157 cc:2, 00000030H
ld8 r27=[r28] //157 cc:3
nop.i 0;;
}
{ .mmb //R-Addr: 0X0160
cmp.ne.unc p14,p15=r0, r27 //157 cc:4
nop.m 0
(p14) br.cond.dptk.few $LN8@inflateIni#;; //157 cc:4
}
// 158 : strm->zalloc = zcalloc;
// 159 : strm->opaque = (voidpf)0;
{ .mib //R-Addr: 0X0170
adds r26=strm$, sp //158 cc:0
addl r21=@ltoff(@fptr(zcalloc#)),gp //158 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0180
ld8 r25=[r26] //158 cc:1
ld8 r20=[r21] //158 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0190
adds r22=48, r25;; //158 cc:2, 00000030H
st8 [r22]=r20 //158 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X01a0
adds r19=strm$, sp;; //159 cc:0
ld8 r18=[r19] //159 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X01b0
adds r17=64, r18;; //159 cc:2, 00000040H
st8 [r17]=r0 //159 cc:3
nop.i 0;;
}
$LN8@inflateIni:
// 160 : }
// 161 : if (strm->zfree == (free_func)0) strm->zfree = zcfree;
{ .mmi //R-Addr: 0X01c0
adds r16=strm$, sp;; //161 cc:0
ld8 r15=[r16] //161 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X01d0
adds r11=56, r15;; //161 cc:2, 00000038H
ld8 r10=[r11] //161 cc:3
nop.i 0;;
}
{ .mmb //R-Addr: 0X01e0
cmp.ne.unc p14,p15=r0, r10 //161 cc:4
nop.m 0
(p14) br.cond.dptk.few $LN7@inflateIni#;; //161 cc:4
}
// 161 : if (strm->zfree == (free_func)0) strm->zfree = zcfree;
{ .mib //R-Addr: 0X01f0
adds r9=strm$, sp //161 cc:5
addl r30=@ltoff(@fptr(zcfree#)),gp //161 cc:5
nop.b 0;;
}
{ .mmb //R-Addr: 0X0200
ld8 r8=[r9] //161 cc:6
ld8 r29=[r30] //161 cc:6
nop.b 0;;
}
{ .mmi //R-Addr: 0X0210
adds r31=56, r8;; //161 cc:7, 00000038H
st8 [r31]=r29 //161 cc:8
nop.i 0;;
}
$LN7@inflateIni:
// 162 : state = (struct inflate_state FAR *)
// 163 : ZALLOC(strm, 1, sizeof(struct inflate_state));
// 164 : if (state == Z_NULL) return Z_MEM_ERROR;
{ .mmi //R-Addr: 0X0220
adds r25=strm$, sp //163 cc:0
adds r28=strm$, sp //163 cc:0
mov r41=9544 //163 cc:0, 00002548H
}
{ .mmi //R-Addr: 0X0230
mov r40=1;; //163 cc:0
ld8 r22=[r25] //163 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0240
ld8 r27=[r28];; //163 cc:1
adds r21=48, r22 //163 cc:2, 00000030H
adds r26=64, r27;; //163 cc:2, 00000040H
}
{ .mmb //R-Addr: 0X0250
ld8 r20=[r21] //163 cc:3
ld8 r39=[r26] //163 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X0260
ld8 r19=[r20], 8;; //163 cc:5
ld8 gp=[r20] //163 cc:6
mov b7=r19 //163 cc:6
}
{ .mmb //R-Addr: 0X0270
nop.m 0
nop.m 0
br.call.dptk.many b0=b7;; //163 cc:6
}
{ .mmi //R-Addr: 0X0280
adds r18=$T79733, sp //163 cc:17
adds r17=$T79733, sp //163 cc:17
adds r15=state$, sp //163 cc:17
}
{ .mmi //R-Addr: 0X0290
mov gp=r38;; //163 cc:17
st8 [r18]=r8 //163 cc:18
nop.i 0
}
{ .mmi //R-Addr: 0X02a0
ld8 r16=[r17];; //163 cc:18
st8 [r15]=r16 //163 cc:19
nop.i 0;;
}
{ .mmi //R-Addr: 0X02b0
adds r11=state$, sp;; //164 cc:0
ld8 r10=[r11] //164 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X02c0
cmp.ne.unc p14,p15=r0, r10 //164 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN6@inflateIni#;; //164 cc:2
}
// 164 : if (state == Z_NULL) return Z_MEM_ERROR;
{ .mmb //R-Addr: 0X02d0
mov r8=-4 //164 cc:3
nop.m 0
br.cond.sptk.few $LN12@inflateIni#;; //164 cc:3
}
$LN6@inflateIni:
// 165 : Tracev((stderr, "inflate: allocated\n"));
// 166 : strm->state = (struct internal_state FAR *)state;
// 167 : if (windowBits < 0) {
{ .mib //R-Addr: 0X02e0
adds r9=strm$, sp //166 cc:0
adds r30=state$, sp //166 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X02f0
ld8 r8=[r9] //166 cc:1
ld8 r29=[r30] //166 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0300
adds r31=40, r8;; //166 cc:2, 00000028H
st8 [r31]=r29 //166 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0310
adds r28=windowBits$, sp;; //167 cc:0
ld4 r27=[r28] //167 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0320
cmp4.le.unc p14,p15=r0, r27 //167 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN5@inflateIni#;; //167 cc:2
}
// 168 : state->wrap = 0;
// 169 : windowBits = -windowBits;
// 170 : }
// 171 : else {
{ .mmi //R-Addr: 0X0330
adds r26=state$, sp;; //168 cc:0
ld8 r25=[r26] //168 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0340
adds r22=8, r25;; //168 cc:2
st4 [r22]=r0 //168 cc:3
nop.i 0;;
}
{ .mib //R-Addr: 0X0350
adds r21=windowBits$, sp //169 cc:0
adds r18=windowBits$, sp //169 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0360
ld4 r20=[r21];; //169 cc:1
sub r19=r0, r20 //169 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X0370
st4 [r18]=r19 //169 cc:4
nop.m 0
br.cond.sptk.few $LN4@inflateIni#;; //171 cc:0
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -