in source/crc_sw.c [1146:1159]
static uint32_t s_crc_generic_sb4(const uint8_t *input, int length, uint32_t crc, const uint32_t *table_ptr) {
const uint32_t *current = (const uint32_t *)input;
int remaining = length;
uint32_t(*table)[16][256] = (uint32_t(*)[16][256])table_ptr;
while (remaining >= 4) {
crc ^= *current++;
crc = (*table)[3][crc & 0xff] ^ (*table)[2][(crc >> 8) & 0xff] ^ (*table)[1][(crc >> 16) & 0xff] ^
(*table)[0][crc >> 24];
remaining -= 4;
}
return s_crc_generic_sb1(&input[length - remaining], remaining, crc, table_ptr);
}