diablo120222.cl 28 KB

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