OpenCL GPU miner
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

546 lines
26 KiB

/*
* DiabloMiner - OpenCL miner for BitCoin
* Copyright (C) 2010, 2011, 2012 Patrick McFarland <diablod3@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more detail).
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef VECTORS4
typedef uint4 z;
#elif defined(VECTORS2)
typedef uint2 z;
#else
typedef uint z;
#endif
#ifdef BITALIGN
#pragma OPENCL EXTENSION cl_amd_media_ops : enable
#define Zrotr(a, b) amd_bitalign((z)a, (z)a, (z)(32 - b))
#else
#define Zrotr(a, b) rotate((z)a, (z)b)
#endif
#ifdef BFI_INT
#define ZCh(a, b, c) amd_bytealign(a, b, c)
#define ZMa(a, b, c) amd_bytealign((c ^ a), (b), (a))
#else
#define ZCh(a, b, c) bitselect((z)c, (z)b, (z)a)
#define ZMa(a, b, c) bitselect((z)a, (z)b, (z)c ^ (z)a)
#endif
#define ZR25(n) ((Zrotr((n), 25) ^ Zrotr((n), 14) ^ ((n) >> 3U)))
#define ZR15(n) ((Zrotr((n), 15) ^ Zrotr((n), 13) ^ ((n) >> 10U)))
#define ZR26(n) ((Zrotr((n), 26) ^ Zrotr((n), 21) ^ Zrotr((n), 7)))
#define ZR30(n) ((Zrotr((n), 30) ^ Zrotr((n), 19) ^ Zrotr((n), 10)))
__kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search(
const z base,
const uint PreVal4_state0, const uint PreVal4_state0_k7,
const uint PreVal4_T1,
const uint W18, const uint W19,
const uint W16, const uint W17,
const uint W16_plus_K16, const uint W17_plus_K17,
const uint W31, const uint W32,
const uint d1, const uint b1, const uint c1,
const uint h1, const uint f1, const uint g1,
const uint c1_plus_k5, const uint b1_plus_k6,
const uint state0, const uint state1, const uint state2, const uint state3,
const uint state4, const uint state5, const uint state6, const uint state7,
__global uint * output)
{
z ZA[930];
const z Znonce = base + (uint)(get_global_id(0));
ZA[15]=Znonce+PreVal4_state0;
ZA[16]=(ZCh(ZA[15],b1,c1)+d1)+ZR26(ZA[15]);
ZA[26]=Znonce+PreVal4_T1;
ZA[17]=ZA[16]+h1;
ZA[19]=(ZCh(ZA[17],ZA[15],b1)+c1_plus_k5)+ZR26(ZA[17]);
ZA[28]=ZMa(f1,g1,ZA[26])+ZR30(ZA[26])+ZA[16];
ZA[20]=ZA[19]+g1;
ZA[22]=(ZCh(ZA[20],ZA[17],ZA[15])+b1_plus_k6)+ZR26(ZA[20]);
ZA[29]=ZMa(ZA[26],f1,ZA[28])+ZR30(ZA[28])+ZA[19];
ZA[23]=ZA[22]+f1;
ZA[30]=ZMa(ZA[28],ZA[26],ZA[29])+ZR30(ZA[29])+ZA[22];
ZA[181]=Znonce+PreVal4_state0_k7+ZCh(ZA[23],ZA[20],ZA[17])+ZR26(ZA[23]);
ZA[182]=ZA[181]+ZA[26];
ZA[183]=ZA[181]+ZMa(ZA[29],ZA[28],ZA[30])+ZR30(ZA[30]);
ZA[186]=(ZCh(ZA[182],ZA[23],ZA[20])+ZA[17]+0xd807aa98U)+ZR26(ZA[182]);
ZA[187]=ZA[186]+ZA[28];
ZA[188]=ZA[186]+ZMa(ZA[30],ZA[29],ZA[183])+ZR30(ZA[183]);
ZA[191]=(ZCh(ZA[187],ZA[182],ZA[23])+ZA[20]+0x12835b01U)+ZR26(ZA[187]);
ZA[192]=ZA[191]+ZA[29];
ZA[193]=ZA[191]+ZMa(ZA[183],ZA[30],ZA[188])+ZR30(ZA[188]);
ZA[196]=(ZCh(ZA[192],ZA[187],ZA[182])+ZA[23]+0x243185beU)+ZR26(ZA[192]);
ZA[197]=ZA[196]+ZA[30];
ZA[198]=ZA[196]+ZMa(ZA[188],ZA[183],ZA[193])+ZR30(ZA[193]);
ZA[201]=(ZCh(ZA[197],ZA[192],ZA[187])+ZA[182]+0x550c7dc3U)+ZR26(ZA[197]);
ZA[202]=ZA[201]+ZA[183];
ZA[203]=ZA[201]+ZMa(ZA[193],ZA[188],ZA[198])+ZR30(ZA[198]);
ZA[206]=(ZCh(ZA[202],ZA[197],ZA[192])+ZA[187]+0x72be5d74U)+ZR26(ZA[202]);
ZA[207]=ZA[206]+ZA[188];
ZA[208]=ZA[206]+ZMa(ZA[198],ZA[193],ZA[203])+ZR30(ZA[203]);
ZA[211]=(ZCh(ZA[207],ZA[202],ZA[197])+ZA[192]+0x80deb1feU)+ZR26(ZA[207]);
ZA[212]=ZA[193]+ZA[211];
ZA[213]=ZA[211]+ZMa(ZA[203],ZA[198],ZA[208])+ZR30(ZA[208]);
ZA[216]=(ZCh(ZA[212],ZA[207],ZA[202])+ZA[197]+0x9bdc06a7U)+ZR26(ZA[212]);
ZA[217]=ZA[198]+ZA[216];
ZA[218]=ZA[216]+ZMa(ZA[208],ZA[203],ZA[213])+ZR30(ZA[213]);
ZA[220]=(ZCh(ZA[217],ZA[212],ZA[207])+ZA[202]+0xc19bf3f4U)+ZR26(ZA[217]);
ZA[222]=ZA[203]+ZA[220];
ZA[223]=ZA[220]+ZMa(ZA[213],ZA[208],ZA[218])+ZR30(ZA[218]);
ZA[226]=(ZCh(ZA[222],ZA[217],ZA[212])+ZA[207]+W16_plus_K16)+ZR26(ZA[222]);
ZA[0]=ZR25(Znonce)+W18;
ZA[228]=ZA[226]+ZMa(ZA[218],ZA[213],ZA[223])+ZR30(ZA[223]);
ZA[227]=ZA[208]+ZA[226];
ZA[231]=(ZCh(ZA[227],ZA[222],ZA[217])+ZA[212]+W17_plus_K17)+ZR26(ZA[227]);
ZA[232]=ZA[213]+ZA[231];
ZA[233]=ZA[231]+ZMa(ZA[223],ZA[218],ZA[228])+ZR30(ZA[228]);
ZA[32]=Znonce+W19;
ZA[236]=(ZCh(ZA[232],ZA[227],ZA[222])+ZA[217]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[232]);
ZA[3]=ZR15(ZA[0])+0x80000000U;
ZA[238]=ZA[236]+ZMa(ZA[228],ZA[223],ZA[233])+ZR30(ZA[233]);
ZA[237]=ZA[218]+ZA[236];
ZA[241]=(ZCh(ZA[237],ZA[232],ZA[227])+ZA[222]+ZA[32]+0x240ca1ccU)+ZR26(ZA[237]);
ZA[35]=ZR15(ZA[32]);
ZA[243]=ZA[241]+ZMa(ZA[233],ZA[228],ZA[238])+ZR30(ZA[238]);
ZA[242]=ZA[223]+ZA[241];
ZA[246]=(ZCh(ZA[242],ZA[237],ZA[232])+ZA[227]+ZA[3]+0x2de92c6fU)+ZR26(ZA[242]);
ZA[7]=ZR15(ZA[3])+0x00000280U;
ZA[248]=ZA[246]+ZMa(ZA[238],ZA[233],ZA[243])+ZR30(ZA[243]);
ZA[247]=ZA[228]+ZA[246];
ZA[251]=(ZCh(ZA[247],ZA[242],ZA[237])+ZA[232]+ZA[35]+0x4a7484aaU)+ZR26(ZA[247]);
ZA[38]=ZR15(ZA[35])+W16;
ZA[253]=ZA[251]+ZMa(ZA[243],ZA[238],ZA[248])+ZR30(ZA[248]);
ZA[252]=ZA[233]+ZA[251];
ZA[256]=(ZCh(ZA[252],ZA[247],ZA[242])+ZA[237]+ZA[7]+0x5cb0a9dcU)+ZR26(ZA[252]);
ZA[10]=ZR15(ZA[7])+W17;
ZA[258]=ZA[256]+ZMa(ZA[248],ZA[243],ZA[253])+ZR30(ZA[253]);
ZA[257]=ZA[238]+ZA[256];
ZA[261]=(ZCh(ZA[257],ZA[252],ZA[247])+ZA[242]+ZA[38]+0x76f988daU)+ZR26(ZA[257]);
ZA[43]=ZR15(ZA[38])+ZA[0];
ZA[263]=ZA[261]+ZMa(ZA[253],ZA[248],ZA[258])+ZR30(ZA[258]);
ZA[262]=ZA[243]+ZA[261];
ZA[266]=(ZCh(ZA[262],ZA[257],ZA[252])+ZA[247]+ZA[10]+0x983e5152U)+ZR26(ZA[262]);
ZA[52]=ZR15(ZA[10])+ZA[32];
ZA[267]=ZA[248]+ZA[266];
ZA[268]=ZA[266]+ZMa(ZA[258],ZA[253],ZA[263])+ZR30(ZA[263]);
ZA[271]=(ZCh(ZA[267],ZA[262],ZA[257])+ZA[252]+ZA[43]+0xa831c66dU)+ZR26(ZA[267]);
ZA[48]=ZR15(ZA[43])+ZA[3];
ZA[273]=ZA[271]+ZMa(ZA[263],ZA[258],ZA[268])+ZR30(ZA[268]);
ZA[272]=ZA[253]+ZA[271];
ZA[276]=(ZCh(ZA[272],ZA[267],ZA[262])+ZA[257]+ZA[52]+0xb00327c8U)+ZR26(ZA[272]);
ZA[61]=ZR15(ZA[52])+ZA[35];
ZA[278]=ZA[276]+ZMa(ZA[268],ZA[263],ZA[273])+ZR30(ZA[273]);
ZA[277]=ZA[258]+ZA[276];
ZA[281]=(ZCh(ZA[277],ZA[272],ZA[267])+ZA[262]+ZA[48]+0xbf597fc7U)+ZR26(ZA[277]);
ZA[53]=ZR15(ZA[48])+ZA[7];
ZA[283]=ZA[281]+ZMa(ZA[273],ZA[268],ZA[278])+ZR30(ZA[278]);
ZA[282]=ZA[263]+ZA[281];
ZA[286]=(ZCh(ZA[282],ZA[277],ZA[272])+ZA[267]+ZA[61]+0xc6e00bf3U)+ZR26(ZA[282]);
ZA[66]=ZR15(ZA[61])+ZA[38]+0x00A00055U;
ZA[288]=ZA[286]+ZMa(ZA[278],ZA[273],ZA[283])+ZR30(ZA[283]);
ZA[287]=ZA[268]+ZA[286];
ZA[291]=(ZCh(ZA[287],ZA[282],ZA[277])+ZA[272]+ZA[53]+0xd5a79147U)+ZR26(ZA[287]);
ZA[67]=ZR15(ZA[53])+ZA[10]+W31;
ZA[293]=ZA[291]+ZMa(ZA[283],ZA[278],ZA[288])+ZR30(ZA[288]);
ZA[292]=ZA[273]+ZA[291];
ZA[296]=(ZCh(ZA[292],ZA[287],ZA[282])+ZA[277]+ZA[66]+0x06ca6351U)+ZR26(ZA[292]);
ZA[75]=ZR15(ZA[66])+ZA[43]+W32;
ZA[298]=ZA[296]+ZMa(ZA[288],ZA[283],ZA[293])+ZR30(ZA[293]);
ZA[297]=ZA[278]+ZA[296];
ZA[301]=(ZCh(ZA[297],ZA[292],ZA[287])+ZA[282]+ZA[67]+0x14292967U)+ZR26(ZA[297]);
ZA[70]=ZR15(ZA[67])+ZA[52]+ZR25(ZA[0])+W17;
ZA[302]=ZA[283]+ZA[301];
ZA[303]=ZA[301]+ZMa(ZA[293],ZA[288],ZA[298])+ZR30(ZA[298]);
ZA[306]=(ZCh(ZA[302],ZA[297],ZA[292])+ZA[287]+ZA[75]+0x27b70a85U)+ZR26(ZA[302]);
ZA[78]=ZR15(ZA[75])+ZR25(ZA[32])+ZA[0]+ZA[48];
ZA[308]=ZA[306]+ZMa(ZA[298],ZA[293],ZA[303])+ZR30(ZA[303]);
ZA[307]=ZA[288]+ZA[306];
ZA[311]=(ZCh(ZA[307],ZA[302],ZA[297])+ZA[292]+ZA[70]+0x2e1b2138U)+ZR26(ZA[307]);
ZA[79]=ZR15(ZA[70])+ZA[32]+ZR25(ZA[3])+ZA[61];
ZA[312]=ZA[293]+ZA[311];
ZA[313]=ZA[311]+ZMa(ZA[303],ZA[298],ZA[308])+ZR30(ZA[308]);
ZA[316]=(ZCh(ZA[312],ZA[307],ZA[302])+ZA[297]+ZA[78]+0x4d2c6dfcU)+ZR26(ZA[312]);
ZA[87]=ZR15(ZA[78])+ZR25(ZA[35])+ZA[3]+ZA[53];
ZA[318]=ZA[316]+ZMa(ZA[308],ZA[303],ZA[313])+ZR30(ZA[313]);
ZA[317]=ZA[298]+ZA[316];
ZA[321]=(ZCh(ZA[317],ZA[312],ZA[307])+ZA[302]+ZA[79]+0x53380d13U)+ZR26(ZA[317]);
ZA[88]=ZR15(ZA[79])+ZA[35]+ZR25(ZA[7])+ZA[66];
ZA[322]=ZA[303]+ZA[321];
ZA[323]=ZA[321]+ZMa(ZA[313],ZA[308],ZA[318])+ZR30(ZA[318]);
ZA[326]=(ZCh(ZA[322],ZA[317],ZA[312])+ZA[307]+ZA[87]+0x650a7354U)+ZR26(ZA[322]);
ZA[94]=ZR15(ZA[87])+ZR25(ZA[38])+ZA[7]+ZA[67];
ZA[328]=ZA[326]+ZMa(ZA[318],ZA[313],ZA[323])+ZR30(ZA[323]);
ZA[327]=ZA[308]+ZA[326];
ZA[331]=(ZCh(ZA[327],ZA[322],ZA[317])+ZA[312]+ZA[88]+0x766a0abbU)+ZR26(ZA[327]);
ZA[95]=ZR15(ZA[88])+ZA[38]+ZR25(ZA[10])+ZA[75];
ZA[332]=ZA[313]+ZA[331];
ZA[333]=ZA[331]+ZMa(ZA[323],ZA[318],ZA[328])+ZR30(ZA[328]);
ZA[336]=(ZCh(ZA[332],ZA[327],ZA[322])+ZA[317]+ZA[94]+0x81c2c92eU)+ZR26(ZA[332]);
ZA[102]=ZR15(ZA[94])+ZR25(ZA[43])+ZA[10]+ZA[70];
ZA[337]=ZA[318]+ZA[336];
ZA[338]=ZA[336]+ZMa(ZA[328],ZA[323],ZA[333])+ZR30(ZA[333]);
ZA[341]=(ZCh(ZA[337],ZA[332],ZA[327])+ZA[322]+ZA[95]+0x92722c85U)+ZR26(ZA[337]);
ZA[103]=ZR15(ZA[95])+ZR25(ZA[52])+ZA[43]+ZA[78];
ZA[342]=ZA[323]+ZA[341];
ZA[343]=ZA[341]+ZMa(ZA[333],ZA[328],ZA[338])+ZR30(ZA[338]);
ZA[346]=(ZCh(ZA[342],ZA[337],ZA[332])+ZA[327]+ZA[102]+0xa2bfe8a1U)+ZR26(ZA[342]);
ZA[110]=ZR15(ZA[102])+ZR25(ZA[48])+ZA[52]+ZA[79];
ZA[347]=ZA[328]+ZA[346];
ZA[348]=ZA[346]+ZMa(ZA[338],ZA[333],ZA[343])+ZR30(ZA[343]);
ZA[351]=(ZCh(ZA[347],ZA[342],ZA[337])+ZA[332]+ZA[103]+0xa81a664bU)+ZR26(ZA[347]);
ZA[111]=ZR15(ZA[103])+ZA[87]+ZR25(ZA[61])+ZA[48];
ZA[353]=ZA[351]+ZMa(ZA[343],ZA[338],ZA[348])+ZR30(ZA[348]);
ZA[352]=ZA[333]+ZA[351];
ZA[356]=(ZCh(ZA[352],ZA[347],ZA[342])+ZA[337]+ZA[110]+0xc24b8b70U)+ZR26(ZA[352]);
ZA[118]=ZR15(ZA[110])+ZA[88]+ZR25(ZA[53])+ZA[61];
ZA[357]=ZA[338]+ZA[356];
ZA[358]=ZA[356]+ZMa(ZA[348],ZA[343],ZA[353])+ZR30(ZA[353]);
ZA[361]=(ZCh(ZA[357],ZA[352],ZA[347])+ZA[342]+ZA[111]+0xc76c51a3U)+ZR26(ZA[357]);
ZA[119]=ZR15(ZA[111])+ZR25(ZA[66])+ZA[53]+ZA[94];
ZA[362]=ZA[343]+ZA[361];
ZA[363]=ZA[361]+ZMa(ZA[353],ZA[348],ZA[358])+ZR30(ZA[358]);
ZA[366]=(ZCh(ZA[362],ZA[357],ZA[352])+ZA[347]+ZA[118]+0xd192e819U)+ZR26(ZA[362]);
ZA[126]=ZR15(ZA[118])+ZR25(ZA[67])+ZA[66]+ZA[95];
ZA[367]=ZA[348]+ZA[366];
ZA[368]=ZA[366]+ZMa(ZA[358],ZA[353],ZA[363])+ZR30(ZA[363]);
ZA[371]=(ZCh(ZA[367],ZA[362],ZA[357])+ZA[352]+ZA[119]+0xd6990624U)+ZR26(ZA[367]);
ZA[127]=ZR15(ZA[119])+ZA[102]+ZR25(ZA[75])+ZA[67];
ZA[372]=ZA[353]+ZA[371];
ZA[373]=ZA[371]+ZMa(ZA[363],ZA[358],ZA[368])+ZR30(ZA[368]);
ZA[376]=(ZCh(ZA[372],ZA[367],ZA[362])+ZA[357]+ZA[126]+0xf40e3585U)+ZR26(ZA[372]);
ZA[134]=ZR15(ZA[126])+ZA[103]+ZR25(ZA[70])+ZA[75];
ZA[377]=ZA[358]+ZA[376];
ZA[378]=ZA[376]+ZMa(ZA[368],ZA[363],ZA[373])+ZR30(ZA[373]);
ZA[381]=(ZCh(ZA[377],ZA[372],ZA[367])+ZA[362]+ZA[127]+0x106aa070U)+ZR26(ZA[377]);
ZA[135]=ZR15(ZA[127])+ZA[110]+ZR25(ZA[78])+ZA[70];
ZA[382]=ZA[363]+ZA[381];
ZA[383]=ZA[381]+ZMa(ZA[373],ZA[368],ZA[378])+ZR30(ZA[378]);
ZA[386]=(ZCh(ZA[382],ZA[377],ZA[372])+ZA[367]+ZA[134]+0x19a4c116U)+ZR26(ZA[382]);
ZA[142]=ZR15(ZA[134])+ZA[111]+ZR25(ZA[79])+ZA[78];
ZA[387]=ZA[368]+ZA[386];
ZA[388]=ZA[386]+ZMa(ZA[378],ZA[373],ZA[383])+ZR30(ZA[383]);
ZA[391]=(ZCh(ZA[387],ZA[382],ZA[377])+ZA[372]+ZA[135]+0x1e376c08U)+ZR26(ZA[387]);
ZA[143]=ZR15(ZA[135])+ZA[118]+ZR25(ZA[87])+ZA[79];
ZA[392]=ZA[373]+ZA[391];
ZA[393]=ZA[391]+ZMa(ZA[383],ZA[378],ZA[388])+ZR30(ZA[388]);
ZA[396]=(ZCh(ZA[392],ZA[387],ZA[382])+ZA[377]+ZA[142]+0x2748774cU)+ZR26(ZA[392]);
ZA[149]=ZR15(ZA[142])+ZA[119]+ZR25(ZA[88])+ZA[87];
ZA[397]=ZA[378]+ZA[396];
ZA[398]=ZA[396]+ZMa(ZA[388],ZA[383],ZA[393])+ZR30(ZA[393]);
ZA[401]=(ZCh(ZA[397],ZA[392],ZA[387])+ZA[382]+ZA[143]+0x34b0bcb5U)+ZR26(ZA[397]);
ZA[150]=ZR15(ZA[143])+ZA[126]+ZR25(ZA[94])+ZA[88];
ZA[402]=ZA[383]+ZA[401];
ZA[403]=ZA[401]+ZMa(ZA[393],ZA[388],ZA[398])+ZR30(ZA[398]);
ZA[406]=(ZCh(ZA[402],ZA[397],ZA[392])+ZA[387]+ZA[149]+0x391c0cb3U)+ZR26(ZA[402]);
ZA[155]=ZR15(ZA[149])+ZA[127]+ZR25(ZA[95])+ZA[94];
ZA[407]=ZA[388]+ZA[406];
ZA[408]=ZA[406]+ZMa(ZA[398],ZA[393],ZA[403])+ZR30(ZA[403]);
ZA[411]=(ZCh(ZA[407],ZA[402],ZA[397])+ZA[392]+ZA[150]+0x4ed8aa4aU)+ZR26(ZA[407]);
ZA[156]=ZR15(ZA[150])+ZA[134]+ZR25(ZA[102])+ZA[95];
ZA[412]=ZA[393]+ZA[411];
ZA[413]=ZA[411]+ZMa(ZA[403],ZA[398],ZA[408])+ZR30(ZA[408]);
ZA[416]=(ZCh(ZA[412],ZA[407],ZA[402])+ZA[397]+ZA[155]+0x5b9cca4fU)+ZR26(ZA[412]);
ZA[161]=ZR15(ZA[155])+ZA[135]+ZR25(ZA[103])+ZA[102];
ZA[417]=ZA[398]+ZA[416];
ZA[418]=ZA[416]+ZMa(ZA[408],ZA[403],ZA[413])+ZR30(ZA[413]);
ZA[421]=(ZCh(ZA[417],ZA[412],ZA[407])+ZA[402]+ZA[156]+0x682e6ff3U)+ZR26(ZA[417]);
ZA[162]=ZR15(ZA[156])+ZA[142]+ZR25(ZA[110])+ZA[103];
ZA[422]=ZA[403]+ZA[421];
ZA[423]=ZA[421]+ZMa(ZA[413],ZA[408],ZA[418])+ZR30(ZA[418]);
ZA[426]=(ZCh(ZA[422],ZA[417],ZA[412])+ZA[407]+ZA[161]+0x748f82eeU)+ZR26(ZA[422]);
ZA[167]=ZR15(ZA[161])+ZA[143]+ZR25(ZA[111])+ZA[110];
ZA[427]=ZA[408]+ZA[426];
ZA[428]=ZA[426]+ZMa(ZA[418],ZA[413],ZA[423])+ZR30(ZA[423]);
ZA[431]=(ZCh(ZA[427],ZA[422],ZA[417])+ZA[412]+ZA[162]+0x78a5636fU)+ZR26(ZA[427]);
ZA[168]=ZR15(ZA[162])+ZA[149]+ZR25(ZA[118])+ZA[111];
ZA[432]=ZA[413]+ZA[431];
ZA[433]=ZA[431]+ZMa(ZA[423],ZA[418],ZA[428])+ZR30(ZA[428]);
ZA[436]=(ZCh(ZA[432],ZA[427],ZA[422])+ZA[417]+ZA[167]+0x84c87814U)+ZR26(ZA[432]);
ZA[172]=ZR15(ZA[167])+ZA[150]+ZR25(ZA[119])+ZA[118];
ZA[437]=ZA[418]+ZA[436];
ZA[438]=ZA[436]+ZMa(ZA[428],ZA[423],ZA[433])+ZR30(ZA[433]);
ZA[441]=(ZCh(ZA[437],ZA[432],ZA[427])+ZA[422]+ZA[168]+0x8cc70208U)+ZR26(ZA[437]);
ZA[173]=ZR15(ZA[168])+ZA[155]+ZR25(ZA[126])+ZA[119];
ZA[442]=ZA[423]+ZA[441];
ZA[443]=ZA[441]+ZMa(ZA[433],ZA[428],ZA[438])+ZR30(ZA[438]);
ZA[445]=(ZCh(ZA[442],ZA[437],ZA[432])+ZA[427]+ZA[172]+0x90befffaU)+ZR26(ZA[442]);
ZA[446]=ZA[428]+ZA[445];
ZA[447]=ZA[445]+ZMa(ZA[438],ZA[433],ZA[443])+ZR30(ZA[443]);
ZA[449]=(ZCh(ZA[446],ZA[442],ZA[437])+ZA[432]+ZA[173]+0xa4506cebU)+ZR26(ZA[446]);
ZA[451]=ZA[449]+ZMa(ZA[443],ZA[438],ZA[447])+ZR30(ZA[447]);
ZA[450]=ZA[433]+ZA[449];
ZA[453]=(ZCh(ZA[450],ZA[446],ZA[442])+ZA[437]+ZR15(ZA[172])+ZA[156]+ZR25(ZA[127])+ZA[126]+0xbef9a3f7U)+ZR26(ZA[450]);
ZA[454]=ZA[438]+ZA[453];
ZA[455]=ZA[453]+ZMa(ZA[447],ZA[443],ZA[451])+ZR30(ZA[451]);
ZA[457]=(ZCh(ZA[454],ZA[450],ZA[446])+ZA[442]+ZR15(ZA[173])+ZA[161]+ZR25(ZA[134])+ZA[127]+0xc67178f2U)+ZR26(ZA[454]);
ZA[461]=ZA[455]+state1;
ZA[460]=ZA[457]+ZMa(ZA[451],ZA[447],ZA[455])+ZR30(ZA[455])+state0;
ZA[495]=ZA[460]+0x98c7e2a2U;
ZA[498]=(ZCh(ZA[495],0x510e527fU,0x9b05688cU)+ZA[461]+0x90bb1e3cU)+ZR26(ZA[495]);
ZA[462]=ZA[451]+state2;
ZA[496]=ZA[460]+0xfc08884dU;
ZA[506]=ZA[498]+0x3c6ef372U;
ZA[507]=(ZCh(ZA[506],ZA[495],0x510e527fU)+ZA[462]+0x50c6645bU)+ZR26(ZA[506]);
ZA[463]=ZA[447]+state3;
ZA[499]=ZA[498]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[496])+ZR30(ZA[496]);
ZA[508]=ZA[507]+0xbb67ae85U;
ZA[510]=(ZCh(ZA[508],ZA[506],ZA[495])+ZA[463]+0x3ac42e24U)+ZR26(ZA[508]);
ZA[464]=ZA[443]+ZA[457]+state4;
ZA[511]=ZA[510]+0x6a09e667U;
ZA[509]=ZMa(ZA[496],0x6a09e667U,ZA[499])+ZR30(ZA[499])+ZA[507];
ZA[465]=ZA[454]+state5;
ZA[514]=(ZCh(ZA[511],ZA[508],ZA[506])+ZA[464]+ZA[460]+0xd21ea4fdU)+ZR26(ZA[511]);
ZA[516]=ZA[496]+ZA[514];
ZA[513]=ZA[510]+ZMa(ZA[499],ZA[496],ZA[509])+ZR30(ZA[509]);
ZA[466]=ZA[450]+state6;
ZA[520]=(ZCh(ZA[516],ZA[511],ZA[508])+ZA[506]+ZA[465]+0x59f111f1U)+ZR26(ZA[516]);
ZA[521]=ZA[499]+ZA[520];
ZA[517]=ZA[514]+ZMa(ZA[509],ZA[499],ZA[513])+ZR30(ZA[513]);
ZA[467]=ZA[446]+state7;
ZA[525]=(ZCh(ZA[521],ZA[516],ZA[511])+ZA[508]+ZA[466]+0x923f82a4U)+ZR26(ZA[521]);
ZA[526]=ZA[509]+ZA[525];
ZA[523]=ZA[520]+ZMa(ZA[513],ZA[509],ZA[517])+ZR30(ZA[517]);
ZA[530]=(ZCh(ZA[526],ZA[521],ZA[516])+ZA[511]+ZA[467]+0xab1c5ed5U)+ZR26(ZA[526]);
ZA[531]=ZA[513]+ZA[530];
ZA[527]=ZMa(ZA[517],ZA[513],ZA[523])+ZR30(ZA[523])+ZA[525];
ZA[534]=(ZCh(ZA[531],ZA[526],ZA[521])+ZA[516]+0x5807aa98U)+ZR26(ZA[531]);
ZA[535]=ZA[517]+ZA[534];
ZA[532]=ZMa(ZA[523],ZA[517],ZA[527])+ZR30(ZA[527])+ZA[530];
ZA[539]=(ZCh(ZA[535],ZA[531],ZA[526])+ZA[521]+0x12835b01U)+ZR26(ZA[535]);
ZA[540]=ZA[523]+ZA[539];
ZA[536]=ZMa(ZA[527],ZA[523],ZA[532])+ZR30(ZA[532])+ZA[534];
ZA[543]=(ZCh(ZA[540],ZA[535],ZA[531])+ZA[526]+0x243185beU)+ZR26(ZA[540]);
ZA[544]=ZA[527]+ZA[543];
ZA[541]=ZMa(ZA[532],ZA[527],ZA[536])+ZR30(ZA[536])+ZA[539];
ZA[558]=(ZCh(ZA[544],ZA[540],ZA[535])+ZA[531]+0x550c7dc3U)+ZR26(ZA[544]);
ZA[559]=ZA[532]+ZA[558];
ZA[545]=ZMa(ZA[536],ZA[532],ZA[541])+ZR30(ZA[541])+ZA[543];
ZA[562]=(ZCh(ZA[559],ZA[544],ZA[540])+ZA[535]+0x72be5d74U)+ZR26(ZA[559]);
ZA[563]=ZA[536]+ZA[562];
ZA[560]=ZMa(ZA[541],ZA[536],ZA[545])+ZR30(ZA[545])+ZA[558];
ZA[568]=(ZCh(ZA[563],ZA[559],ZA[544])+ZA[540]+0x80deb1feU)+ZR26(ZA[563]);
ZA[569]=ZA[541]+ZA[568];
ZA[565]=ZA[562]+ZMa(ZA[545],ZA[541],ZA[560])+ZR30(ZA[560]);
ZA[574]=(ZCh(ZA[569],ZA[563],ZA[559])+ZA[544]+0x9bdc06a7U)+ZR26(ZA[569]);
ZA[497]=ZR25(ZA[461])+ZA[460];
ZA[575]=ZA[545]+ZA[574];
ZA[571]=ZA[568]+ZMa(ZA[560],ZA[545],ZA[565])+ZR30(ZA[565]);
ZA[578]=(ZCh(ZA[575],ZA[569],ZA[563])+ZA[559]+0xc19bf274U)+ZR26(ZA[575]);
ZA[471]=ZR25(ZA[462])+ZA[461]+0x00a00000U;
ZA[579]=ZA[560]+ZA[578];
ZA[577]=ZA[574]+ZMa(ZA[565],ZA[560],ZA[571])+ZR30(ZA[571]);
ZA[583]=(ZCh(ZA[579],ZA[575],ZA[569])+ZA[563]+ZA[497]+0xe49b69c1U)+ZR26(ZA[579]);
ZA[584]=ZA[565]+ZA[583];
ZA[581]=ZA[578]+ZMa(ZA[571],ZA[565],ZA[577])+ZR30(ZA[577]);
ZA[588]=(ZCh(ZA[584],ZA[579],ZA[575])+ZA[569]+ZA[471]+0xefbe4786U)+ZR26(ZA[584]);
ZA[501]=ZR15(ZA[497])+ZR25(ZA[463])+ZA[462];
ZA[474]=ZR15(ZA[471])+ZA[463]+ZR25(ZA[464]);
ZA[589]=ZA[571]+ZA[588];
ZA[585]=ZA[583]+ZMa(ZA[577],ZA[571],ZA[581])+ZR30(ZA[581]);
ZA[592]=(ZCh(ZA[589],ZA[584],ZA[579])+ZA[575]+0x0fc19dc6U+ZA[501])+ZR26(ZA[589]);
ZA[518]=ZR15(ZA[501])+ZR25(ZA[465])+ZA[464];
ZA[593]=ZA[577]+ZA[592];
ZA[591]=ZA[588]+ZMa(ZA[581],ZA[577],ZA[585])+ZR30(ZA[585]);
ZA[597]=(ZCh(ZA[593],ZA[589],ZA[584])+ZA[579]+ZA[474]+0x240ca1ccU)+ZR26(ZA[593]);
ZA[482]=ZR15(ZA[474])+ZR25(ZA[466])+ZA[465];
ZA[598]=ZA[581]+ZA[597];
ZA[595]=ZA[592]+ZMa(ZA[585],ZA[581],ZA[591])+ZR30(ZA[591]);
ZA[632]=(ZCh(ZA[598],ZA[593],ZA[589])+ZA[584]+ZA[518]+0x2de92c6fU)+ZR26(ZA[598]);
ZA[528]=ZR15(ZA[518])+ZA[466]+0x00000100U+ZR25(ZA[467]);
ZA[736]=ZA[585]+ZA[632];
ZA[600]=ZA[597]+ZMa(ZA[591],ZA[585],ZA[595])+ZR30(ZA[595]);
ZA[738]=(ZCh(ZA[736],ZA[598],ZA[593])+ZA[589]+ZA[482]+0x4a7484aaU)+ZR26(ZA[736]);
ZA[502]=ZA[497]+ZR15(ZA[482])+ZA[467]+0x11002000U;
ZA[739]=ZA[591]+ZA[738];
ZA[737]=ZMa(ZA[595],ZA[591],ZA[600])+ZR30(ZA[600])+ZA[632];
ZA[741]=(ZCh(ZA[739],ZA[736],ZA[598])+ZA[593]+ZA[528]+0x5cb0a9dcU)+ZR26(ZA[739]);
ZA[537]=ZR15(ZA[528])+ZA[471]+0x80000000U;
ZA[742]=ZA[595]+ZA[741];
ZA[740]=ZMa(ZA[600],ZA[595],ZA[737])+ZR30(ZA[737])+ZA[738];
ZA[747]=(ZCh(ZA[742],ZA[739],ZA[736])+ZA[598]+ZA[502]+0x76f988daU)+ZR26(ZA[742]);
ZA[546]=ZR15(ZA[502])+ZA[501];
ZA[748]=ZA[600]+ZA[747];
ZA[743]=ZMa(ZA[737],ZA[600],ZA[740])+ZR30(ZA[740])+ZA[741];
ZA[752]=(ZCh(ZA[748],ZA[742],ZA[739])+ZA[736]+ZA[537]+0x983e5152U)+ZR26(ZA[748]);
ZA[554]=ZR15(ZA[537])+ZA[474];
ZA[753]=ZA[737]+ZA[752];
ZA[750]=ZA[747]+ZMa(ZA[740],ZA[737],ZA[743])+ZR30(ZA[743]);
ZA[757]=(ZCh(ZA[753],ZA[748],ZA[742])+ZA[739]+ZA[546]+0xa831c66dU)+ZR26(ZA[753]);
ZA[566]=ZR15(ZA[546])+ZA[518];
ZA[758]=ZA[740]+ZA[757];
ZA[755]=ZA[752]+ZMa(ZA[743],ZA[740],ZA[750])+ZR30(ZA[750]);
ZA[762]=(ZCh(ZA[758],ZA[753],ZA[748])+ZA[742]+ZA[554]+0xb00327c8U)+ZR26(ZA[758]);
ZA[567]=ZR15(ZA[554])+ZA[482];
ZA[763]=ZA[743]+ZA[762];
ZA[760]=ZA[757]+ZMa(ZA[750],ZA[743],ZA[755])+ZR30(ZA[755]);
ZA[767]=(ZCh(ZA[763],ZA[758],ZA[753])+ZA[748]+ZA[566]+0xbf597fc7U)+ZR26(ZA[763]);
ZA[614]=ZR15(ZA[566])+ZA[528];
ZA[768]=ZA[750]+ZA[767];
ZA[765]=ZA[762]+ZMa(ZA[755],ZA[750],ZA[760])+ZR30(ZA[760]);
ZA[772]=(ZCh(ZA[768],ZA[763],ZA[758])+ZA[753]+ZA[567]+0xc6e00bf3U)+ZR26(ZA[768]);
ZA[616]=ZR15(ZA[567])+ZA[502]+0x00400022U;
ZA[773]=ZA[755]+ZA[772];
ZA[770]=ZA[767]+ZMa(ZA[760],ZA[755],ZA[765])+ZR30(ZA[765]);
ZA[777]=(ZCh(ZA[773],ZA[768],ZA[763])+ZA[758]+ZA[614]+0xd5a79147U)+ZR26(ZA[773]);
ZA[619]=ZR15(ZA[614])+ZA[537]+ZR25(ZA[497])+0x00000100U;
ZA[778]=ZA[760]+ZA[777];
ZA[775]=ZA[772]+ZMa(ZA[765],ZA[760],ZA[770])+ZR30(ZA[770]);
ZA[782]=(ZCh(ZA[778],ZA[773],ZA[768])+ZA[763]+ZA[616]+0x06ca6351U)+ZR26(ZA[778]);
ZA[622]=ZR15(ZA[616])+ZR25(ZA[471])+ZA[497]+ZA[546];
ZA[783]=ZA[765]+ZA[782];
ZA[780]=ZA[777]+ZMa(ZA[770],ZA[765],ZA[775])+ZR30(ZA[775]);
ZA[787]=(ZCh(ZA[783],ZA[778],ZA[773])+ZA[768]+ZA[619]+0x14292967U)+ZR26(ZA[783]);
ZA[627]=ZR15(ZA[619])+ZR25(ZA[501])+ZA[554]+ZA[471];
ZA[788]=ZA[770]+ZA[787];
ZA[785]=ZA[782]+ZMa(ZA[775],ZA[770],ZA[780])+ZR30(ZA[780]);
ZA[792]=(ZCh(ZA[788],ZA[783],ZA[778])+ZA[773]+ZA[622]+0x27b70a85U)+ZR26(ZA[788]);
ZA[631]=ZR15(ZA[622])+ZA[566]+ZR25(ZA[474])+ZA[501];
ZA[793]=ZA[775]+ZA[792];
ZA[790]=ZA[787]+ZMa(ZA[780],ZA[775],ZA[785])+ZR30(ZA[785]);
ZA[797]=(ZCh(ZA[793],ZA[788],ZA[783])+ZA[778]+ZA[627]+0x2e1b2138U)+ZR26(ZA[793]);
ZA[636]=ZR15(ZA[627])+ZA[567]+ZR25(ZA[518])+ZA[474];
ZA[798]=ZA[780]+ZA[797];
ZA[795]=ZA[792]+ZMa(ZA[785],ZA[780],ZA[790])+ZR30(ZA[790]);
ZA[802]=(ZCh(ZA[798],ZA[793],ZA[788])+ZA[783]+ZA[631]+0x4d2c6dfcU)+ZR26(ZA[798]);
ZA[640]=ZR15(ZA[631])+ZR25(ZA[482])+ZA[518]+ZA[614];
ZA[803]=ZA[785]+ZA[802];
ZA[800]=ZA[797]+ZMa(ZA[790],ZA[785],ZA[795])+ZR30(ZA[795]);
ZA[807]=(ZCh(ZA[803],ZA[798],ZA[793])+ZA[788]+ZA[636]+0x53380d13U)+ZR26(ZA[803]);
ZA[644]=ZR15(ZA[636])+ZA[616]+ZR25(ZA[528])+ZA[482];
ZA[808]=ZA[790]+ZA[807];
ZA[805]=ZA[802]+ZMa(ZA[795],ZA[790],ZA[800])+ZR30(ZA[800]);
ZA[812]=(ZCh(ZA[808],ZA[803],ZA[798])+ZA[793]+ZA[640]+0x650a7354U)+ZR26(ZA[808]);
ZA[648]=ZR15(ZA[640])+ZA[619]+ZR25(ZA[502])+ZA[528];
ZA[813]=ZA[795]+ZA[812];
ZA[810]=ZA[807]+ZMa(ZA[800],ZA[795],ZA[805])+ZR30(ZA[805]);
ZA[817]=(ZCh(ZA[813],ZA[808],ZA[803])+ZA[798]+ZA[644]+0x766a0abbU)+ZR26(ZA[813]);
ZA[651]=ZR15(ZA[644])+ZA[622]+ZR25(ZA[537])+ZA[502];
ZA[818]=ZA[800]+ZA[817];
ZA[815]=ZA[812]+ZMa(ZA[805],ZA[800],ZA[810])+ZR30(ZA[810]);
ZA[822]=(ZCh(ZA[818],ZA[813],ZA[808])+ZA[803]+ZA[648]+0x81c2c92eU)+ZR26(ZA[818]);
ZA[655]=ZR15(ZA[648])+ZA[627]+ZR25(ZA[546])+ZA[537];
ZA[823]=ZA[805]+ZA[822];
ZA[820]=ZA[817]+ZMa(ZA[810],ZA[805],ZA[815])+ZR30(ZA[815]);
ZA[827]=(ZCh(ZA[823],ZA[818],ZA[813])+ZA[808]+ZA[651]+0x92722c85U)+ZR26(ZA[823]);
ZA[659]=ZR15(ZA[651])+ZA[631]+ZR25(ZA[554])+ZA[546];
ZA[828]=ZA[810]+ZA[827];
ZA[825]=ZA[822]+ZMa(ZA[815],ZA[810],ZA[820])+ZR30(ZA[820]);
ZA[832]=(ZCh(ZA[828],ZA[823],ZA[818])+ZA[813]+ZA[655]+0xa2bfe8a1U)+ZR26(ZA[828]);
ZA[663]=ZR15(ZA[655])+ZA[636]+ZR25(ZA[566])+ZA[554];
ZA[833]=ZA[815]+ZA[832];
ZA[830]=ZA[827]+ZMa(ZA[820],ZA[815],ZA[825])+ZR30(ZA[825]);
ZA[837]=(ZCh(ZA[833],ZA[828],ZA[823])+ZA[818]+ZA[659]+0xa81a664bU)+ZR26(ZA[833]);
ZA[667]=ZR15(ZA[659])+ZA[640]+ZR25(ZA[567])+ZA[566];
ZA[838]=ZA[820]+ZA[837];
ZA[835]=ZA[832]+ZMa(ZA[825],ZA[820],ZA[830])+ZR30(ZA[830]);
ZA[842]=(ZCh(ZA[838],ZA[833],ZA[828])+ZA[823]+ZA[663]+0xc24b8b70U)+ZR26(ZA[838]);
ZA[671]=ZR15(ZA[663])+ZA[644]+ZR25(ZA[614])+ZA[567];
ZA[843]=ZA[825]+ZA[842];
ZA[840]=ZA[837]+ZMa(ZA[830],ZA[825],ZA[835])+ZR30(ZA[835]);
ZA[847]=(ZCh(ZA[843],ZA[838],ZA[833])+ZA[828]+ZA[667]+0xc76c51a3U)+ZR26(ZA[843]);
ZA[679]=ZR15(ZA[667])+ZA[648]+ZR25(ZA[616])+ZA[614];
ZA[848]=ZA[830]+ZA[847];
ZA[845]=ZA[842]+ZMa(ZA[835],ZA[830],ZA[840])+ZR30(ZA[840]);
ZA[852]=(ZCh(ZA[848],ZA[843],ZA[838])+ZA[833]+ZA[671]+0xd192e819U)+ZR26(ZA[848]);
ZA[684]=ZR15(ZA[671])+ZA[651]+ZR25(ZA[619])+ZA[616];
ZA[853]=ZA[835]+ZA[852];
ZA[850]=ZA[847]+ZMa(ZA[840],ZA[835],ZA[845])+ZR30(ZA[845]);
ZA[857]=(ZCh(ZA[853],ZA[848],ZA[843])+ZA[838]+ZA[679]+0xd6990624U)+ZR26(ZA[853]);
ZA[688]=ZR15(ZA[679])+ZA[655]+ZR25(ZA[622])+ZA[619];
ZA[858]=ZA[840]+ZA[857];
ZA[855]=ZA[852]+ZMa(ZA[845],ZA[840],ZA[850])+ZR30(ZA[850]);
ZA[862]=(ZCh(ZA[858],ZA[853],ZA[848])+ZA[843]+ZA[684]+0xf40e3585U)+ZR26(ZA[858]);
ZA[692]=ZR15(ZA[684])+ZA[659]+ZR25(ZA[627])+ZA[622];
ZA[863]=ZA[845]+ZA[862];
ZA[860]=ZA[857]+ZMa(ZA[850],ZA[845],ZA[855])+ZR30(ZA[855]);
ZA[867]=(ZCh(ZA[863],ZA[858],ZA[853])+ZA[848]+ZA[688]+0x106aa070U)+ZR26(ZA[863]);
ZA[696]=ZR15(ZA[688])+ZA[663]+ZR25(ZA[631])+ZA[627];
ZA[868]=ZA[850]+ZA[867];
ZA[865]=ZA[862]+ZMa(ZA[855],ZA[850],ZA[860])+ZR30(ZA[860]);
ZA[873]=(ZCh(ZA[868],ZA[863],ZA[858])+ZA[853]+ZA[692]+0x19a4c116U)+ZR26(ZA[868]);
ZA[700]=ZR15(ZA[692])+ZA[667]+ZR25(ZA[636])+ZA[631];
ZA[874]=ZA[855]+ZA[873];
ZA[870]=ZA[867]+ZMa(ZA[860],ZA[855],ZA[865])+ZR30(ZA[865]);
ZA[878]=(ZCh(ZA[874],ZA[868],ZA[863])+ZA[858]+ZA[696]+0x1e376c08U)+ZR26(ZA[874]);
ZA[704]=ZR15(ZA[696])+ZA[671]+ZR25(ZA[640])+ZA[636];
ZA[879]=ZA[860]+ZA[878];
ZA[876]=ZA[873]+ZMa(ZA[865],ZA[860],ZA[870])+ZR30(ZA[870]);
ZA[883]=(ZCh(ZA[879],ZA[874],ZA[868])+ZA[863]+ZA[700]+0x2748774cU)+ZR26(ZA[879]);
ZA[708]=ZR15(ZA[700])+ZA[679]+ZR25(ZA[644])+ZA[640];
ZA[884]=ZA[865]+ZA[883];
ZA[881]=ZA[878]+ZMa(ZA[870],ZA[865],ZA[876])+ZR30(ZA[876]);
ZA[888]=(ZCh(ZA[884],ZA[879],ZA[874])+ZA[868]+ZA[704]+0x34b0bcb5U)+ZR26(ZA[884]);
ZA[712]=ZR15(ZA[704])+ZA[684]+ZR25(ZA[648])+ZA[644];
ZA[889]=ZA[870]+ZA[888];
ZA[886]=ZA[883]+ZMa(ZA[876],ZA[870],ZA[881])+ZR30(ZA[881]);
ZA[893]=(ZCh(ZA[889],ZA[884],ZA[879])+ZA[874]+ZA[708]+0x391c0cb3U)+ZR26(ZA[889]);
ZA[716]=ZR15(ZA[708])+ZA[688]+ZR25(ZA[651])+ZA[648];
ZA[894]=ZA[876]+ZA[893];
ZA[891]=ZA[888]+ZMa(ZA[881],ZA[876],ZA[886])+ZR30(ZA[886]);
ZA[898]=(ZCh(ZA[894],ZA[889],ZA[884])+ZA[879]+ZA[712]+0x4ed8aa4aU)+ZR26(ZA[894]);
ZA[720]=ZR15(ZA[712])+ZA[692]+ZR25(ZA[655])+ZA[651];
ZA[899]=ZA[881]+ZA[898];
ZA[896]=ZA[893]+ZMa(ZA[886],ZA[881],ZA[891])+ZR30(ZA[891]);
ZA[903]=(ZCh(ZA[899],ZA[894],ZA[889])+ZA[884]+ZA[716]+0x5b9cca4fU)+ZR26(ZA[899]);
ZA[724]=ZR15(ZA[716])+ZA[696]+ZR25(ZA[659])+ZA[655];
ZA[904]=ZA[886]+ZA[903];
ZA[901]=ZA[898]+ZMa(ZA[891],ZA[886],ZA[896])+ZR30(ZA[896]);
ZA[908]=(ZCh(ZA[904],ZA[899],ZA[894])+ZA[889]+ZA[720]+0x682e6ff3U)+ZR26(ZA[904]);
ZA[727]=ZR15(ZA[720])+ZA[700]+ZR25(ZA[663])+ZA[659];
ZA[909]=ZA[891]+ZA[908];
ZA[906]=ZA[903]+ZMa(ZA[896],ZA[891],ZA[901])+ZR30(ZA[901]);
ZA[913]=(ZCh(ZA[909],ZA[904],ZA[899])+ZA[894]+ZA[724]+0x748f82eeU)+ZR26(ZA[909]);
ZA[730]=ZR15(ZA[724])+ZA[704]+ZR25(ZA[667])+ZA[663];
ZA[914]=ZA[896]+ZA[913];
ZA[911]=ZA[908]+ZMa(ZA[901],ZA[896],ZA[906])+ZR30(ZA[906]);
ZA[918]=(ZCh(ZA[914],ZA[909],ZA[904])+ZA[899]+ZA[901]+ZA[727]+0x78a5636fU)+ZR26(ZA[914]);
ZA[920]=(ZCh(ZA[918],ZA[914],ZA[909])+ZA[906]+ZA[904]+ZA[730]+0x84c87814U)+ZR26(ZA[918]);
ZA[922]=(ZCh(ZA[920],ZA[918],ZA[914])+ZA[911]+ZA[909]+ZR15(ZA[727])+ZA[708]+ZR25(ZA[671])+ZA[667]+0x8cc70208U)+ZR26(ZA[920]);
ZA[924]=(ZCh(ZA[922],ZA[920],ZA[918])+ZA[913]+ZMa(ZA[906],ZA[901],ZA[911])+ZR30(ZA[911])+ZA[914]+ZR15(ZA[730])+ZA[712]+ZR25(ZA[679])+ZA[671])+ZR26(ZA[922]);
#define FOUND (0x80)
#define NFLAG (0x7F)
#if defined(VECTORS4)
bool result = any(ZA[924] == 0x136032EDU);
if (result) {
if (ZA[924].x == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x;
if (ZA[924].y == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y;
if (ZA[924].z == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z;
if (ZA[924].w == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w;
}
#elif defined(VECTORS2)
bool result = any(ZA[924] == 0x136032EDU);
if (result) {
if (ZA[924].x == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x;
if (ZA[924].y == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y;
}
#else
if (ZA[924] == 0x136032EDU)
output[FOUND] = output[NFLAG & Znonce] = Znonce;
#endif
}