diablo120222.cl 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342
  1. /*
  2. * DiabloMiner - OpenCL miner for BitCoin
  3. * Copyright (C) 2010, 2011, 2012 Patrick McFarland <diablod3@gmail.com>
  4. *
  5. * This program is free software: you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation, either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more detail).
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. #ifdef VECTORS4
  19. typedef uint4 z;
  20. #elif defined(VECTORS2)
  21. typedef uint2 z;
  22. #else
  23. typedef uint z;
  24. #endif
  25. #ifdef BITALIGN
  26. #pragma OPENCL EXTENSION cl_amd_media_ops : enable
  27. #define Zrotr(a, b) amd_bitalign((z)a, (z)a, (z)(32 - b))
  28. #else
  29. #define Zrotr(a, b) rotate((z)a, (z)b)
  30. #endif
  31. #ifdef BFI_INT
  32. #define ZCh(a, b, c) amd_bytealign(a, b, c)
  33. #define ZMa(a, b, c) amd_bytealign((c ^ a), (b), (a))
  34. #else
  35. #define ZCh(a, b, c) bitselect((z)c, (z)b, (z)a)
  36. #define ZMa(a, b, c) bitselect((z)a, (z)b, (z)c ^ (z)a)
  37. #endif
  38. #define ZR25(n) ((Zrotr((n), 25) ^ Zrotr((n), 14) ^ ((n) >> 3U)))
  39. #define ZR15(n) ((Zrotr((n), 15) ^ Zrotr((n), 13) ^ ((n) >> 10U)))
  40. #define ZR26(n) ((Zrotr((n), 26) ^ Zrotr((n), 21) ^ Zrotr((n), 7)))
  41. #define ZR30(n) ((Zrotr((n), 30) ^ Zrotr((n), 19) ^ Zrotr((n), 10)))
  42. __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search(
  43. const z base,
  44. const uint PreVal4_state0, const uint PreVal4_state0_k7,
  45. const uint PreVal4_T1,
  46. const uint W18, const uint W19,
  47. const uint W16, const uint W17,
  48. const uint W16_plus_K16, const uint W17_plus_K17,
  49. const uint W31, const uint W32,
  50. const uint d1, const uint b1, const uint c1,
  51. const uint h1, const uint f1, const uint g1,
  52. const uint c1_plus_k5, const uint b1_plus_k6,
  53. const uint state0, const uint state1, const uint state2, const uint state3,
  54. const uint state4, const uint state5, const uint state6, const uint state7,
  55. __global uint * output)
  56. {
  57. z ZA[25];
  58. const z Znonce = base + (uint)(get_global_id(0));
  59. ZA[2]=Znonce;
  60. ZA[2]+=PreVal4_state0;
  61. ZA[3]=ZCh(ZA[2],b1,c1);
  62. ZA[3]+=d1;
  63. ZA[3]+=ZR26(ZA[2]);
  64. ZA[8]=Znonce;
  65. ZA[8]+=PreVal4_T1;
  66. ZA[4]=ZA[3];
  67. ZA[4]+=h1;
  68. ZA[5]=ZCh(ZA[4],ZA[2],b1);
  69. ZA[5]+=c1_plus_k5;
  70. ZA[5]+=ZR26(ZA[4]);
  71. ZA[3]+=ZMa(f1,g1,ZA[8]);
  72. ZA[3]+=ZR30(ZA[8]);
  73. ZA[6]=ZA[5];
  74. ZA[6]+=g1;
  75. ZA[2]=ZCh(ZA[6],ZA[4],ZA[2]);
  76. ZA[2]+=ZR26(ZA[6]);
  77. ZA[2]+=b1_plus_k6;
  78. ZA[5]+=ZMa(ZA[8],f1,ZA[3]);
  79. ZA[5]+=ZR30(ZA[3]);
  80. ZA[7]=ZA[2];
  81. ZA[7]+=f1;
  82. ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5]);
  83. ZA[2]+=ZR30(ZA[5]);
  84. ZA[10]=Znonce;
  85. ZA[10]+=PreVal4_state0_k7;
  86. ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4]);
  87. ZA[10]+=ZR26(ZA[7]);
  88. ZA[8]+=ZA[10];
  89. ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2]);
  90. ZA[10]+=ZR30(ZA[2]);
  91. ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6]);
  92. ZA[4]+=0xd807aa98U;
  93. ZA[4]+=ZR26(ZA[8]);
  94. ZA[3]+=ZA[4];
  95. ZA[4]+=ZMa(ZA[2],ZA[5],ZA[10]);
  96. ZA[4]+=ZR30(ZA[10]);
  97. ZA[6]+=ZCh(ZA[3],ZA[8],ZA[7]);
  98. ZA[6]+=0x12835b01U;
  99. ZA[6]+=ZR26(ZA[3]);
  100. ZA[5]+=ZA[6];
  101. ZA[6]+=ZMa(ZA[10],ZA[2],ZA[4]);
  102. ZA[6]+=ZR30(ZA[4]);
  103. ZA[7]+=ZCh(ZA[5],ZA[3],ZA[8]);
  104. ZA[7]+=0x243185beU;
  105. ZA[7]+=ZR26(ZA[5]);
  106. ZA[2]+=ZA[7];
  107. ZA[7]+=ZMa(ZA[4],ZA[10],ZA[6]);
  108. ZA[7]+=ZR30(ZA[6]);
  109. ZA[8]+=ZCh(ZA[2],ZA[5],ZA[3]);
  110. ZA[8]+=0x550c7dc3U;
  111. ZA[8]+=ZR26(ZA[2]);
  112. ZA[10]+=ZA[8];
  113. ZA[8]+=ZMa(ZA[6],ZA[4],ZA[7]);
  114. ZA[8]+=ZR30(ZA[7]);
  115. ZA[3]+=ZCh(ZA[10],ZA[2],ZA[5]);
  116. ZA[3]+=0x72be5d74U;
  117. ZA[3]+=ZR26(ZA[10]);
  118. ZA[4]+=ZA[3];
  119. ZA[3]+=ZMa(ZA[7],ZA[6],ZA[8]);
  120. ZA[3]+=ZR30(ZA[8]);
  121. ZA[5]+=ZCh(ZA[4],ZA[10],ZA[2]);
  122. ZA[5]+=0x80deb1feU;
  123. ZA[5]+=ZR26(ZA[4]);
  124. ZA[6]+=ZA[5];
  125. ZA[5]+=ZMa(ZA[8],ZA[7],ZA[3]);
  126. ZA[5]+=ZR30(ZA[3]);
  127. ZA[2]+=ZCh(ZA[6],ZA[4],ZA[10]);
  128. ZA[2]+=0x9bdc06a7U;
  129. ZA[2]+=ZR26(ZA[6]);
  130. ZA[7]+=ZA[2];
  131. ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5]);
  132. ZA[2]+=ZR30(ZA[5]);
  133. ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4]);
  134. ZA[10]+=0xc19bf3f4U;
  135. ZA[10]+=ZR26(ZA[7]);
  136. ZA[8]+=ZA[10];
  137. ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2]);
  138. ZA[10]+=ZR30(ZA[2]);
  139. ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6]);
  140. ZA[4]+=W16_plus_K16;
  141. ZA[4]+=ZR26(ZA[8]);
  142. ZA[0]=ZR25(Znonce);
  143. ZA[0]+=W18;
  144. ZA[11]=ZA[4];
  145. ZA[11]+=ZMa(ZA[2],ZA[5],ZA[10]);
  146. ZA[11]+=ZR30(ZA[10]);
  147. ZA[4]+=ZA[3];
  148. ZA[6]+=ZCh(ZA[4],ZA[8],ZA[7]);
  149. ZA[6]+=W17_plus_K17;
  150. ZA[6]+=ZR26(ZA[4]);
  151. ZA[5]+=ZA[6];
  152. ZA[6]+=ZMa(ZA[10],ZA[2],ZA[11]);
  153. ZA[6]+=ZR30(ZA[11]);
  154. ZA[3]=Znonce;
  155. ZA[3]+=W19;
  156. ZA[7]+=ZCh(ZA[5],ZA[4],ZA[8]);
  157. ZA[7]+=ZA[0];
  158. ZA[7]+=0x0fc19dc6U;
  159. ZA[7]+=ZR26(ZA[5]);
  160. ZA[1]=ZR15(ZA[0]);
  161. ZA[1]+=0x80000000U;
  162. ZA[12]=ZA[7];
  163. ZA[12]+=ZMa(ZA[11],ZA[10],ZA[6]);
  164. ZA[12]+=ZR30(ZA[6]);
  165. ZA[7]+=ZA[2];
  166. ZA[8]+=ZCh(ZA[7],ZA[5],ZA[4]);
  167. ZA[8]+=ZA[3];
  168. ZA[8]+=0x240ca1ccU;
  169. ZA[8]+=ZR26(ZA[7]);
  170. ZA[2]=ZR15(ZA[3]);
  171. ZA[13]=ZA[8];
  172. ZA[13]+=ZMa(ZA[6],ZA[11],ZA[12]);
  173. ZA[13]+=ZR30(ZA[12]);
  174. ZA[10]+=ZA[8];
  175. ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]);
  176. ZA[4]+=ZA[1];
  177. ZA[4]+=0x2de92c6fU;
  178. ZA[4]+=ZR26(ZA[10]);
  179. ZA[8]=ZR15(ZA[1]);
  180. ZA[8]+=0x00000280U;
  181. ZA[14]=ZA[4];
  182. ZA[14]+=ZMa(ZA[12],ZA[6],ZA[13]);
  183. ZA[14]+=ZR30(ZA[13]);
  184. ZA[4]+=ZA[11];
  185. ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7]);
  186. ZA[5]+=ZA[2];
  187. ZA[5]+=0x4a7484aaU;
  188. ZA[5]+=ZR26(ZA[4]);
  189. ZA[11]=ZR15(ZA[2]);
  190. ZA[11]+=W16;
  191. ZA[15]=ZA[5];
  192. ZA[15]+=ZMa(ZA[13],ZA[12],ZA[14]);
  193. ZA[15]+=ZR30(ZA[14]);
  194. ZA[5]+=ZA[6];
  195. ZA[6]=ZCh(ZA[5],ZA[4],ZA[10]);
  196. ZA[6]+=ZA[7];
  197. ZA[6]+=ZA[8];
  198. ZA[6]+=0x5cb0a9dcU;
  199. ZA[6]+=ZR26(ZA[5]);
  200. ZA[7]=ZR15(ZA[8]);
  201. ZA[7]+=W17;
  202. ZA[16]=ZA[6];
  203. ZA[16]+=ZMa(ZA[14],ZA[13],ZA[15]);
  204. ZA[16]+=ZR30(ZA[15]);
  205. ZA[6]+=ZA[12];
  206. ZA[10]+=ZCh(ZA[6],ZA[5],ZA[4]);
  207. ZA[10]+=ZA[11];
  208. ZA[10]+=0x76f988daU;
  209. ZA[10]+=ZR26(ZA[6]);
  210. ZA[12]=ZR15(ZA[11]);
  211. ZA[12]+=ZA[0];
  212. ZA[17]=ZA[10];
  213. ZA[17]+=ZMa(ZA[15],ZA[14],ZA[16]);
  214. ZA[17]+=ZR30(ZA[16]);
  215. ZA[10]+=ZA[13];
  216. ZA[13]=ZCh(ZA[10],ZA[6],ZA[5]);
  217. ZA[13]+=ZA[4];
  218. ZA[13]+=ZA[7];
  219. ZA[13]+=0x983e5152U;
  220. ZA[13]+=ZR26(ZA[10]);
  221. ZA[4]=ZR15(ZA[7]);
  222. ZA[4]+=ZA[3];
  223. ZA[14]+=ZA[13];
  224. ZA[13]+=ZMa(ZA[16],ZA[15],ZA[17]);
  225. ZA[13]+=ZR30(ZA[17]);
  226. ZA[5]+=ZCh(ZA[14],ZA[10],ZA[6]);
  227. ZA[5]+=ZA[12];
  228. ZA[5]+=0xa831c66dU;
  229. ZA[5]+=ZR26(ZA[14]);
  230. ZA[9]=ZR15(ZA[12]);
  231. ZA[9]+=ZA[1];
  232. ZA[18]=ZA[5];
  233. ZA[18]+=ZMa(ZA[17],ZA[16],ZA[13]);
  234. ZA[18]+=ZR30(ZA[13]);
  235. ZA[5]+=ZA[15];
  236. ZA[15]=ZCh(ZA[5],ZA[14],ZA[10]);
  237. ZA[15]+=ZA[6];
  238. ZA[15]+=ZA[4];
  239. ZA[15]+=0xb00327c8U;
  240. ZA[15]+=ZR26(ZA[5]);
  241. ZA[6]=ZR15(ZA[4]);
  242. ZA[6]+=ZA[2];
  243. ZA[19]=ZA[15];
  244. ZA[19]+=ZMa(ZA[13],ZA[17],ZA[18]);
  245. ZA[19]+=ZR30(ZA[18]);
  246. ZA[15]+=ZA[16];
  247. ZA[16]=ZCh(ZA[15],ZA[5],ZA[14]);
  248. ZA[16]+=ZA[10];
  249. ZA[16]+=ZA[9];
  250. ZA[16]+=0xbf597fc7U;
  251. ZA[16]+=ZR26(ZA[15]);
  252. ZA[10]=ZR15(ZA[9]);
  253. ZA[10]+=ZA[8];
  254. ZA[20]=ZA[16];
  255. ZA[20]+=ZMa(ZA[18],ZA[13],ZA[19]);
  256. ZA[20]+=ZR30(ZA[19]);
  257. ZA[16]+=ZA[17];
  258. ZA[14]+=ZCh(ZA[16],ZA[15],ZA[5]);
  259. ZA[14]+=ZA[6];
  260. ZA[14]+=0xc6e00bf3U;
  261. ZA[14]+=ZR26(ZA[16]);
  262. ZA[17]=ZR15(ZA[6]);
  263. ZA[17]+=ZA[11];
  264. ZA[17]+=0x00A00055U;
  265. ZA[21]=ZA[14];
  266. ZA[21]+=ZMa(ZA[19],ZA[18],ZA[20]);
  267. ZA[21]+=ZR30(ZA[20]);
  268. ZA[14]+=ZA[13];
  269. ZA[13]=ZCh(ZA[14],ZA[16],ZA[15]);
  270. ZA[13]+=ZA[5];
  271. ZA[13]+=ZA[10];
  272. ZA[13]+=0xd5a79147U;
  273. ZA[13]+=ZR26(ZA[14]);
  274. ZA[5]=ZR15(ZA[10]);
  275. ZA[5]+=ZA[7];
  276. ZA[5]+=W31;
  277. ZA[22]=ZA[13];
  278. ZA[22]+=ZMa(ZA[20],ZA[19],ZA[21]);
  279. ZA[22]+=ZR30(ZA[21]);
  280. ZA[13]+=ZA[18];
  281. ZA[18]=ZCh(ZA[13],ZA[14],ZA[16]);
  282. ZA[18]+=ZA[15];
  283. ZA[18]+=ZA[17];
  284. ZA[18]+=0x06ca6351U;
  285. ZA[18]+=ZR26(ZA[13]);
  286. ZA[15]=ZR15(ZA[17]);
  287. ZA[15]+=ZA[12];
  288. ZA[15]+=W32;
  289. ZA[23]=ZA[18];
  290. ZA[23]+=ZMa(ZA[21],ZA[20],ZA[22]);
  291. ZA[23]+=ZR30(ZA[22]);
  292. ZA[18]+=ZA[19];
  293. ZA[19]=ZCh(ZA[18],ZA[13],ZA[14]);
  294. ZA[19]+=ZA[16];
  295. ZA[19]+=ZA[5];
  296. ZA[19]+=0x14292967U;
  297. ZA[19]+=ZR26(ZA[18]);
  298. ZA[16]=ZR15(ZA[5]);
  299. ZA[16]+=ZA[4];
  300. ZA[16]+=ZR25(ZA[0]);
  301. ZA[16]+=W17;
  302. ZA[20]+=ZA[19];
  303. ZA[19]+=ZMa(ZA[22],ZA[21],ZA[23]);
  304. ZA[19]+=ZR30(ZA[23]);
  305. ZA[14]+=ZCh(ZA[20],ZA[18],ZA[13]);
  306. ZA[14]+=ZA[15];
  307. ZA[14]+=0x27b70a85U;
  308. ZA[14]+=ZR26(ZA[20]);
  309. ZA[0]+=ZR15(ZA[15]);
  310. ZA[0]+=ZR25(ZA[3]);
  311. ZA[0]+=ZA[9];
  312. ZA[24]=ZA[14];
  313. ZA[24]+=ZMa(ZA[23],ZA[22],ZA[19]);
  314. ZA[24]+=ZR30(ZA[19]);
  315. ZA[14]+=ZA[21];
  316. ZA[21]=ZCh(ZA[14],ZA[20],ZA[18]);
  317. ZA[21]+=ZA[13];
  318. ZA[21]+=ZA[16];
  319. ZA[21]+=0x2e1b2138U;
  320. ZA[21]+=ZR26(ZA[14]);
  321. ZA[3]+=ZR15(ZA[16]);
  322. ZA[3]+=ZR25(ZA[1]);
  323. ZA[3]+=ZA[6];
  324. ZA[22]+=ZA[21];
  325. ZA[21]+=ZMa(ZA[19],ZA[23],ZA[24]);
  326. ZA[21]+=ZR30(ZA[24]);
  327. ZA[13]=ZCh(ZA[22],ZA[14],ZA[20]);
  328. ZA[13]+=ZA[18];
  329. ZA[13]+=ZA[0];
  330. ZA[13]+=0x4d2c6dfcU;
  331. ZA[13]+=ZR26(ZA[22]);
  332. ZA[1]+=ZR15(ZA[0]);
  333. ZA[1]+=ZR25(ZA[2]);
  334. ZA[1]+=ZA[10];
  335. ZA[18]=ZA[13];
  336. ZA[18]+=ZMa(ZA[24],ZA[19],ZA[21]);
  337. ZA[18]+=ZR30(ZA[21]);
  338. ZA[13]+=ZA[23];
  339. ZA[20]+=ZCh(ZA[13],ZA[22],ZA[14]);
  340. ZA[20]+=ZA[3];
  341. ZA[20]+=0x53380d13U;
  342. ZA[20]+=ZR26(ZA[13]);
  343. ZA[2]+=ZR15(ZA[3]);
  344. ZA[2]+=ZR25(ZA[8]);
  345. ZA[2]+=ZA[17];
  346. ZA[23]=ZA[19];
  347. ZA[23]+=ZA[20];
  348. ZA[20]+=ZMa(ZA[21],ZA[24],ZA[18]);
  349. ZA[20]+=ZR30(ZA[18]);
  350. ZA[19]=ZCh(ZA[23],ZA[13],ZA[22]);
  351. ZA[19]+=ZA[14];
  352. ZA[19]+=ZA[1];
  353. ZA[19]+=0x650a7354U;
  354. ZA[19]+=ZR26(ZA[23]);
  355. ZA[8]+=ZR15(ZA[1]);
  356. ZA[8]+=ZR25(ZA[11]);
  357. ZA[8]+=ZA[5];
  358. ZA[14]=ZA[19];
  359. ZA[14]+=ZMa(ZA[18],ZA[21],ZA[20]);
  360. ZA[14]+=ZR30(ZA[20]);
  361. ZA[19]+=ZA[24];
  362. ZA[22]+=ZCh(ZA[19],ZA[23],ZA[13]);
  363. ZA[22]+=ZA[2];
  364. ZA[22]+=0x766a0abbU;
  365. ZA[22]+=ZR26(ZA[19]);
  366. ZA[11]+=ZR15(ZA[2]);
  367. ZA[11]+=ZR25(ZA[7]);
  368. ZA[11]+=ZA[15];
  369. ZA[24]=ZA[21];
  370. ZA[24]+=ZA[22];
  371. ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14]);
  372. ZA[22]+=ZR30(ZA[14]);
  373. ZA[21]=ZCh(ZA[24],ZA[19],ZA[23]);
  374. ZA[21]+=ZA[13];
  375. ZA[21]+=ZA[8];
  376. ZA[21]+=0x81c2c92eU;
  377. ZA[21]+=ZR26(ZA[24]);
  378. ZA[7]+=ZR15(ZA[8]);
  379. ZA[7]+=ZR25(ZA[12]);
  380. ZA[7]+=ZA[16];
  381. ZA[18]+=ZA[21];
  382. ZA[21]+=ZMa(ZA[14],ZA[20],ZA[22]);
  383. ZA[21]+=ZR30(ZA[22]);
  384. ZA[23]+=ZCh(ZA[18],ZA[24],ZA[19]);
  385. ZA[23]+=ZA[11];
  386. ZA[23]+=0x92722c85U;
  387. ZA[23]+=ZR26(ZA[18]);
  388. ZA[12]+=ZR15(ZA[11]);
  389. ZA[12]+=ZR25(ZA[4]);
  390. ZA[12]+=ZA[0];
  391. ZA[20]+=ZA[23];
  392. ZA[13]=ZA[23];
  393. ZA[13]+=ZMa(ZA[22],ZA[14],ZA[21]);
  394. ZA[13]+=ZR30(ZA[21]);
  395. ZA[23]=ZCh(ZA[20],ZA[18],ZA[24]);
  396. ZA[23]+=ZA[19];
  397. ZA[23]+=ZA[7];
  398. ZA[23]+=0xa2bfe8a1U;
  399. ZA[23]+=ZR26(ZA[20]);
  400. ZA[4]+=ZR15(ZA[7]);
  401. ZA[4]+=ZR25(ZA[9]);
  402. ZA[4]+=ZA[3];
  403. ZA[14]+=ZA[23];
  404. ZA[23]+=ZMa(ZA[21],ZA[22],ZA[13]);
  405. ZA[23]+=ZR30(ZA[13]);
  406. ZA[24]+=ZCh(ZA[14],ZA[20],ZA[18]);
  407. ZA[24]+=ZA[12];
  408. ZA[24]+=0xa81a664bU;
  409. ZA[24]+=ZR26(ZA[14]);
  410. ZA[9]+=ZR15(ZA[12]);
  411. ZA[9]+=ZA[1];
  412. ZA[9]+=ZR25(ZA[6]);
  413. ZA[19]=ZA[24];
  414. ZA[19]+=ZMa(ZA[13],ZA[21],ZA[23]);
  415. ZA[19]+=ZR30(ZA[23]);
  416. ZA[22]+=ZA[24];
  417. ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20]);
  418. ZA[18]+=ZA[4];
  419. ZA[18]+=0xc24b8b70U;
  420. ZA[18]+=ZR26(ZA[22]);
  421. ZA[6]+=ZR15(ZA[4]);
  422. ZA[6]+=ZA[2];
  423. ZA[6]+=ZR25(ZA[10]);
  424. ZA[24]=ZA[21];
  425. ZA[24]+=ZA[18];
  426. ZA[18]+=ZMa(ZA[23],ZA[13],ZA[19]);
  427. ZA[18]+=ZR30(ZA[19]);
  428. ZA[20]+=ZCh(ZA[24],ZA[22],ZA[14]);
  429. ZA[20]+=ZA[9];
  430. ZA[20]+=0xc76c51a3U;
  431. ZA[20]+=ZR26(ZA[24]);
  432. ZA[10]+=ZR15(ZA[9]);
  433. ZA[10]+=ZR25(ZA[17]);
  434. ZA[10]+=ZA[8];
  435. ZA[13]+=ZA[20];
  436. ZA[20]+=ZMa(ZA[19],ZA[23],ZA[18]);
  437. ZA[20]+=ZR30(ZA[18]);
  438. ZA[14]+=ZCh(ZA[13],ZA[24],ZA[22]);
  439. ZA[14]+=ZA[6];
  440. ZA[14]+=0xd192e819U;
  441. ZA[14]+=ZR26(ZA[13]);
  442. ZA[17]+=ZR15(ZA[6]);
  443. ZA[17]+=ZR25(ZA[5]);
  444. ZA[17]+=ZA[11];
  445. ZA[21]=ZA[23];
  446. ZA[21]+=ZA[14];
  447. ZA[14]+=ZMa(ZA[18],ZA[19],ZA[20]);
  448. ZA[14]+=ZR30(ZA[20]);
  449. ZA[22]+=ZCh(ZA[21],ZA[13],ZA[24]);
  450. ZA[22]+=ZA[10];
  451. ZA[22]+=0xd6990624U;
  452. ZA[22]+=ZR26(ZA[21]);
  453. ZA[5]+=ZR15(ZA[10]);
  454. ZA[5]+=ZA[7];
  455. ZA[5]+=ZR25(ZA[15]);
  456. ZA[19]+=ZA[22];
  457. ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14]);
  458. ZA[22]+=ZR30(ZA[14]);
  459. ZA[24]+=ZCh(ZA[19],ZA[21],ZA[13]);
  460. ZA[24]+=ZA[17];
  461. ZA[24]+=0xf40e3585U;
  462. ZA[24]+=ZR26(ZA[19]);
  463. ZA[15]+=ZR15(ZA[17]);
  464. ZA[15]+=ZA[12];
  465. ZA[15]+=ZR25(ZA[16]);
  466. ZA[18]+=ZA[24];
  467. ZA[23]=ZA[24];
  468. ZA[23]+=ZMa(ZA[14],ZA[20],ZA[22]);
  469. ZA[23]+=ZR30(ZA[22]);
  470. ZA[13]+=ZCh(ZA[18],ZA[19],ZA[21]);
  471. ZA[13]+=ZA[5];
  472. ZA[13]+=0x106aa070U;
  473. ZA[13]+=ZR26(ZA[18]);
  474. ZA[16]+=ZR15(ZA[5]);
  475. ZA[16]+=ZA[4];
  476. ZA[16]+=ZR25(ZA[0]);
  477. ZA[20]+=ZA[13];
  478. ZA[13]+=ZMa(ZA[22],ZA[14],ZA[23]);
  479. ZA[13]+=ZR30(ZA[23]);
  480. ZA[21]+=ZCh(ZA[20],ZA[18],ZA[19]);
  481. ZA[21]+=ZA[15];
  482. ZA[21]+=0x19a4c116U;
  483. ZA[21]+=ZR26(ZA[20]);
  484. ZA[0]+=ZR15(ZA[15]);
  485. ZA[0]+=ZA[9];
  486. ZA[0]+=ZR25(ZA[3]);
  487. ZA[14]+=ZA[21];
  488. ZA[24]=ZA[21];
  489. ZA[24]+=ZMa(ZA[23],ZA[22],ZA[13]);
  490. ZA[24]+=ZR30(ZA[13]);
  491. ZA[19]+=ZCh(ZA[14],ZA[20],ZA[18]);
  492. ZA[19]+=ZA[16];
  493. ZA[19]+=0x1e376c08U;
  494. ZA[19]+=ZR26(ZA[14]);
  495. ZA[3]+=ZR15(ZA[16]);
  496. ZA[3]+=ZA[6];
  497. ZA[3]+=ZR25(ZA[1]);
  498. ZA[22]+=ZA[19];
  499. ZA[19]+=ZMa(ZA[13],ZA[23],ZA[24]);
  500. ZA[19]+=ZR30(ZA[24]);
  501. ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20]);
  502. ZA[18]+=ZA[0];
  503. ZA[18]+=0x2748774cU;
  504. ZA[18]+=ZR26(ZA[22]);
  505. ZA[1]+=ZR15(ZA[0]);
  506. ZA[1]+=ZA[10];
  507. ZA[1]+=ZR25(ZA[2]);
  508. ZA[23]+=ZA[18];
  509. ZA[21]=ZA[18];
  510. ZA[21]+=ZMa(ZA[24],ZA[13],ZA[19]);
  511. ZA[21]+=ZR30(ZA[19]);
  512. ZA[20]+=ZCh(ZA[23],ZA[22],ZA[14]);
  513. ZA[20]+=ZA[3];
  514. ZA[20]+=0x34b0bcb5U;
  515. ZA[20]+=ZR26(ZA[23]);
  516. ZA[2]+=ZR15(ZA[3]);
  517. ZA[2]+=ZA[17];
  518. ZA[2]+=ZR25(ZA[8]);
  519. ZA[13]+=ZA[20];
  520. ZA[20]+=ZMa(ZA[19],ZA[24],ZA[21]);
  521. ZA[20]+=ZR30(ZA[21]);
  522. ZA[14]+=ZCh(ZA[13],ZA[23],ZA[22]);
  523. ZA[14]+=ZA[1];
  524. ZA[14]+=0x391c0cb3U;
  525. ZA[14]+=ZR26(ZA[13]);
  526. ZA[8]+=ZR15(ZA[1]);
  527. ZA[8]+=ZA[5];
  528. ZA[8]+=ZR25(ZA[11]);
  529. ZA[24]+=ZA[14];
  530. ZA[18]=ZA[14];
  531. ZA[18]+=ZMa(ZA[21],ZA[19],ZA[20]);
  532. ZA[18]+=ZR30(ZA[20]);
  533. ZA[22]+=ZCh(ZA[24],ZA[13],ZA[23]);
  534. ZA[22]+=ZA[2];
  535. ZA[22]+=0x4ed8aa4aU;
  536. ZA[22]+=ZR26(ZA[24]);
  537. ZA[11]+=ZR15(ZA[2]);
  538. ZA[11]+=ZA[15];
  539. ZA[11]+=ZR25(ZA[7]);
  540. ZA[19]+=ZA[22];
  541. ZA[22]+=ZMa(ZA[20],ZA[21],ZA[18]);
  542. ZA[22]+=ZR30(ZA[18]);
  543. ZA[23]+=ZCh(ZA[19],ZA[24],ZA[13]);
  544. ZA[23]+=ZA[8];
  545. ZA[23]+=0x5b9cca4fU;
  546. ZA[23]+=ZR26(ZA[19]);
  547. ZA[7]+=ZR15(ZA[8]);
  548. ZA[7]+=ZA[16];
  549. ZA[7]+=ZR25(ZA[12]);
  550. ZA[21]+=ZA[23];
  551. ZA[23]+=ZMa(ZA[18],ZA[20],ZA[22]);
  552. ZA[23]+=ZR30(ZA[22]);
  553. ZA[13]+=ZCh(ZA[21],ZA[19],ZA[24]);
  554. ZA[13]+=ZA[11];
  555. ZA[13]+=0x682e6ff3U;
  556. ZA[13]+=ZR26(ZA[21]);
  557. ZA[0]+=ZR15(ZA[11]);
  558. ZA[0]+=ZR25(ZA[4]);
  559. ZA[0]+=ZA[12];
  560. ZA[12]=ZA[20];
  561. ZA[12]+=ZA[13];
  562. ZA[16]=ZA[13];
  563. ZA[16]+=ZMa(ZA[22],ZA[18],ZA[23]);
  564. ZA[16]+=ZR30(ZA[23]);
  565. ZA[20]=ZCh(ZA[12],ZA[21],ZA[19]);
  566. ZA[20]+=ZA[24];
  567. ZA[20]+=ZA[7];
  568. ZA[20]+=0x748f82eeU;
  569. ZA[20]+=ZR26(ZA[12]);
  570. ZA[3]+=ZR15(ZA[7]);
  571. ZA[3]+=ZR25(ZA[9]);
  572. ZA[3]+=ZA[4];
  573. ZA[18]+=ZA[20];
  574. ZA[20]+=ZMa(ZA[23],ZA[22],ZA[16]);
  575. ZA[20]+=ZR30(ZA[16]);
  576. ZA[19]+=ZCh(ZA[18],ZA[12],ZA[21]);
  577. ZA[19]+=ZA[0];
  578. ZA[19]+=0x78a5636fU;
  579. ZA[19]+=ZR26(ZA[18]);
  580. ZA[1]+=ZR15(ZA[0]);
  581. ZA[1]+=ZR25(ZA[6]);
  582. ZA[1]+=ZA[9];
  583. ZA[9]=ZA[22];
  584. ZA[9]+=ZA[19];
  585. ZA[4]=ZA[19];
  586. ZA[4]+=ZMa(ZA[16],ZA[23],ZA[20]);
  587. ZA[4]+=ZR30(ZA[20]);
  588. ZA[0]=ZCh(ZA[9],ZA[18],ZA[12]);
  589. ZA[0]+=ZA[21];
  590. ZA[0]+=ZA[3];
  591. ZA[0]+=0x84c87814U;
  592. ZA[0]+=ZR26(ZA[9]);
  593. ZA[2]+=ZR15(ZA[3]);
  594. ZA[2]+=ZR25(ZA[10]);
  595. ZA[2]+=ZA[6];
  596. ZA[6]=ZA[23];
  597. ZA[6]+=ZA[0];
  598. ZA[0]+=ZMa(ZA[20],ZA[16],ZA[4]);
  599. ZA[0]+=ZR30(ZA[4]);
  600. ZA[12]+=ZCh(ZA[6],ZA[9],ZA[18]);
  601. ZA[12]+=ZA[1];
  602. ZA[12]+=0x8cc70208U;
  603. ZA[12]+=ZR26(ZA[6]);
  604. ZA[8]+=ZR15(ZA[1]);
  605. ZA[8]+=ZR25(ZA[17]);
  606. ZA[8]+=ZA[10];
  607. ZA[16]+=ZA[12];
  608. ZA[10]=ZA[12];
  609. ZA[10]+=ZMa(ZA[4],ZA[20],ZA[0]);
  610. ZA[10]+=ZR30(ZA[0]);
  611. ZA[1]=ZCh(ZA[16],ZA[6],ZA[9]);
  612. ZA[1]+=ZA[18];
  613. ZA[1]+=ZA[2];
  614. ZA[1]+=0x90befffaU;
  615. ZA[1]+=ZR26(ZA[16]);
  616. ZA[3]=ZA[20];
  617. ZA[3]+=ZA[1];
  618. ZA[1]+=ZMa(ZA[0],ZA[4],ZA[10]);
  619. ZA[1]+=ZR30(ZA[10]);
  620. ZA[9]+=ZCh(ZA[3],ZA[16],ZA[6]);
  621. ZA[9]+=ZA[8];
  622. ZA[9]+=0xa4506cebU;
  623. ZA[9]+=ZR26(ZA[3]);
  624. ZA[12]=ZA[9];
  625. ZA[12]+=ZMa(ZA[10],ZA[0],ZA[1]);
  626. ZA[12]+=ZR30(ZA[1]);
  627. ZA[4]+=ZA[9];
  628. ZA[6]+=ZCh(ZA[4],ZA[3],ZA[16]);
  629. ZA[6]+=ZR15(ZA[2]);
  630. ZA[6]+=ZA[11];
  631. ZA[6]+=ZR25(ZA[5]);
  632. ZA[6]+=ZA[17];
  633. ZA[6]+=0xbef9a3f7U;
  634. ZA[6]+=ZR26(ZA[4]);
  635. ZA[17]=ZA[0];
  636. ZA[17]+=ZA[6];
  637. ZA[9]=ZA[6];
  638. ZA[9]+=ZMa(ZA[1],ZA[10],ZA[12]);
  639. ZA[9]+=ZR30(ZA[12]);
  640. ZA[7]+=ZCh(ZA[17],ZA[4],ZA[3]);
  641. ZA[7]+=ZA[16];
  642. ZA[7]+=ZR15(ZA[8]);
  643. ZA[7]+=ZR25(ZA[15]);
  644. ZA[7]+=ZA[5];
  645. ZA[7]+=0xc67178f2U;
  646. ZA[7]+=ZR26(ZA[17]);
  647. ZA[5]=ZA[9];
  648. ZA[5]+=state1;
  649. ZA[9]=ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9]);
  650. ZA[9]+=ZA[7];
  651. ZA[9]+=state0;
  652. ZA[15]=ZA[9];
  653. ZA[15]+=0x98c7e2a2U;
  654. ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU);
  655. ZA[0]+=ZA[5];
  656. ZA[0]+=0x90bb1e3cU;
  657. ZA[0]+=ZR26(ZA[15]);
  658. ZA[12]+=state2;
  659. ZA[2]=ZA[9];
  660. ZA[2]+=0xfc08884dU;
  661. ZA[8]=ZA[0];
  662. ZA[8]+=0x3c6ef372U;
  663. ZA[11]=ZCh(ZA[8],ZA[15],0x510e527fU);
  664. ZA[11]+=ZA[12];
  665. ZA[11]+=0x50c6645bU;
  666. ZA[11]+=ZR26(ZA[8]);
  667. ZA[1]+=state3;
  668. ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]);
  669. ZA[0]+=ZR30(ZA[2]);
  670. ZA[6]=ZA[11];
  671. ZA[6]+=0xbb67ae85U;
  672. ZA[15]=ZCh(ZA[6],ZA[8],ZA[15]);
  673. ZA[15]+=ZR26(ZA[6]);
  674. ZA[15]+=ZA[1];
  675. ZA[15]+=0x3ac42e24U;
  676. ZA[10]+=ZA[7];
  677. ZA[10]+=state4;
  678. ZA[7]=ZA[15];
  679. ZA[7]+=0x6a09e667U;
  680. ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0]);
  681. ZA[11]+=ZR30(ZA[0]);
  682. ZA[17]+=state5;
  683. ZA[16]=ZCh(ZA[7],ZA[6],ZA[8]);
  684. ZA[16]+=ZA[10];
  685. ZA[16]+=ZA[9];
  686. ZA[16]+=0xd21ea4fdU;
  687. ZA[16]+=ZR26(ZA[7]);
  688. ZA[24]=ZA[2];
  689. ZA[24]+=ZA[16];
  690. ZA[2]=ZMa(ZA[0],ZA[2],ZA[11]);
  691. ZA[2]+=ZA[15];
  692. ZA[2]+=ZR30(ZA[11]);
  693. ZA[4]+=state6;
  694. ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6]);
  695. ZA[8]+=ZA[17];
  696. ZA[8]+=0x59f111f1U;
  697. ZA[8]+=ZR26(ZA[24]);
  698. ZA[15]=ZA[0];
  699. ZA[15]+=ZA[8];
  700. ZA[16]+=ZMa(ZA[11],ZA[0],ZA[2]);
  701. ZA[16]+=ZR30(ZA[2]);
  702. ZA[3]+=state7;
  703. ZA[6]+=ZCh(ZA[15],ZA[24],ZA[7]);
  704. ZA[6]+=ZA[4];
  705. ZA[6]+=0x923f82a4U;
  706. ZA[6]+=ZR26(ZA[15]);
  707. ZA[0]=ZA[11];
  708. ZA[0]+=ZA[6];
  709. ZA[8]+=ZMa(ZA[2],ZA[11],ZA[16]);
  710. ZA[8]+=ZR30(ZA[16]);
  711. ZA[7]+=ZCh(ZA[0],ZA[15],ZA[24]);
  712. ZA[7]+=ZA[3];
  713. ZA[7]+=0xab1c5ed5U;
  714. ZA[7]+=ZR26(ZA[0]);
  715. ZA[11]=ZA[2];
  716. ZA[11]+=ZA[7];
  717. ZA[2]=ZMa(ZA[16],ZA[2],ZA[8]);
  718. ZA[2]+=ZA[6];
  719. ZA[2]+=ZR30(ZA[8]);
  720. ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15]);
  721. ZA[24]+=0x5807aa98U;
  722. ZA[24]+=ZR26(ZA[11]);
  723. ZA[6]=ZA[16];
  724. ZA[6]+=ZA[24];
  725. ZA[7]+=ZMa(ZA[8],ZA[16],ZA[2]);
  726. ZA[7]+=ZR30(ZA[2]);
  727. ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]);
  728. ZA[15]+=0x12835b01U;
  729. ZA[15]+=ZR26(ZA[6]);
  730. ZA[16]=ZA[8];
  731. ZA[16]+=ZA[15];
  732. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  733. ZA[8]+=ZA[24];
  734. ZA[8]+=ZR30(ZA[7]);
  735. ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]);
  736. ZA[0]+=0x243185beU;
  737. ZA[0]+=ZR26(ZA[16]);
  738. ZA[14]=ZA[2];
  739. ZA[14]+=ZA[0];
  740. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  741. ZA[2]+=ZA[15];
  742. ZA[2]+=ZR30(ZA[8]);
  743. ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6]);
  744. ZA[11]+=0x550c7dc3U;
  745. ZA[11]+=ZR26(ZA[14]);
  746. ZA[15]=ZA[7];
  747. ZA[15]+=ZA[11];
  748. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  749. ZA[7]+=ZA[0];
  750. ZA[7]+=ZR30(ZA[2]);
  751. ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16]);
  752. ZA[6]+=0x72be5d74U;
  753. ZA[6]+=ZR26(ZA[15]);
  754. ZA[0]=ZA[8];
  755. ZA[0]+=ZA[6];
  756. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  757. ZA[8]+=ZA[11];
  758. ZA[8]+=ZR30(ZA[7]);
  759. ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14]);
  760. ZA[16]+=0x80deb1feU;
  761. ZA[16]+=ZR26(ZA[0]);
  762. ZA[11]=ZA[2];
  763. ZA[11]+=ZA[16];
  764. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  765. ZA[2]+=ZA[6];
  766. ZA[2]+=ZR30(ZA[8]);
  767. ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15]);
  768. ZA[14]+=0x9bdc06a7U;
  769. ZA[14]+=ZR26(ZA[11]);
  770. ZA[9]+=ZR25(ZA[5]);
  771. ZA[6]=ZA[7];
  772. ZA[6]+=ZA[14];
  773. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  774. ZA[7]+=ZA[16];
  775. ZA[7]+=ZR30(ZA[2]);
  776. ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]);
  777. ZA[15]+=0xc19bf274U;
  778. ZA[15]+=ZR26(ZA[6]);
  779. ZA[5]+=ZR25(ZA[12]);
  780. ZA[5]+=0x00a00000U;
  781. ZA[16]=ZA[8];
  782. ZA[16]+=ZA[15];
  783. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  784. ZA[8]+=ZA[14];
  785. ZA[8]+=ZR30(ZA[7]);
  786. ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]);
  787. ZA[0]+=ZA[9];
  788. ZA[0]+=0xe49b69c1U;
  789. ZA[0]+=ZR26(ZA[16]);
  790. ZA[21]=ZA[2];
  791. ZA[21]+=ZA[0];
  792. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  793. ZA[2]+=ZA[15];
  794. ZA[2]+=ZR30(ZA[8]);
  795. ZA[11]+=ZCh(ZA[21],ZA[16],ZA[6]);
  796. ZA[11]+=ZA[5];
  797. ZA[11]+=0xefbe4786U;
  798. ZA[11]+=ZR26(ZA[21]);
  799. ZA[12]+=ZR15(ZA[9]);
  800. ZA[12]+=ZR25(ZA[1]);
  801. ZA[1]+=ZR15(ZA[5]);
  802. ZA[1]+=ZR25(ZA[10]);
  803. ZA[15]=ZA[7];
  804. ZA[15]+=ZA[11];
  805. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  806. ZA[7]+=ZA[0];
  807. ZA[7]+=ZR30(ZA[2]);
  808. ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16]);
  809. ZA[6]+=0x0fc19dc6U;
  810. ZA[6]+=ZA[12];
  811. ZA[6]+=ZR26(ZA[15]);
  812. ZA[0]=ZR15(ZA[12]);
  813. ZA[0]+=ZR25(ZA[17]);
  814. ZA[0]+=ZA[10];
  815. ZA[10]=ZA[8];
  816. ZA[10]+=ZA[6];
  817. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  818. ZA[8]+=ZA[11];
  819. ZA[8]+=ZR30(ZA[7]);
  820. ZA[16]+=ZCh(ZA[10],ZA[15],ZA[21]);
  821. ZA[16]+=ZA[1];
  822. ZA[16]+=0x240ca1ccU;
  823. ZA[16]+=ZR26(ZA[10]);
  824. ZA[17]+=ZR15(ZA[1]);
  825. ZA[17]+=ZR25(ZA[4]);
  826. ZA[11]=ZA[2];
  827. ZA[11]+=ZA[16];
  828. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  829. ZA[2]+=ZA[6];
  830. ZA[2]+=ZR30(ZA[8]);
  831. ZA[21]+=ZCh(ZA[11],ZA[10],ZA[15]);
  832. ZA[21]+=ZA[0];
  833. ZA[21]+=0x2de92c6fU;
  834. ZA[21]+=ZR26(ZA[11]);
  835. ZA[4]+=ZR15(ZA[0]);
  836. ZA[4]+=0x00000100U;
  837. ZA[4]+=ZR25(ZA[3]);
  838. ZA[6]=ZA[7];
  839. ZA[6]+=ZA[21];
  840. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  841. ZA[7]+=ZA[16];
  842. ZA[7]+=ZR30(ZA[2]);
  843. ZA[15]+=ZCh(ZA[6],ZA[11],ZA[10]);
  844. ZA[15]+=ZA[17];
  845. ZA[15]+=0x4a7484aaU;
  846. ZA[15]+=ZR26(ZA[6]);
  847. ZA[3]+=ZA[9];
  848. ZA[3]+=ZR15(ZA[17]);
  849. ZA[3]+=0x11002000U;
  850. ZA[16]=ZA[8];
  851. ZA[16]+=ZA[15];
  852. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  853. ZA[8]+=ZA[21];
  854. ZA[8]+=ZR30(ZA[7]);
  855. ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11]);
  856. ZA[10]+=ZA[4];
  857. ZA[10]+=0x5cb0a9dcU;
  858. ZA[10]+=ZR26(ZA[16]);
  859. ZA[13]=ZR15(ZA[4]);
  860. ZA[13]+=ZA[5];
  861. ZA[13]+=0x80000000U;
  862. ZA[22]=ZA[2];
  863. ZA[22]+=ZA[10];
  864. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  865. ZA[2]+=ZA[15];
  866. ZA[2]+=ZR30(ZA[8]);
  867. ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6]);
  868. ZA[11]+=ZA[3];
  869. ZA[11]+=0x76f988daU;
  870. ZA[11]+=ZR26(ZA[22]);
  871. ZA[15]=ZR15(ZA[3]);
  872. ZA[15]+=ZA[12];
  873. ZA[18]=ZA[7];
  874. ZA[18]+=ZA[11];
  875. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  876. ZA[7]+=ZA[10];
  877. ZA[7]+=ZR30(ZA[2]);
  878. ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16]);
  879. ZA[6]+=ZA[13];
  880. ZA[6]+=0x983e5152U;
  881. ZA[6]+=ZR26(ZA[18]);
  882. ZA[10]=ZR15(ZA[13]);
  883. ZA[10]+=ZA[1];
  884. ZA[23]=ZA[8];
  885. ZA[23]+=ZA[6];
  886. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  887. ZA[8]+=ZA[11];
  888. ZA[8]+=ZR30(ZA[7]);
  889. ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22]);
  890. ZA[16]+=ZA[15];
  891. ZA[16]+=0xa831c66dU;
  892. ZA[16]+=ZR26(ZA[23]);
  893. ZA[11]=ZR15(ZA[15]);
  894. ZA[11]+=ZA[0];
  895. ZA[24]=ZA[2];
  896. ZA[24]+=ZA[16];
  897. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  898. ZA[2]+=ZA[6];
  899. ZA[2]+=ZR30(ZA[8]);
  900. ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18]);
  901. ZA[22]+=ZA[10];
  902. ZA[22]+=0xb00327c8U;
  903. ZA[22]+=ZR26(ZA[24]);
  904. ZA[6]=ZR15(ZA[10]);
  905. ZA[6]+=ZA[17];
  906. ZA[19]=ZA[7];
  907. ZA[19]+=ZA[22];
  908. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  909. ZA[7]+=ZA[16];
  910. ZA[7]+=ZR30(ZA[2]);
  911. ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]);
  912. ZA[18]+=ZA[11];
  913. ZA[18]+=0xbf597fc7U;
  914. ZA[18]+=ZR26(ZA[19]);
  915. ZA[14]=ZR15(ZA[11]);
  916. ZA[14]+=ZA[4];
  917. ZA[20]=ZA[8];
  918. ZA[20]+=ZA[18];
  919. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  920. ZA[8]+=ZA[22];
  921. ZA[8]+=ZR30(ZA[7]);
  922. ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]);
  923. ZA[23]+=ZA[6];
  924. ZA[23]+=0xc6e00bf3U;
  925. ZA[23]+=ZR26(ZA[20]);
  926. ZA[16]=ZR15(ZA[6]);
  927. ZA[16]+=ZA[3];
  928. ZA[16]+=0x00400022U;
  929. ZA[21]=ZA[2];
  930. ZA[21]+=ZA[23];
  931. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  932. ZA[2]+=ZA[18];
  933. ZA[2]+=ZR30(ZA[8]);
  934. ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]);
  935. ZA[24]+=ZA[14];
  936. ZA[24]+=0xd5a79147U;
  937. ZA[24]+=ZR26(ZA[21]);
  938. ZA[22]=ZR15(ZA[14]);
  939. ZA[22]+=ZA[13];
  940. ZA[22]+=ZR25(ZA[9]);
  941. ZA[22]+=0x00000100U;
  942. ZA[18]=ZA[7];
  943. ZA[18]+=ZA[24];
  944. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  945. ZA[7]+=ZA[23];
  946. ZA[7]+=ZR30(ZA[2]);
  947. ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]);
  948. ZA[19]+=ZA[16];
  949. ZA[19]+=0x06ca6351U;
  950. ZA[19]+=ZR26(ZA[18]);
  951. ZA[9]+=ZR15(ZA[16]);
  952. ZA[9]+=ZR25(ZA[5]);
  953. ZA[9]+=ZA[15];
  954. ZA[23]=ZA[8];
  955. ZA[23]+=ZA[19];
  956. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  957. ZA[8]+=ZA[24];
  958. ZA[8]+=ZR30(ZA[7]);
  959. ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]);
  960. ZA[20]+=ZA[22];
  961. ZA[20]+=0x14292967U;
  962. ZA[20]+=ZR26(ZA[23]);
  963. ZA[5]+=ZR15(ZA[22]);
  964. ZA[5]+=ZR25(ZA[12]);
  965. ZA[5]+=ZA[10];
  966. ZA[24]=ZA[2];
  967. ZA[24]+=ZA[20];
  968. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  969. ZA[2]+=ZA[19];
  970. ZA[2]+=ZR30(ZA[8]);
  971. ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]);
  972. ZA[21]+=ZA[9];
  973. ZA[21]+=0x27b70a85U;
  974. ZA[21]+=ZR26(ZA[24]);
  975. ZA[12]+=ZR15(ZA[9]);
  976. ZA[12]+=ZA[11];
  977. ZA[12]+=ZR25(ZA[1]);
  978. ZA[19]=ZA[7];
  979. ZA[19]+=ZA[21];
  980. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  981. ZA[7]+=ZA[20];
  982. ZA[7]+=ZR30(ZA[2]);
  983. ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]);
  984. ZA[18]+=ZA[5];
  985. ZA[18]+=0x2e1b2138U;
  986. ZA[18]+=ZR26(ZA[19]);
  987. ZA[1]+=ZR15(ZA[5]);
  988. ZA[1]+=ZA[6];
  989. ZA[1]+=ZR25(ZA[0]);
  990. ZA[20]=ZA[8];
  991. ZA[20]+=ZA[18];
  992. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  993. ZA[8]+=ZA[21];
  994. ZA[8]+=ZR30(ZA[7]);
  995. ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]);
  996. ZA[23]+=ZA[12];
  997. ZA[23]+=0x4d2c6dfcU;
  998. ZA[23]+=ZR26(ZA[20]);
  999. ZA[0]+=ZR15(ZA[12]);
  1000. ZA[0]+=ZR25(ZA[17]);
  1001. ZA[0]+=ZA[14];
  1002. ZA[21]=ZA[2];
  1003. ZA[21]+=ZA[23];
  1004. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  1005. ZA[2]+=ZA[18];
  1006. ZA[2]+=ZR30(ZA[8]);
  1007. ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]);
  1008. ZA[24]+=ZA[1];
  1009. ZA[24]+=0x53380d13U;
  1010. ZA[24]+=ZR26(ZA[21]);
  1011. ZA[17]+=ZR15(ZA[1]);
  1012. ZA[17]+=ZA[16];
  1013. ZA[17]+=ZR25(ZA[4]);
  1014. ZA[18]=ZA[7];
  1015. ZA[18]+=ZA[24];
  1016. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  1017. ZA[7]+=ZA[23];
  1018. ZA[7]+=ZR30(ZA[2]);
  1019. ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]);
  1020. ZA[19]+=ZA[0];
  1021. ZA[19]+=0x650a7354U;
  1022. ZA[19]+=ZR26(ZA[18]);
  1023. ZA[4]+=ZR15(ZA[0]);
  1024. ZA[4]+=ZA[22];
  1025. ZA[4]+=ZR25(ZA[3]);
  1026. ZA[23]=ZA[8];
  1027. ZA[23]+=ZA[19];
  1028. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  1029. ZA[8]+=ZA[24];
  1030. ZA[8]+=ZR30(ZA[7]);
  1031. ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]);
  1032. ZA[20]+=ZA[17];
  1033. ZA[20]+=0x766a0abbU;
  1034. ZA[20]+=ZR26(ZA[23]);
  1035. ZA[3]+=ZR15(ZA[17]);
  1036. ZA[3]+=ZA[9];
  1037. ZA[3]+=ZR25(ZA[13]);
  1038. ZA[24]=ZA[2];
  1039. ZA[24]+=ZA[20];
  1040. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  1041. ZA[2]+=ZA[19];
  1042. ZA[2]+=ZR30(ZA[8]);
  1043. ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]);
  1044. ZA[21]+=ZA[4];
  1045. ZA[21]+=0x81c2c92eU;
  1046. ZA[21]+=ZR26(ZA[24]);
  1047. ZA[13]+=ZR15(ZA[4]);
  1048. ZA[13]+=ZA[5];
  1049. ZA[13]+=ZR25(ZA[15]);
  1050. ZA[19]=ZA[7];
  1051. ZA[19]+=ZA[21];
  1052. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  1053. ZA[7]+=ZA[20];
  1054. ZA[7]+=ZR30(ZA[2]);
  1055. ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]);
  1056. ZA[18]+=ZA[3];
  1057. ZA[18]+=0x92722c85U;
  1058. ZA[18]+=ZR26(ZA[19]);
  1059. ZA[15]+=ZR15(ZA[3]);
  1060. ZA[15]+=ZA[12];
  1061. ZA[15]+=ZR25(ZA[10]);
  1062. ZA[20]=ZA[8];
  1063. ZA[20]+=ZA[18];
  1064. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  1065. ZA[8]+=ZA[21];
  1066. ZA[8]+=ZR30(ZA[7]);
  1067. ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]);
  1068. ZA[23]+=ZA[13];
  1069. ZA[23]+=0xa2bfe8a1U;
  1070. ZA[23]+=ZR26(ZA[20]);
  1071. ZA[10]+=ZR15(ZA[13]);
  1072. ZA[10]+=ZA[1];
  1073. ZA[10]+=ZR25(ZA[11]);
  1074. ZA[21]=ZA[2];
  1075. ZA[21]+=ZA[23];
  1076. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  1077. ZA[2]+=ZA[18];
  1078. ZA[2]+=ZR30(ZA[8]);
  1079. ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]);
  1080. ZA[24]+=ZA[15];
  1081. ZA[24]+=0xa81a664bU;
  1082. ZA[24]+=ZR26(ZA[21]);
  1083. ZA[11]+=ZR15(ZA[15]);
  1084. ZA[11]+=ZA[0];
  1085. ZA[11]+=ZR25(ZA[6]);
  1086. ZA[18]=ZA[7];
  1087. ZA[18]+=ZA[24];
  1088. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  1089. ZA[7]+=ZA[23];
  1090. ZA[7]+=ZR30(ZA[2]);
  1091. ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]);
  1092. ZA[19]+=ZA[10];
  1093. ZA[19]+=0xc24b8b70U;
  1094. ZA[19]+=ZR26(ZA[18]);
  1095. ZA[6]+=ZR15(ZA[10]);
  1096. ZA[6]+=ZA[17];
  1097. ZA[6]+=ZR25(ZA[14]);
  1098. ZA[23]=ZA[8];
  1099. ZA[23]+=ZA[19];
  1100. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  1101. ZA[8]+=ZA[24];
  1102. ZA[8]+=ZR30(ZA[7]);
  1103. ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]);
  1104. ZA[20]+=ZA[11];
  1105. ZA[20]+=0xc76c51a3U;
  1106. ZA[20]+=ZR26(ZA[23]);
  1107. ZA[14]+=ZR15(ZA[11]);
  1108. ZA[14]+=ZA[4];
  1109. ZA[14]+=ZR25(ZA[16]);
  1110. ZA[24]=ZA[2];
  1111. ZA[24]+=ZA[20];
  1112. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  1113. ZA[2]+=ZA[19];
  1114. ZA[2]+=ZR30(ZA[8]);
  1115. ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]);
  1116. ZA[21]+=ZA[6];
  1117. ZA[21]+=0xd192e819U;
  1118. ZA[21]+=ZR26(ZA[24]);
  1119. ZA[16]+=ZR15(ZA[6]);
  1120. ZA[16]+=ZA[3];
  1121. ZA[16]+=ZR25(ZA[22]);
  1122. ZA[19]=ZA[7];
  1123. ZA[19]+=ZA[21];
  1124. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  1125. ZA[7]+=ZA[20];
  1126. ZA[7]+=ZR30(ZA[2]);
  1127. ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]);
  1128. ZA[18]+=ZA[14];
  1129. ZA[18]+=0xd6990624U;
  1130. ZA[18]+=ZR26(ZA[19]);
  1131. ZA[22]+=ZR15(ZA[14]);
  1132. ZA[22]+=ZA[13];
  1133. ZA[22]+=ZR25(ZA[9]);
  1134. ZA[20]=ZA[8];
  1135. ZA[20]+=ZA[18];
  1136. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  1137. ZA[8]+=ZA[21];
  1138. ZA[8]+=ZR30(ZA[7]);
  1139. ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]);
  1140. ZA[23]+=ZA[16];
  1141. ZA[23]+=0xf40e3585U;
  1142. ZA[23]+=ZR26(ZA[20]);
  1143. ZA[9]+=ZR15(ZA[16]);
  1144. ZA[9]+=ZA[15];
  1145. ZA[9]+=ZR25(ZA[5]);
  1146. ZA[21]=ZA[2];
  1147. ZA[21]+=ZA[23];
  1148. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  1149. ZA[2]+=ZA[18];
  1150. ZA[2]+=ZR30(ZA[8]);
  1151. ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]);
  1152. ZA[24]+=ZA[22];
  1153. ZA[24]+=0x106aa070U;
  1154. ZA[24]+=ZR26(ZA[21]);
  1155. ZA[5]+=ZR15(ZA[22]);
  1156. ZA[5]+=ZA[10];
  1157. ZA[5]+=ZR25(ZA[12]);
  1158. ZA[18]=ZA[7];
  1159. ZA[18]+=ZA[24];
  1160. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  1161. ZA[7]+=ZA[23];
  1162. ZA[7]+=ZR30(ZA[2]);
  1163. ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]);
  1164. ZA[19]+=ZA[9];
  1165. ZA[19]+=0x19a4c116U;
  1166. ZA[19]+=ZR26(ZA[18]);
  1167. ZA[12]+=ZR15(ZA[9]);
  1168. ZA[12]+=ZA[11];
  1169. ZA[12]+=ZR25(ZA[1]);
  1170. ZA[23]=ZA[8];
  1171. ZA[23]+=ZA[19];
  1172. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  1173. ZA[8]+=ZA[24];
  1174. ZA[8]+=ZR30(ZA[7]);
  1175. ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]);
  1176. ZA[20]+=ZA[5];
  1177. ZA[20]+=0x1e376c08U;
  1178. ZA[20]+=ZR26(ZA[23]);
  1179. ZA[1]+=ZR15(ZA[5]);
  1180. ZA[1]+=ZA[6];
  1181. ZA[1]+=ZR25(ZA[0]);
  1182. ZA[24]=ZA[2];
  1183. ZA[24]+=ZA[20];
  1184. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  1185. ZA[2]+=ZA[19];
  1186. ZA[2]+=ZR30(ZA[8]);
  1187. ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]);
  1188. ZA[21]+=ZA[12];
  1189. ZA[21]+=0x2748774cU;
  1190. ZA[21]+=ZR26(ZA[24]);
  1191. ZA[0]+=ZR15(ZA[12]);
  1192. ZA[0]+=ZA[14];
  1193. ZA[0]+=ZR25(ZA[17]);
  1194. ZA[19]=ZA[7];
  1195. ZA[19]+=ZA[21];
  1196. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  1197. ZA[7]+=ZA[20];
  1198. ZA[7]+=ZR30(ZA[2]);
  1199. ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]);
  1200. ZA[18]+=ZA[1];
  1201. ZA[18]+=0x34b0bcb5U;
  1202. ZA[18]+=ZR26(ZA[19]);
  1203. ZA[17]+=ZR15(ZA[1]);
  1204. ZA[17]+=ZA[16];
  1205. ZA[17]+=ZR25(ZA[4]);
  1206. ZA[16]=ZA[8];
  1207. ZA[16]+=ZA[18];
  1208. ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]);
  1209. ZA[8]+=ZA[21];
  1210. ZA[8]+=ZR30(ZA[7]);
  1211. ZA[23]+=ZCh(ZA[16],ZA[19],ZA[24]);
  1212. ZA[23]+=ZA[0];
  1213. ZA[23]+=0x391c0cb3U;
  1214. ZA[23]+=ZR26(ZA[16]);
  1215. ZA[4]+=ZR15(ZA[0]);
  1216. ZA[4]+=ZA[22];
  1217. ZA[4]+=ZR25(ZA[3]);
  1218. ZA[22]=ZA[2];
  1219. ZA[22]+=ZA[23];
  1220. ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]);
  1221. ZA[2]+=ZA[18];
  1222. ZA[2]+=ZR30(ZA[8]);
  1223. ZA[24]+=ZCh(ZA[22],ZA[16],ZA[19]);
  1224. ZA[24]+=ZA[17];
  1225. ZA[24]+=0x4ed8aa4aU;
  1226. ZA[24]+=ZR26(ZA[22]);
  1227. ZA[9]+=ZR15(ZA[17]);
  1228. ZA[9]+=ZR25(ZA[13]);
  1229. ZA[9]+=ZA[3];
  1230. ZA[3]=ZA[7];
  1231. ZA[3]+=ZA[24];
  1232. ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]);
  1233. ZA[7]+=ZA[23];
  1234. ZA[7]+=ZR30(ZA[2]);
  1235. ZA[19]+=ZCh(ZA[3],ZA[22],ZA[16]);
  1236. ZA[19]+=ZA[4];
  1237. ZA[19]+=0x5b9cca4fU;
  1238. ZA[19]+=ZR26(ZA[3]);
  1239. ZA[13]+=ZR15(ZA[4]);
  1240. ZA[13]+=ZA[5];
  1241. ZA[13]+=ZR25(ZA[15]);
  1242. ZA[4]=ZA[8];
  1243. ZA[4]+=ZA[19];
  1244. ZA[5]=ZA[24];
  1245. ZA[5]+=ZMa(ZA[2],ZA[8],ZA[7]);
  1246. ZA[5]+=ZR30(ZA[7]);
  1247. ZA[16]+=ZCh(ZA[4],ZA[3],ZA[22]);
  1248. ZA[16]+=ZA[9];
  1249. ZA[16]+=0x682e6ff3U;
  1250. ZA[16]+=ZR26(ZA[4]);
  1251. ZA[12]+=ZR15(ZA[9]);
  1252. ZA[12]+=ZR25(ZA[10]);
  1253. ZA[12]+=ZA[15];
  1254. ZA[15]=ZA[2];
  1255. ZA[15]+=ZA[16];
  1256. ZA[9]=ZA[19];
  1257. ZA[9]+=ZMa(ZA[7],ZA[2],ZA[5]);
  1258. ZA[9]+=ZR30(ZA[5]);
  1259. ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3]);
  1260. ZA[22]+=ZA[13];
  1261. ZA[22]+=0x748f82eeU;
  1262. ZA[22]+=ZR26(ZA[15]);
  1263. ZA[13]=ZR15(ZA[13]);
  1264. ZA[13]+=ZA[10];
  1265. ZA[13]+=ZA[1];
  1266. ZA[13]+=ZR25(ZA[11]);
  1267. ZA[10]=ZA[7];
  1268. ZA[10]+=ZA[22];
  1269. ZA[1]=ZA[16];
  1270. ZA[1]+=ZMa(ZA[5],ZA[7],ZA[9]);
  1271. ZA[1]+=ZR30(ZA[9]);
  1272. ZA[3]+=ZCh(ZA[10],ZA[15],ZA[4]);
  1273. ZA[3]+=ZA[5];
  1274. ZA[3]+=ZA[12];
  1275. ZA[3]+=0x78a5636fU;
  1276. ZA[3]+=ZR26(ZA[10]);
  1277. ZA[4]+=ZCh(ZA[3],ZA[10],ZA[15]);
  1278. ZA[4]+=ZA[9];
  1279. ZA[4]+=ZA[13];
  1280. ZA[4]+=0x84c87814U;
  1281. ZA[4]+=ZR26(ZA[3]);
  1282. ZA[15]+=ZCh(ZA[4],ZA[3],ZA[10]);
  1283. ZA[15]+=ZA[1];
  1284. ZA[15]+=ZR15(ZA[12]);
  1285. ZA[15]+=ZA[0];
  1286. ZA[15]+=ZR25(ZA[6]);
  1287. ZA[15]+=ZA[11];
  1288. ZA[15]+=0x8cc70208U;
  1289. ZA[15]+=ZR26(ZA[4]);
  1290. #define FOUND (0x80)
  1291. #define NFLAG (0x7F)
  1292. #if defined(VECTORS2) || defined(VECTORS4)
  1293. ZA[10]+=ZCh(ZA[15],ZA[4],ZA[3]);
  1294. ZA[10]+=ZA[22];
  1295. ZA[10]+=ZMa(ZA[9],ZA[5],ZA[1]);
  1296. ZA[10]+=ZR30(ZA[1]);
  1297. ZA[10]+=ZR15(ZA[13]);
  1298. ZA[10]+=ZA[17];
  1299. ZA[10]+=ZR25(ZA[14]);
  1300. ZA[10]+=ZA[6];
  1301. ZA[10]+=ZR26(ZA[15]);
  1302. ZA[10]+=0xEC9FCD13U;
  1303. bool result = any(!ZA[10]);
  1304. if (result) {
  1305. if (!ZA[10].x)
  1306. output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x;
  1307. if (!ZA[10].y)
  1308. output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y;
  1309. #if defined(VECTORS4)
  1310. if (!ZA[10].z)
  1311. output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z;
  1312. if (!ZA[10].w)
  1313. output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w;
  1314. #endif
  1315. }
  1316. #elif defined(VECTORS2)
  1317. bool result = any(!ZA[10]);
  1318. if (result) {
  1319. if (!ZA[10].x)
  1320. output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x;
  1321. if (!ZA[10].y)
  1322. output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y;
  1323. }
  1324. #else
  1325. if (ZA[10]+(ZCh(ZA[15],ZA[4],ZA[3])+ZA[22]+ZMa(ZA[9],ZA[5],ZA[1])+
  1326. ZR30(ZA[1])+ZR15(ZA[13])+ZA[17]+ZR25(ZA[14])+ZA[6])+ZR26(ZA[15]) == 0x136032EDU)
  1327. output[FOUND] = output[NFLAG & Znonce] = Znonce;
  1328. #endif
  1329. }