diablo120222.cl 27 KB

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