153 FF(a, b, c, d, x[0], S11, 0xd76aa478);
154 FF(d, a, b, c, x[1], S12, 0xe8c7b756);
155 FF(c, d, a, b, x[2], S13, 0x242070db);
156 FF(b, c, d, a, x[3], S14, 0xc1bdceee);
157 FF(a, b, c, d, x[4], S11, 0xf57c0faf);
158 FF(d, a, b, c, x[5], S12, 0x4787c62a);
159 FF(c, d, a, b, x[6], S13, 0xa8304613);
160 FF(b, c, d, a, x[7], S14, 0xfd469501);
161 FF(a, b, c, d, x[8], S11, 0x698098d8);
162 FF(d, a, b, c, x[9], S12, 0x8b44f7af);
163 FF(c, d, a, b, x[10], S13, 0xffff5bb1);
164 FF(b, c, d, a, x[11], S14, 0x895cd7be);
165 FF(a, b, c, d, x[12], S11, 0x6b901122);
166 FF(d, a, b, c, x[13], S12, 0xfd987193);
167 FF(c, d, a, b, x[14], S13, 0xa679438e);
168 FF(b, c, d, a, x[15], S14, 0x49b40821);
171 GG(a, b, c, d, x[1], S21, 0xf61e2562);
172 GG(d, a, b, c, x[6], S22, 0xc040b340);
173 GG(c, d, a, b, x[11], S23, 0x265e5a51);
174 GG(b, c, d, a, x[0], S24, 0xe9b6c7aa);
175 GG(a, b, c, d, x[5], S21, 0xd62f105d);
176 GG(d, a, b, c, x[10], S22, 0x2441453);
177 GG(c, d, a, b, x[15], S23, 0xd8a1e681);
178 GG(b, c, d, a, x[4], S24, 0xe7d3fbc8);
179 GG(a, b, c, d, x[9], S21, 0x21e1cde6);
180 GG(d, a, b, c, x[14], S22, 0xc33707d6);
181 GG(c, d, a, b, x[3], S23, 0xf4d50d87);
183 GG(b, c, d, a, x[8], S24, 0x455a14ed);
184 GG(a, b, c, d, x[13], S21, 0xa9e3e905);
185 GG(d, a, b, c, x[2], S22, 0xfcefa3f8);
186 GG(c, d, a, b, x[7], S23, 0x676f02d9);
187 GG(b, c, d, a, x[12], S24, 0x8d2a4c8a);
190 HH(a, b, c, d, x[5], S31, 0xfffa3942);
191 HH(d, a, b, c, x[8], S32, 0x8771f681);
192 HH(c, d, a, b, x[11], S33, 0x6d9d6122);
193 HH(b, c, d, a, x[14], S34, 0xfde5380c);
194 HH(a, b, c, d, x[1], S31, 0xa4beea44);
195 HH(d, a, b, c, x[4], S32, 0x4bdecfa9);
196 HH(c, d, a, b, x[7], S33, 0xf6bb4b60);
197 HH(b, c, d, a, x[10], S34, 0xbebfbc70);
198 HH(a, b, c, d, x[13], S31, 0x289b7ec6);
199 HH(d, a, b, c, x[0], S32, 0xeaa127fa);
200 HH(c, d, a, b, x[3], S33, 0xd4ef3085);
201 HH(b, c, d, a, x[6], S34, 0x4881d05);
202 HH(a, b, c, d, x[9], S31, 0xd9d4d039);
203 HH(d, a, b, c, x[12], S32, 0xe6db99e5);
204 HH(c, d, a, b, x[15], S33, 0x1fa27cf8);
205 HH(b, c, d, a, x[2], S34, 0xc4ac5665);
208 II(a, b, c, d, x[0], S41, 0xf4292244);
209 II(d, a, b, c, x[7], S42, 0x432aff97);
210 II(c, d, a, b, x[14], S43, 0xab9423a7);
211 II(b, c, d, a, x[5], S44, 0xfc93a039);
212 II(a, b, c, d, x[12], S41, 0x655b59c3);
213 II(d, a, b, c, x[3], S42, 0x8f0ccc92);
214 II(c, d, a, b, x[10], S43, 0xffeff47d);
215 II(b, c, d, a, x[1], S44, 0x85845dd1);
216 II(a, b, c, d, x[8], S41, 0x6fa87e4f);
217 II(d, a, b, c, x[15], S42, 0xfe2ce6e0);
218 II(c, d, a, b, x[6], S43, 0xa3014314);
219 II(b, c, d, a, x[13], S44, 0x4e0811a1);
220 II(a, b, c, d, x[4], S41, 0xf7537e82);
221 II(d, a, b, c, x[11], S42, 0xbd3af235);
222 II(c, d, a, b, x[2], S43, 0x2ad7d2bb);
223 II(b, c, d, a, x[9], S44, 0xeb86d391);