📄 infback.asm
字号:
adds r19=strm$, sp //50 cc:0
mov r42=9544 //50 cc:0, 00002548H
}
{ .mmi //R-Addr: 0X02a0
mov r41=1;; //50 cc:0
ld8 r15=[r16] //50 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X02b0
ld8 r18=[r19];; //50 cc:1
adds r11=48, r15 //50 cc:2, 00000030H
adds r17=64, r18;; //50 cc:2, 00000040H
}
{ .mmb //R-Addr: 0X02c0
ld8 r10=[r11] //50 cc:3
ld8 r40=[r17] //50 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X02d0
ld8 r9=[r10], 8;; //50 cc:5
ld8 gp=[r10] //50 cc:6
mov b6=r9 //50 cc:6
}
{ .mmb //R-Addr: 0X02e0
nop.m 0
nop.m 0
br.call.dptk.many b0=b6;; //50 cc:6
}
{ .mmi //R-Addr: 0X02f0
adds r31=$T79352, sp //50 cc:17
adds r30=$T79352, sp //50 cc:17
adds r28=state$, sp //50 cc:17
}
{ .mmi //R-Addr: 0X0300
mov gp=r39;; //50 cc:17
st8 [r31]=r8 //50 cc:18
nop.i 0
}
{ .mmi //R-Addr: 0X0310
ld8 r29=[r30];; //50 cc:18
st8 [r28]=r29 //50 cc:19
nop.i 0;;
}
{ .mmi //R-Addr: 0X0320
adds r27=state$, sp;; //51 cc:0
ld8 r26=[r27] //51 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0330
cmp.ne.unc p14,p15=r0, r26 //51 cc:2
nop.m 0
(p14) br.cond.dptk.many $LN1@inflateBac#;; //51 cc:2
}
// 51 : if (state == Z_NULL) return Z_MEM_ERROR;
{ .mmb //R-Addr: 0X0340
mov r8=-4 //51 cc:3
nop.m 0
br.cond.sptk.few $LN8@inflateBac#;; //51 cc:3
}
$LN1@inflateBac:
// 52 : Tracev((stderr, "inflate: allocated\n"));
// 53 : strm->state = (struct internal_state FAR *)state;
// 54 : state->dmax = 32768U;
// 55 : state->wbits = windowBits;
// 56 : state->wsize = 1U << windowBits;
// 57 : state->window = window;
// 58 : state->write = 0;
// 59 : state->whave = 0;
// 60 : return Z_OK;
{ .mib //R-Addr: 0X0350
adds r25=strm$, sp //53 cc:0
adds r20=state$, sp //53 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0360
ld8 r22=[r25] //53 cc:1
ld8 r19=[r20] //53 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0370
adds r21=40, r22;; //53 cc:2, 00000028H
st8 [r21]=r19 //53 cc:3
nop.i 0;;
}
{ .mib //R-Addr: 0X0380
adds r18=state$, sp //54 cc:0
mov r15=32768 //54 cc:0, 00008000H
nop.b 0;;
}
{ .mmi //R-Addr: 0X0390
ld8 r17=[r18];; //54 cc:1
adds r16=20, r17 //54 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X03a0
st4 [r16]=r15;; //54 cc:3
adds r11=state$, sp //55 cc:0
adds r8=windowBits$, sp;; //55 cc:0
}
{ .mmb //R-Addr: 0X03b0
ld8 r10=[r11] //55 cc:1
ld4 r31=[r8] //55 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X03c0
adds r9=40, r10;; //55 cc:2, 00000028H
st4 [r9]=r31 //55 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X03d0
adds r30=windowBits$, sp //56 cc:0
mov r28=1 //56 cc:0
adds r26=state$, sp;; //56 cc:0
}
{ .mmb //R-Addr: 0X03e0
ld4 r29=[r30] //56 cc:1
ld8 r25=[r26] //56 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X03f0
adds r22=44, r25;; //56 cc:2, 0000002cH
nop.m 0
shl r27=r28, r29;; //56 cc:3
}
{ .mmi //R-Addr: 0X0400
st4 [r22]=r27;; //56 cc:6
adds r21=state$, sp //57 cc:0
adds r18=window$, sp;; //57 cc:0
}
{ .mmb //R-Addr: 0X0410
ld8 r20=[r21] //57 cc:1
ld8 r17=[r18] //57 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0420
adds r19=56, r20;; //57 cc:2, 00000038H
st8 [r19]=r17 //57 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0430
adds r16=state$, sp;; //58 cc:0
ld8 r15=[r16] //58 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0440
adds r11=52, r15;; //58 cc:2, 00000034H
st4 [r11]=r0 //58 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0450
adds r10=state$, sp;; //59 cc:0
ld8 r9=[r10] //59 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0460
adds r8=48, r9;; //59 cc:2, 00000030H
st4 [r8]=r0 //59 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0470
mov r8=r0;; //60 cc:0
nop.m 0
nop.i 0;;
}
$LN8@inflateBac:
// 61 : }
{ .mii //R-Addr: 0X0480
adds sp=64, sp //61 cc:0, 00000040H
mov.ret b0=r37;; //61 cc:0
mov.i ar.pfs=r38 //61 cc:1
}
{ .mmb //R-Addr: 0X0490
nop.m 0
nop.m 0
br.ret.sptk.many b0;; //61 cc:1
}
// End code for function:
.endp inflateBackInit_#
.type inflateBack# ,@function
.global inflateBack#
.type inflate_fast# ,@function
.global inflate_fast#
.type inflate_table# ,@function
.global inflate_table#
.type memcpy# ,@function
.global memcpy#
.section .pdata
$T79396: data4 @imagerel($LN355@inflateBac@2#)
data4 @imagerel($LN355@inflateBac@2#+21392)
data4 @imagerel($T79394#)
.section .xdata
.skip 8
$T79394: 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\x0f" //P7:mem_stack_f time 1 size 15
string "\xe4\x02" //P7:rp_when time 2
string "\xb0\xa5" //P3:rp_gr 37
string "\x61\x9b\x1f" //R3:body size 3995
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: inflateBack:
.proc inflateBack#
.align 32
put$ = 16
last$ = 24
have$ = 28
len$ = 32
bits$ = 36
left$ = 40
next$ = 48
ret$ = 56
hold$ = 60
this$ = 64
copy$ = 68
from$ = 72
state$ = 80
$T79365 = 88
$T79366 = 92
$T79367 = 96
$T79368 = 100
$T79369 = 104
$T79370 = 108
$T79371 = 112
$T79372 = 116
$T79373 = 120
$T79374 = 124
$T79375 = 128
$T79376 = 132
$T79377 = 136
$T79378 = 140
$T79379 = 144
$T79380 = 148
$T79381 = 152
$T79382 = 156
$T79383 = 160
$T79384 = 164
$T79385 = 168
$T79386 = 172
$T79387 = 176
$T79388 = 180
$T79389 = 184
$T79390 = 188
$T79391 = 192
strm$ = 208
in$ = 216
in_desc$ = 224
out$ = 232
out_desc$ = 240
inflateBack:
// strm$ = r32
// in$ = r33
// in_desc$ = r34
// out$ = r35
// out_desc$ = r36
// Output regs: r40-r45
$LN355@inflateBac@2:
// 247 : {
// 248 : struct inflate_state FAR *state;
// 249 : unsigned char FAR *next; /* next input */
// 250 : unsigned char FAR *put; /* next output */
// 251 : unsigned have, left; /* available input and output */
// 252 : unsigned long hold; /* bit buffer */
// 253 : unsigned bits; /* bits in bit buffer */
// 254 : unsigned copy; /* number of stored or match bytes to copy */
// 255 : unsigned char FAR *from; /* where to copy match bytes from */
// 256 : code this; /* current decoding table entry */
// 257 : code last; /* parent table entry */
// 258 : unsigned len; /* length to copy for repeats, bits to drop */
// 259 : int ret; /* return code */
// 260 : static const unsigned short order[19] = /* permutation of code lengths */
// 261 : {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
// 262 :
// 263 : /* Check that the strm exists and that the state was initialized */
// 264 : if (strm == Z_NULL || strm->state == Z_NULL)
{ .mmi //R-Addr: 0X00
alloc r38=5, 3, 6, 0 //247 cc:0
adds sp=-240, sp //247 cc:0, ffffff10H
mov r37=b0 //247 cc:0
}
{ .mmi //R-Addr: 0X010
mov r39=gp;; //247 cc:0
ld8.nta r2=[sp] //247 cc:1
adds r31=strm$, sp
}
{ .mmi //R-Addr: 0X020
adds r30=in$, sp
adds r29=in_desc$, sp
adds r28=out$, sp;;
}
{ .mmi //R-Addr: 0X030
st8 [r31]=r32
st8 [r30]=r33
adds r27=out_desc$, sp;;
}
{ .mmb //R-Addr: 0X040
st8 [r29]=r34
st8 [r28]=r35
nop.b 0;;
}
{ .mmi //R-Addr: 0X050
st8 [r27]=r36;;
adds r26=strm$, sp //264 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X060
ld8 r25=[r26];; //264 cc:1
cmp.eq.unc p14,p15=r0, r25 //264 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X070
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN345@inflateBac@2#;; //264 cc:2
}
// 264 : if (strm == Z_NULL || strm->state == Z_NULL)
{ .mmi //R-Addr: 0X080
adds r22=strm$, sp;; //264 cc:3
ld8 r21=[r22] //264 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X090
adds r20=40, r21;; //264 cc:5, 00000028H
ld8 r19=[r20] //264 cc:6
nop.i 0;;
}
{ .mmb //R-Addr: 0X0a0
cmp.ne.unc p14,p15=r0, r19 //264 cc:7
nop.m 0
(p14) br.cond.dptk.many $LN346@inflateBac@2#;; //264 cc:7
}
$LN345@inflateBac@2:
// 265 : return Z_STREAM_ERROR;
{ .mmb //R-Addr: 0X0b0
mov r8=-2 //265 cc:0
nop.m 0
br.cond.sptk.few $LN347@inflateBac@2#;; //265 cc:0
}
$LN346@inflateBac@2:
// 266 : state = (struct inflate_state FAR *)strm->state;
// 267 :
// 268 : /* Reset the state */
// 269 : strm->msg = Z_NULL;
// 270 : state->mode = TYPE;
// 271 : state->last = 0;
// 272 : state->whave = 0;
// 273 : next = strm->next_in;
// 274 : have = next != Z_NULL ? strm->avail_in : 0;
{ .mib //R-Addr: 0X0c0
adds r18=strm$, sp //266 cc:0
adds r11=state$, sp //266 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0d0
ld8 r17=[r18];; //266 cc:1
adds r16=40, r17 //266 cc:2, 00000028H
nop.i 0;;
}
{ .mmi //R-Addr: 0X0e0
ld8 r15=[r16];; //266 cc:3
st8 [r11]=r15 //266 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X0f0
adds r10=strm$, sp;; //269 cc:0
ld8 r9=[r10] //269 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0100
adds r8=32, r9;; //269 cc:2
st8 [r8]=r0 //269 cc:3
nop.i 0;;
}
{ .mib //R-Addr: 0X0110
adds r31=state$, sp //270 cc:0
mov r29=11 //270 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0120
ld8 r30=[r31];; //270 cc:1
st4 [r30]=r29 //270 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0130
adds r28=state$, sp;; //271 cc:0
ld8 r27=[r28] //271 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0140
adds r26=4, r27;; //271 cc:2
st4 [r26]=r0 //271 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0150
adds r25=state$, sp;; //272 cc:0
ld8 r22=[r25] //272 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0160
adds r21=48, r22;; //272 cc:2, 00000030H
st4 [r21]=r0 //272 cc:3
nop.i 0;;
}
{ .mib //R-Addr: 0X0170
adds r20=strm$, sp //273 cc:0
adds r17=next$, sp //273 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0180
ld8 r19=[r20];; //273 cc:1
ld8 r18=[r19] //273 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0190
st8 [r17]=r18;; //273 cc:4
adds r16=next$, sp //274 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X01a0
ld8 r15=[r16];; //274 cc:1
cmp.eq.unc p14,p15=r0, r15 //274 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X01b0
nop.m 0
nop.m 0
(p14) br.cond.dptk.many $LN349@inflateBac@2#;; //274 cc:2
}
// 274 : have = next != Z_NULL ? strm->avail_in : 0;
{ .mib //R-Addr: 0X01c0
adds r11=strm$, sp //274 cc:3
adds r31=$T79388, sp //274 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X01d0
ld8 r10=[r11];; //274 cc:4
adds r9=8, r10 //274 cc:5
nop.i 0;;
}
{ .mmi //R-Addr: 0X01e0
ld4 r8=[r9];; //274 cc:6
st4 [r31]=r8 //274 cc:7
nop.i 0
}
{ .mmb //R-Addr: 0X01f0
nop.m 0
nop.m 0
br.cond.sptk.many $LN350@inflateBac@2#;; //274 cc:7
}
$LN349@inflateBac@2:
// 274 : have = next != Z_NULL ? strm->avail_in : 0;
{ .mmi //R-Addr: 0X0200
adds r30=$T79388, sp;; //274 cc:0
st4 [r30]=r0 //274 cc:1
nop.i 0;;
}
$LN350@inflateBac@2:
// 274 : have = next != Z_NULL ? strm->avail_in : 0;
// 275 : hold = 0;
// 276 : bits = 0;
// 277 : put = state->window;
// 278 : left = state->wsize;
{ .mib //R-Addr: 0X0210
adds r29=$T79388, sp //274 cc:0
adds r27=have$, sp //274 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0220
ld4 r28=[r29];; //274 cc:1
st4 [r27]=r28 //274 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0230
adds r26=hold$, sp;; //275 cc:0
st4 [r26]=r0 //275 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0240
adds r25=bits$, sp;; //276 cc:0
st4 [r25]=r0 //276 cc:1
nop.i 0;;
}
{ .mib //R-Addr: 0X0250
adds r22=state$, sp //277 cc:0
adds r18=put$, sp //277 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0260
ld8 r21=[r22];; //277 cc:1
adds r20=56, r21 //277 cc:2, 00000038H
nop.i 0;;
}
{ .mmi //R-Addr: 0X0270
ld8 r19=[r20];; //277 cc:3
st8 [r18]=r19 //277 cc:4
nop.i 0;;
}
{ .mib //R-Addr: 0X0280
adds r17=state$, sp //278 cc:0
adds r10=left$, sp //278 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0290
ld8 r16=[r17];; //278 cc:1
adds r15=44, r16 //278 cc:2, 0000002cH
nop.i 0;;
}
{ .mmi //R-Addr: 0X02a0
ld4 r11=[r15];; //278 cc:3
st4 [r10]=r11 //278 cc:4
nop.i 0;;
}
$LN344@inflateBac@2:
// 279 :
// 280 : /* Inflate until end of block marked as last */
// 281 : for (;;)
// 282 : switch (state->mode) {
{ .mmi //R-Addr: 0X02b0
adds r9=state$, sp //282 cc:0
adds r30=$T79389, sp //282 cc:0
adds r29=$T79389, sp //282 cc:0
}
{ .mib //R-Addr: 0X02c0
adds r26=$T79389, sp //282 cc:0
adds r25=$T79389, sp //282 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X02d0
ld8 r8=[r9];; //282 cc:1
ld4 r31=[r8] //282 cc:3
nop.i 0;;
}
{ .mmb //R-Addr: 0X02e0
st4 [r30]=r31 //282 cc:4
ld4 r28=[r29] //282 cc:4
nop.b 0;;
}
{ .mmi //R-Addr: 0X02f0
adds r27=-11, r28;; //282 cc:5
st4 [r26]=r27 //282 cc:6
nop.i 0
}
{ .mmi //R-Addr: 0X0300
ld4 r22=[r25];; //282 cc:6
cmp4.ltu.unc p14,p15=16, r22 //282 cc:7
nop.i 0
}
{ .mmb //R-Addr: 0X0310
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN1@inflateBac@2#;; //282 cc:7
}
// 282 : switch (state->mode) {
{ .mmi //R-Addr: 0X0320
adds r21=$T79389, sp;; //282 cc:8
ld4 r20=[r21] //282 cc:9
nop.i 0;;
}
$LN353@inflateBac@2:
// 282 : switch (state->mode) {
{ .mii //R-Addr: 0X0330
cmp4.eq p6,p0=0, r20 //282 cc:11
cmp4.eq p7,p0=2, r20 //282 cc:11
cmp4.eq p8,p9=4, r20 //282 cc:11
}
{ .bbb //R-Addr: 0X0340
(p6) br.cond.sptk.few $LN340@inflateBac@2# //282 cc:11
(p7) br.cond.sptk.few $LN309@inflateBac@2# //282 cc:11
(p8) br.cond.sptk.few $LN271@inflateBac@2#;; //282 cc:11
}
// 282 : switch (state->mode) {
{ .mii //R-Addr: 0X0350
cmp4.eq p10,p0=7, r20 //282 cc:11
cmp4.eq p11,p0=15, r20 //282 cc:11
cmp4.eq p12,p13=16, r20 //282 cc:11
}
{ .bbb //R-Addr: 0X0360
(p10) br.cond.sptk.few $LN130@inflateBac@2# //282 cc:11
(p11) br.cond.sptk.few $LN5@inflateBac@2# //282 cc:11
(p12) br.cond.sptk.few $LN2@inflateBac@2#;; //282 cc:11
}
// 282 : switch (state->mode) {
{ .mmb //R-Addr: 0X0370
nop.m 0
nop.m 0
br.cond.sptk.few $LN1@inflateBac@2#;; //282 cc:0
}
$LN340@inflateBac@2:
// 283 : case TYPE:
// 284 : /* determine and dispatch block type */
// 285 : if (state->last) {
{ .mmi //R-Addr: 0X0380
adds r19=state$, sp;; //285 cc:0
ld8 r18=[r19] //285 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0390
adds r17=4, r18;; //285 cc:2
ld4 r16=[r17] //285 cc:3
nop.i 0;;
}
{ .mmb //R-Addr: 0X03a0
cmp4.eq.unc p14,p15=r0, r16 //285 cc:4
nop.m 0
(p14) br.cond.dptk.few $LN332@inflateBac@2#;; //285 cc:4
}
$LN338@inflateBac@2:
// 286 : BYTEBITS();
{ .mmi //R-Addr: 0X03b0
adds r15=bits$, sp //286 cc:0
adds r9=hold$, sp //286 cc:0
adds r30=hold$, sp //286 cc:0
}
{ .mmi //R-Addr: 0X03c0
adds r29=bits$, sp //286 cc:0
adds r26=bits$, sp //286 cc:0
adds r21=bits$, sp;; //286 cc:0
}
{ .mmb //R-Addr: 0X03d0
ld4 r11=[r15] //286 cc:1
ld4 r8=[r9] //286 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X03e0
and r10=7, r11;; //286 cc:2
nop.m 0
shr.u r31=r8, r10;; //286 cc:5
}
{ .mmb //R-Addr: 0X03f0
st4 [r30]=r31 //286 cc:8
ld4 r28=[r29] //286 cc:8
nop.b 0
}
{ .mmi //R-Addr: 0X0400
ld4 r25=[r26];; //286 cc:8
and r27=7, r28 //286 cc:9
nop.i 0;;
}
{ .mmi //R-Addr: 0X0410
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -