2 ; 2001-11-14, Piotr Fusik
3 ; 2018-05-20, Christian Kruger
5 ; unsigned long __fastcall__ crc32 (unsigned long crc, unsigned char* buf,
11 .import compleax, incsp2, incsp4, popptr1, popeax
12 .importzp sreg, ptr1, ptr2, tmp1, tmp2
14 POLYNOMIAL = $EDB88320
29 eor #(POLYNOMIAL>>24)&$FF
33 eor #(POLYNOMIAL>>16)&$FF
37 eor #(POLYNOMIAL>>8)&$FF
42 bcs @L4 ; branch always
64 ; ptr2 = (len & 0xff) == 0 ? len : len + 0x100;
72 ; if (buf == NULL) return 0;
75 ; if (!tables_initialised) make_tables();
82 ; if (len == 0) return crc;
92 ; crc = (crc >> 8) ^ table[(crc & 0xff) ^ *p++];
120 tax ; (popptr1 doesn't set .X)