SM3_WORD
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;
#define HASH_LONG SM3_WORD
const SM3_WORD A12 = ROTATE(A, 12); \
const SM3_WORD A12_SM = A12 + E + TJ; \
const SM3_WORD SS1 = ROTATE(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; \
SM3_WORD A, B, C, D, E, F, G, H;
SM3_WORD Nl, Nh;
SM3_WORD data[SM3_LBLOCK];