static uint32_t s_crc_generic_sb4()

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);
}