📄 crc32.asm
字号:
data4 0c5fec97H
data4 0e2f05985H
data4 08797e53dH
data4 0d1878665H
data4 0b4e03addH
data4 05a4f8fcfH
data4 03f283377H
data4 08610e4eaH
data4 0e3775852H
data4 0dd8ed40H
data4 068bf51f8H
data4 0a1f82bf0H
data4 0c49f9748H
data4 02a30225aH
data4 04f579ee2H
data4 0f66f497fH
data4 09308f5c7H
data4 07da740d5H
data4 018c0fc6dH
data4 04ed09f35H
data4 02bb7238dH
data4 0c518969fH
data4 0a07f2a27H
data4 01947fdbaH
data4 07c204102H
data4 0928ff410H
data4 0f7e848a8H
data4 03d58149bH
data4 0583fa823H
data4 0b6901d31H
data4 0d3f7a189H
data4 06acf7614H
data4 0fa8caacH
data4 0e1077fbeH
data4 08460c306H
data4 0d270a05eH
data4 0b7171ce6H
data4 059b8a9f4H
data4 03cdf154cH
data4 085e7c2d1H
data4 0e0807e69H
data4 0e2fcb7bH
data4 06b4877c3H
data4 0a20f0dcbH
data4 0c768b173H
data4 029c70461H
data4 04ca0b8d9H
data4 0f5986f44H
data4 090ffd3fcH
data4 07e5066eeH
data4 01b37da56H
data4 04d27b90eH
data4 0284005b6H
data4 0c6efb0a4H
data4 0a3880c1cH
data4 01ab0db81H
data4 07fd76739H
data4 09178d22bH
data4 0f41f6e93H
data4 03f7263bH
data4 066909a83H
data4 0883f2f91H
data4 0ed589329H
data4 0546044b4H
data4 03107f80cH
data4 0dfa84d1eH
data4 0bacff1a6H
data4 0ecdf92feH
data4 089b82e46H
data4 067179b54H
data4 027027ecH
data4 0bb48f071H
data4 0de2f4cc9H
data4 03080f9dbH
data4 055e74563H
data4 09ca03f6bH
data4 0f9c783d3H
data4 0176836c1H
data4 0720f8a79H
data4 0cb375de4H
data4 0ae50e15cH
data4 040ff544eH
data4 02598e8f6H
data4 073888baeH
data4 016ef3716H
data4 0f8408204H
data4 09d273ebcH
data4 0241fe921H
data4 041785599H
data4 0afd7e08bH
data4 0cab05c33H
data4 03bb659edH
data4 05ed1e555H
data4 0b07e5047H
data4 0d519ecffH
data4 06c213b62H
data4 094687daH
data4 0e7e932c8H
data4 0828e8e70H
data4 0d49eed28H
data4 0b1f95190H
data4 05f56e482H
data4 03a31583aH
data4 083098fa7H
data4 0e66e331fH
data4 08c1860dH
data4 06da63ab5H
data4 0a4e140bdH
data4 0c186fc05H
data4 02f294917H
data4 04a4ef5afH
data4 0f3762232H
data4 096119e8aH
data4 078be2b98H
data4 01dd99720H
data4 04bc9f478H
data4 02eae48c0H
data4 0c001fdd2H
data4 0a566416aH
data4 01c5e96f7H
data4 079392a4fH
data4 097969f5dH
data4 0f2f123e5H
data4 05196b4dH
data4 0607ed7f5H
data4 08ed162e7H
data4 0ebb6de5fH
data4 0528e09c2H
data4 037e9b57aH
data4 0d9460068H
data4 0bc21bcd0H
data4 0ea31df88H
data4 08f566330H
data4 061f9d622H
data4 049e6a9aH
data4 0bda6bd07H
data4 0d8c101bfH
data4 0366eb4adH
data4 053090815H
data4 09a4e721dH
data4 0ff29cea5H
data4 011867bb7H
data4 074e1c70fH
data4 0cdd91092H
data4 0a8beac2aH
data4 046111938H
data4 02376a580H
data4 07566c6d8H
data4 010017a60H
data4 0feaecf72H
data4 09bc973caH
data4 022f1a457H
data4 0479618efH
data4 0a939adfdH
data4 0cc5e1145H
data4 06ee4d76H
data4 06389f1ceH
data4 08d2644dcH
data4 0e841f864H
data4 051792ff9H
data4 0341e9341H
data4 0dab12653H
data4 0bfd69aebH
data4 0e9c6f9b3H
data4 08ca1450bH
data4 0620ef019H
data4 07694ca1H
data4 0be519b3cH
data4 0db362784H
data4 035999296H
data4 050fe2e2eH
data4 099b95426H
data4 0fcdee89eH
data4 012715d8cH
data4 07716e134H
data4 0ce2e36a9H
data4 0ab498a11H
data4 045e63f03H
data4 0208183bbH
data4 07691e0e3H
data4 013f65c5bH
data4 0fd59e949H
data4 0983e55f1H
data4 02106826cH
data4 044613ed4H
data4 0aace8bc6H
data4 0cfa9377eH
data4 038417fd6H
data4 05d26c36eH
data4 0b389767cH
data4 0d6eecac4H
data4 06fd61d59H
data4 0ab1a1e1H
data4 0e41e14f3H
data4 08179a84bH
data4 0d769cb13H
data4 0b20e77abH
data4 05ca1c2b9H
data4 039c67e01H
data4 080fea99cH
data4 0e5991524H
data4 0b36a036H
data4 06e511c8eH
data4 0a7166686H
data4 0c271da3eH
data4 02cde6f2cH
data4 049b9d394H
data4 0f0810409H
data4 095e6b8b1H
data4 07b490da3H
data4 01e2eb11bH
data4 0483ed243H
data4 02d596efbH
data4 0c3f6dbe9H
data4 0a6916751H
data4 01fa9b0ccH
data4 07ace0c74H
data4 09461b966H
data4 0f10605deH
.type get_crc_table# ,@function
.global get_crc_table#
// Function compile flags: /Odtp
// File f:\study\wincezip\dll\crc32.c
.section .text
// Begin code for function: get_crc_table:
.proc get_crc_table#
.align 32
get_crc_table:
// Output regs: None
// 211 : return (const unsigned long FAR *)crc_table;
// 212 : }
{ .mmi //R-Addr: 0X00
addl r31=@ltoff(crc_table#),gp;; //211 cc:0
ld8 r8=[r31] //211 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X010
nop.m 0
nop.m 0
br.ret.sptk.many b0;; //212 cc:0
}
// End code for function:
.endp get_crc_table#
.type crc32# ,@function
.global crc32#
.section .pdata
$T78871: data4 @imagerel($LN13@crc32#)
data4 @imagerel($LN13@crc32#+2064)
data4 @imagerel($T78869#)
.section .xdata
$T78869: data2 03H
data2 00H
data4 03H
string "\x0b" //R1:prologue size 11
string "\xe6\x00" //P7:pfs_when time 0
string "\xb1\x24" //P3:pfs_gr 36
string "\xe4\x01" //P7:rp_when time 1
string "\xb0\xa3" //P3:rp_gr 35
string "\xe0\x02\x03" //P7:mem_stack_f time 2 size 3
string "\x61\xf8\x02" //R3:body size 376
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: crc32:
.proc crc32#
.align 32
endian$78725 = 16
$T78867 = 20
$T78868 = 24
crc$ = 32
buf$ = 40
len$ = 48
crc32:
// crc$ = r32
// buf$ = r33
// len$ = r34
// Output regs: r37-r39
$LN13@crc32:
// 223 : {
// 224 : if (buf == Z_NULL) return 0UL;
{ .mii //R-Addr: 0X00
alloc r36=3, 2, 3, 0 //223 cc:0
mov r35=b0 //223 cc:0
adds sp=-48, sp;; //223 cc:0, ffffffd0H
}
{ .mmi //R-Addr: 0X010
ld8.nta r2=[sp] //223 cc:1
adds r31=crc$, sp
adds r30=buf$, sp
}
{ .mmi //R-Addr: 0X020
adds r29=len$, sp;;
st4 [r31]=r32
nop.i 0
}
{ .mmi //R-Addr: 0X030
st8 [r30]=r33;;
st4 [r29]=r34
nop.i 0;;
}
{ .mmi //R-Addr: 0X040
adds r28=buf$, sp;; //224 cc:0
ld8 r27=[r28] //224 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X050
cmp.ne.unc p14,p15=r0, r27 //224 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN10@crc32#;; //224 cc:2
}
// 224 : if (buf == Z_NULL) return 0UL;
{ .mmb //R-Addr: 0X060
mov r8=r0 //224 cc:3
nop.m 0
br.cond.sptk.few $LN11@crc32#;; //224 cc:3
}
$LN10@crc32:
// 225 :
// 226 : #ifdef DYNAMIC_CRC_TABLE
// 227 : if (crc_table_empty)
// 228 : make_crc_table();
// 229 : #endif /* DYNAMIC_CRC_TABLE */
// 230 :
// 231 : #ifdef BYFOUR
// 232 : if (sizeof(void *) == sizeof(ptrdiff_t)) {
{ .mmi //R-Addr: 0X070
mov r26=1;; //232 cc:0
cmp4.eq.unc p14,p15=r0, r26 //232 cc:1
nop.i 0
}
{ .mmb //R-Addr: 0X080
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN9@crc32#;; //232 cc:1
}
// 233 : u4 endian;
// 234 :
// 235 : endian = 1;
// 236 : if (*((unsigned char *)(&endian)))
{ .mib //R-Addr: 0X090
mov r25=1 //235 cc:0
adds r22=endian$78725, sp //235 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0a0
st4 [r22]=r25;; //235 cc:1
adds r21=endian$78725, sp //236 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X0b0
ld1 r20=[r21];; //236 cc:1
cmp4.eq.unc p14,p15=r0, r20 //236 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X0c0
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN8@crc32#;; //236 cc:2
}
// 237 : return crc32_little(crc, buf, len);
{ .mmi //R-Addr: 0X0d0
adds r19=len$, sp //237 cc:0
adds r18=buf$, sp //237 cc:0
adds r17=crc$, sp;; //237 cc:0
}
{ .mmb //R-Addr: 0X0e0
ld4 r39=[r19] //237 cc:1
ld8 r38=[r18] //237 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0f0
ld4 r37=[r17] //237 cc:2
nop.m 0
br.call.sptk.few b0=crc32_little#;; //237 cc:2
}
{ .mib //R-Addr: 0X0100
adds r16=$T78867, sp //237 cc:13
adds r15=$T78867, sp //237 cc:13
nop.b 0;;
}
{ .mmb //R-Addr: 0X0110
st4 [r16]=r8 //237 cc:14
ld4 r8=[r15] //237 cc:14
br.cond.sptk.few $LN11@crc32#;; //237 cc:14
}
// 238 : else
{ .mmb //R-Addr: 0X0120
nop.m 0
nop.m 0
br.cond.sptk.few $LN9@crc32#;; //238 cc:0
}
$LN8@crc32:
// 239 : return crc32_big(crc, buf, len);
{ .mmi //R-Addr: 0X0130
adds r11=len$, sp //239 cc:0
adds r10=buf$, sp //239 cc:0
adds r9=crc$, sp;; //239 cc:0
}
{ .mmb //R-Addr: 0X0140
ld4 r39=[r11] //239 cc:1
ld8 r38=[r10] //239 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0150
ld4 r37=[r9] //239 cc:2
nop.m 0
br.call.sptk.few b0=crc32_big#;; //239 cc:2
}
{ .mib //R-Addr: 0X0160
adds r31=$T78868, sp //239 cc:13
adds r30=$T78868, sp //239 cc:13
nop.b 0;;
}
{ .mmb //R-Addr: 0X0170
st4 [r31]=r8 //239 cc:14
ld4 r8=[r30] //239 cc:14
br.cond.sptk.few $LN11@crc32#;; //239 cc:14
}
$LN9@crc32:
// 240 : }
// 241 : #endif /* BYFOUR */
// 242 : crc = crc ^ 0xffffffffUL;
{ .mib //R-Addr: 0X0180
adds r29=crc$, sp //242 cc:0
adds r26=crc$, sp //242 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0190
ld4 r28=[r29];; //242 cc:1
xor r27=-1, r28 //242 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X01a0
st4 [r26]=r27 //242 cc:3
nop.m 0
nop.b 0;;
}
$LN6@crc32:
// 243 : while (len >= 8) {
{ .mmi //R-Addr: 0X01b0
adds r25=len$, sp;; //243 cc:0
ld4 r22=[r25] //243 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X01c0
cmp4.gtu.unc p14,p15=8, r22 //243 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN5@crc32#;; //243 cc:2
}
// 244 : DO8;
// 245 : len -= 8;
// 246 : }
{ .mmi //R-Addr: 0X01d0
adds r21=buf$, sp //244 cc:0
adds r18=crc$, sp //244 cc:0
addl r9=@ltoff(crc_table#),gp //244 cc:0
}
{ .mmi //R-Addr: 0X01e0
adds r30=crc$, sp //244 cc:0
adds r25=crc$, sp //244 cc:0
adds r22=buf$, sp;; //244 cc:0
}
{ .mmi //R-Addr: 0X01f0
ld8 r20=[r21] //244 cc:1
ld4 r17=[r18] //244 cc:1
adds r18=buf$, sp;; //244 cc:1
}
{ .mmi //R-Addr: 0X0200
ld8 r8=[r9] //244 cc:2
ld4 r29=[r30] //244 cc:2
addl r30=@ltoff(crc_table#),gp;; //244 cc:2
}
{ .mii //R-Addr: 0X0210
ld1 r19=[r20] //244 cc:3
extr.u r28=r29, 8, 24;; //244 cc:3
xor r16=r17, r19 //244 cc:4
}
{ .mmi //R-Addr: 0X0220
adds r19=buf$, sp;; //244 cc:4
nop.m 0
zxt1 r15=r16;; //244 cc:5
}
{ .mii //R-Addr: 0X0230
nop.m 0
sxt4 r11=r15 //244 cc:6
adds r15=crc$, sp;; //244 cc:6
}
{ .mii //R-Addr: 0X0240
nop.m 0
shl r10=r11, 2;; //244 cc:7
add r31=r8, r10;; //244 cc:8
}
{ .mmi //R-Addr: 0X0250
ld4 r27=[r31];; //244 cc:9
xor r26=r27, r28 //244 cc:10
adds r27=crc$, sp;; //244 cc:10
}
{ .mmb //R-Addr: 0X0260
st4 [r25]=r26 //244 cc:11
ld8 r21=[r22] //244 cc:11
nop.b 0;;
}
{ .mmi //R-Addr: 0X0270
adds r20=1, r21;; //244 cc:12
st8 [r19]=r20 //244 cc:13
adds r20=crc$, sp //244 cc:13
}
{ .mmi //R-Addr: 0X0280
ld8 r17=[r18] //244 cc:13
ld4 r11=[r15] //244 cc:13
adds r19=buf$, sp;; //244 cc:13
}
{ .mmi //R-Addr: 0X0290
ld8 r29=[r30] //244 cc:14
ld4 r26=[r27] //244 cc:14
adds r15=buf$, sp //244 cc:14
}
{ .mmi //R-Addr: 0X02a0
addl r27=@ltoff(crc_table#),gp;; //244 cc:14
ld1 r16=[r17] //244 cc:15
extr.u r25=r26, 8, 24;; //244 cc:15
}
{ .mii //R-Addr: 0X02b0
xor r10=r11, r16 //244 cc:16
adds r16=buf$, sp;; //244 cc:16
zxt1 r9=r10;; //244 cc:17
}
{ .mii //R-Addr: 0X02c0
nop.m 0
sxt4 r8=r9 //244 cc:18
adds r9=crc$, sp;; //244 cc:18
}
{ .mii //R-Addr: 0X02d0
nop.m 0
shl r31=r8, 2;; //244 cc:19
add r28=r29, r31;; //244 cc:20
}
{ .mmi //R-Addr: 0X02e0
ld4 r22=[r28];; //244 cc:21
xor r21=r22, r25 //244 cc:22
adds r22=crc$, sp;; //244 cc:22
}
{ .mmb //R-Addr: 0X02f0
st4 [r20]=r21 //244 cc:23
ld8 r18=[r19] //244 cc:23
nop.b 0;;
}
{ .mmi //R-Addr: 0X0300
adds r17=1, r18;; //244 cc:24
st8 [r16]=r17 //244 cc:25
adds r17=crc$, sp //244 cc:25
}
{ .mmi //R-Addr: 0X0310
ld8 r11=[r15] //244 cc:25
ld4 r8=[r9] //244 cc:25
adds r16=buf$, sp;; //244 cc:25
}
{ .mmi //R-Addr: 0X0320
ld8 r26=[r27] //244 cc:26
ld4 r21=[r22] //244 cc:26
adds r9=buf$, sp;; //244 cc:26
}
{ .mii //R-Addr: 0X0330
ld1 r10=[r11] //244 cc:27
extr.u r20=r21, 8, 24;; //244 cc:27
xor r31=r8, r10 //244 cc:28
}
{ .mmi //R-Addr: 0X0340
adds r10=buf$, sp;; //244 cc:28
nop.m 0
zxt1 r30=r31;; //244 cc:29
}
{ .mii //R-Addr: 0X0350
nop.m 0
sxt4 r29=r30 //244 cc:30
adds r30=crc$, sp;; //244 cc:30
}
{ .mii //R-Addr: 0X0360
nop.m 0
shl r28=r29, 2;; //244 cc:31
add r25=r26, r28;; //244 cc:32
}
{ .mmi //R-Addr: 0X0370
ld4 r19=[r25];; //244 cc:33
xor r18=r19, r20 //244 cc:34
nop.i 0;;
}
{ .mmb //R-Addr: 0X0380
st4 [r17]=r18 //244 cc:35
ld8 r15=[r16] //244 cc:35
nop.b 0;;
}
{ .mmi //R-Addr: 0X0390
adds r11=1, r15;; //244 cc:36
st8 [r10]=r11 //244 cc:37
nop.i 0
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -