SM3_WORD
CTASSERT(sizeof(SM3_WORD) == sizeof(uint32_t));
SM3_WORD l;
l = (c->Nl + (((SM3_WORD)len) << 3))&0xffffffffUL;
c->Nh+=(SM3_WORD)(len>>29); /* might cause compiler warning on 16-bit */
const SM3_WORD A12 = crypto_rol_u32(A, 12); \
const SM3_WORD A12_SM = A12 + E + TJ; \
const SM3_WORD SS1 = crypto_rol_u32(A12_SM, 7); \
const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi; \
const SM3_WORD *in32;
SM3_WORD A, B, C, D, E, F, G, H;
SM3_WORD W00, W01, W02, W03, W04, W05, W06, W07;
SM3_WORD W08, W09, W10, W11, W12, W13, W14, W15;
in32 = (const SM3_WORD *)in;
SM3_WORD A, B, C, D, E, F, G, H;
SM3_WORD Nl, Nh;
SM3_WORD data[SM3_LBLOCK];