78 uint32_t A = digest[0], B = digest[1], C = digest[2], D = digest[3];
82 for(
size_t i = 0; i != blocks; ++i) {
85 uint32_t M00 = load_le<uint32_t>(block, 0);
86 uint32_t M01 = load_le<uint32_t>(block, 1);
87 uint32_t M02 = load_le<uint32_t>(block, 2);
88 uint32_t M03 = load_le<uint32_t>(block, 3);
89 uint32_t M04 = load_le<uint32_t>(block, 4);
90 uint32_t M05 = load_le<uint32_t>(block, 5);
91 uint32_t M06 = load_le<uint32_t>(block, 6);
92 uint32_t M07 = load_le<uint32_t>(block, 7);
93 uint32_t M08 = load_le<uint32_t>(block, 8);
94 uint32_t M09 = load_le<uint32_t>(block, 9);
95 uint32_t M10 = load_le<uint32_t>(block, 10);
96 uint32_t M11 = load_le<uint32_t>(block, 11);
97 uint32_t M12 = load_le<uint32_t>(block, 12);
98 uint32_t M13 = load_le<uint32_t>(block, 13);
99 uint32_t M14 = load_le<uint32_t>(block, 14);
100 uint32_t M15 = load_le<uint32_t>(block, 15);
102 FF4(A, B, C, D, M00, M01, M02, M03);
103 FF4(A, B, C, D, M04, M05, M06, M07);
104 FF4(A, B, C, D, M08, M09, M10, M11);
105 FF4(A, B, C, D, M12, M13, M14, M15);
107 GG4(A, B, C, D, M00, M04, M08, M12);
108 GG4(A, B, C, D, M01, M05, M09, M13);
109 GG4(A, B, C, D, M02, M06, M10, M14);
110 GG4(A, B, C, D, M03, M07, M11, M15);
112 HH4(A, B, C, D, M00, M08, M04, M12);
113 HH4(A, B, C, D, M02, M10, M06, M14);
114 HH4(A, B, C, D, M01, M09, M05, M13);
115 HH4(A, B, C, D, M03, M11, M07, M15);
117 A = (digest[0] += A);
118 B = (digest[1] += B);
119 C = (digest[2] += C);
120 D = (digest[3] += D);