5 #define kCrcPoly 0xEDB88320
6 #define CRC_NUM_TABLES 8
8 UInt32 g_CrcTable
[256 * CRC_NUM_TABLES
];
10 void MY_FAST_CALL
CrcGenerateTable()
13 for (i
= 0; i
< 256; i
++)
17 for (j
= 0; j
< 8; j
++)
18 r
= (r
>> 1) ^ (kCrcPoly
& ~((r
& 1) - 1));
21 #if CRC_NUM_TABLES > 1
22 for (; i
< 256 * CRC_NUM_TABLES
; i
++)
24 UInt32 r
= g_CrcTable
[i
- 256];
25 g_CrcTable
[i
] = g_CrcTable
[r
& 0xFF] ^ (r
>> 8);
30 UInt32 MY_FAST_CALL
CrcUpdateT8(UInt32 v
, const void *data
, size_t size
, const UInt32
*table
);
32 UInt32 MY_FAST_CALL
CrcUpdate(UInt32 v
, const void *data
, size_t size
)
34 return CrcUpdateT8(v
, data
, size
, g_CrcTable
);
37 UInt32 MY_FAST_CALL
CrcCalc(const void *data
, size_t size
)
39 return CrcUpdateT8(CRC_INIT_VAL
, data
, size
, g_CrcTable
) ^ 0xFFFFFFFF;