/* param base CRC peripheral address. param data Input data stream, MSByte in data. param dataSize Size of the input data buffer in bytes.  */
void CRC_WriteData(CRC_Type *base, const uint8_t *data, size_t dataSize)
/* param base CRC peripheral address. param data Input data stream, MSByte in data. param dataSize Size of the input data buffer in bytes.  */
void CRC_WriteData(CRC_Type *base, const uint8_t *data, size_t dataSize)
{
    const uint32_t *data32;
    while ((0U != dataSize) && (0U != ((uint32_t)data & 3U)))
    {
        *((__O uint8_t *)&(base->WR_DATA)) = *data;
        data++;
        dataSize--;
    }
    data32 = (const uint32_t *)(uint32_t)data;
    while (dataSize >= sizeof(uint32_t))
    {
        *((__O uint32_t *)&(base->WR_DATA)) = *data32;
        data32++;
        dataSize -= sizeof(uint32_t);
    }
    data = (const uint8_t *)data32;
    while (0U != dataSize)
    {
        *((__O uint8_t *)&(base->WR_DATA)) = *data;
        data++;
        dataSize--;
    }
}