From cb3323b7b5b267c566c9b18626f0e8d5599c8928 Mon Sep 17 00:00:00 2001 From: Kano Date: Wed, 29 Feb 2012 21:17:10 +1100 Subject: [PATCH 001/117] Add API support for Icarus and Bitforce --- README | 22 ++++- api.c | 290 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 282 insertions(+), 30 deletions(-) diff --git a/README b/README index ba9d86ad..9ee3a3d2 100644 --- a/README +++ b/README @@ -594,7 +594,7 @@ An example request in both formats to set GPU 0 fan to 80%: The format of each reply (unless stated otherwise) is a STATUS section followed by an optional detail section -For API version 1.4: +For API version 1.4 and later: The STATUS section is: @@ -620,7 +620,7 @@ The STATUS section is: This defaults to the cgminer version but is the value of --api-description if it was specified at runtime. -For API version 1.4: +For API version 1.5: The list of requests - a (*) means it requires privileged access - and replies are: @@ -631,6 +631,7 @@ The list of requests - a (*) means it requires privileged access - and replies a config CONFIG Some miner configuration information: GPU Count=N, <- the number of GPUs + PGA Count=N, <- the number of PGAs CPU Count=N, <- the number of CPUs Pool Count=N, <- the number of Pools ADL=X, <- Y or N if ADL is compiled in the code @@ -644,16 +645,22 @@ The list of requests - a (*) means it requires privileged access - and replies a pools POOLS The status of each pool e.g. Pool=0,URL=http://pool.com:6311,Status=Alive,...| - devs DEVS Each available CPU and GPU with their details + devs DEVS Each available GPU, PGA and CPU with their details e.g. GPU=0,Accepted=NN,MHS av=NNN,...,Intensity=D| Last Share Time=NNN, <- standand long time in seconds (or 0 if none) of last accepted share Last Share Pool=N, <- pool number (or -1 if none) + Will not report PGAs if PGA mining is disabled Will not report CPUs if CPU mining is disabled gpu|N GPU The details of a single GPU number N in the same format and details as for DEVS + pga|N PGA The details of a single PGA number N in the same + format and details as for DEVS + This is only available if PGA mining is enabled + Use 'pgacount' or 'config' first to see if there are any + cpu|N CPU The details of a single CPU number N in the same format and details as for DEVS This is only available if CPU mining is enabled @@ -661,6 +668,9 @@ The list of requests - a (*) means it requires privileged access - and replies a gpucount GPUS Count=N| <- the number of GPUs + pgacount PGAS Count=N| <- the number of PGAs + Always returns 0 if PGA mining is disabled + cpucount CPUS Count=N| <- the number of CPUs Always returns 0 if CPU mining is disabled @@ -921,6 +931,12 @@ it fail when php is installed properly but I only get errors about Sockets not working in the logs? A: http://us.php.net/manual/en/sockets.installation.php +Q: What is a PGA? +A: At the moment, cgminer supports 2 FPGA's: Icarus and BitForce. +They are Field-Programmable Gate Arrays that have been programmed to do Bitcoin +mining. Since the acronym needs to be only 3 characters, the "Field-" part has +been skipped. + --- This code is provided entirely free of charge by the programmer in his spare diff --git a/api.c b/api.c index dd2af0b7..edab0724 100644 --- a/api.c +++ b/api.c @@ -6,6 +6,10 @@ * 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. See COPYING for more details. + * + * Note: the code always includes GPU support even if there are no GPUs + * this simplifies handling multiple other device code being included + * depending on compile options */ #include "config.h" @@ -134,12 +138,13 @@ #endif // Big enough for largest API request -// though a PC with 100s of CPUs may exceed the size ... +// though a PC with 100s of PGAs/CPUs may exceed the size ... // Current code assumes it can socket send this size also -#define MYBUFSIZ 32768 +#define MYBUFSIZ 32768 // TODO: intercept before it's exceeded // Number of requests to queue - normally would be small -#define QUEUE 10 +// However lots of PGA's may mean more +#define QUEUE 100 static char *io_buffer = NULL; static char *msg_buffer = NULL; @@ -152,7 +157,7 @@ static const char *COMMA = ","; static const char SEPARATOR = '|'; static const char GPUSEP = ','; -static const char *APIVERSION = "1.4"; +static const char *APIVERSION = "1.5"; static const char *DEAD = "Dead"; static const char *SICK = "Sick"; static const char *NOSTART = "NoStart"; @@ -170,14 +175,19 @@ static const char *NO = "N"; #define _STATUS "STATUS" #define _VERSION "VERSION" #define _MINECON "CONFIG" +#define _GPU "GPU" + +#if defined(USE_BITFORCE) || defined(USE_ICARUS) +#define _PGA "PGA" +#endif #ifdef WANT_CPUMINE #define _CPU "CPU" #endif -#define _GPU "GPU" -#define _CPUS "CPUS" #define _GPUS "GPUS" +#define _PGAS "PGAS" +#define _CPUS "CPUS" #define _BYE "BYE" static const char ISJSON = '{'; @@ -196,11 +206,16 @@ static const char ISJSON = '{'; #define JSON_MINECON JSON1 _MINECON JSON2 #define JSON_GPU JSON1 _GPU JSON2 +#if defined(USE_BITFORCE) || defined(USE_ICARUS) +#define JSON_PGA JSON1 _PGA JSON2 +#endif + #ifdef WANT_CPUMINE #define JSON_CPU JSON1 _CPU JSON2 #endif #define JSON_GPUS JSON1 _GPUS JSON2 +#define JSON_PGAS JSON1 _PGAS JSON2 #define JSON_CPUS JSON1 _CPUS JSON2 #define JSON_BYE JSON1 _BYE JSON1 #define JSON_CLOSE JSON3 @@ -269,6 +284,14 @@ static const char *JSON_PARAMETER = "parameter"; #define MSG_TOOMANYP 54 #define MSG_ADDPOOL 55 +#if defined(USE_BITFORCE) || defined(USE_ICARUS) +#define MSG_PGANON 56 +#define MSG_PGADEV 57 +#define MSG_INVPGA 58 +#endif + +#define MSG_NUMPGA 59 + enum code_severity { SEVERITY_ERR, SEVERITY_WARN, @@ -279,16 +302,17 @@ enum code_severity { enum code_parameters { PARAM_GPU, + PARAM_PGA, PARAM_CPU, PARAM_GPUMAX, + PARAM_PGAMAX, PARAM_CPUMAX, PARAM_PMAX, PARAM_POOLMAX, -#ifdef WANT_CPUMINE - PARAM_GCMAX, -#else - PARAM_GMAX, -#endif + +// Single generic case: have the code resolve it - see below + PARAM_DMAX, + PARAM_CMD, PARAM_POOL, PARAM_STR, @@ -310,25 +334,43 @@ struct CODES { { SEVERITY_ERR, MSG_GPUNON, PARAM_NONE, "No GPUs" }, { SEVERITY_SUCC, MSG_POOL, PARAM_PMAX, "%d Pool(s)" }, { SEVERITY_ERR, MSG_NOPOOL, PARAM_NONE, "No pools" }, + + { SEVERITY_SUCC, MSG_DEVS, PARAM_DMAX, "%d GPU(s)" +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + " - %d PGA(s)" +#endif #ifdef WANT_CPUMINE - { SEVERITY_SUCC, MSG_DEVS, PARAM_GCMAX, "%d GPU(s) - %d CPU(s)" }, - { SEVERITY_ERR, MSG_NODEVS, PARAM_NONE, "No GPUs/CPUs" }, -#else - { SEVERITY_SUCC, MSG_DEVS, PARAM_GMAX, "%d GPU(s)" }, - { SEVERITY_ERR, MSG_NODEVS, PARAM_NONE, "No GPUs" }, + " - %d CPU(s)" +#endif + }, + + { SEVERITY_ERR, MSG_NODEVS, PARAM_NONE, "No GPUs" +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + "/PGAs" +#endif +#ifdef WANT_CPUMINE + "/CPUs" #endif + }, + { SEVERITY_SUCC, MSG_SUMM, PARAM_NONE, "Summary" }, { SEVERITY_INFO, MSG_GPUDIS, PARAM_GPU, "GPU %d set disable flag" }, { SEVERITY_INFO, MSG_GPUREI, PARAM_GPU, "GPU %d restart attempted" }, { SEVERITY_ERR, MSG_INVCMD, PARAM_NONE, "Invalid command" }, { SEVERITY_ERR, MSG_MISID, PARAM_NONE, "Missing device id parameter" }, { SEVERITY_SUCC, MSG_GPUDEV, PARAM_GPU, "GPU%d" }, +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + { SEVERITY_ERR, MSG_PGANON, PARAM_NONE, "No PGAs" }, + { SEVERITY_SUCC, MSG_PGADEV, PARAM_PGA, "PGA%d" }, + { SEVERITY_ERR, MSG_INVPGA, PARAM_PGAMAX, "Invalid PGA id %d - range is 0 - %d" }, +#endif #ifdef WANT_CPUMINE { SEVERITY_ERR, MSG_CPUNON, PARAM_NONE, "No CPUs" }, { SEVERITY_SUCC, MSG_CPUDEV, PARAM_CPU, "CPU%d" }, { SEVERITY_ERR, MSG_INVCPU, PARAM_CPUMAX, "Invalid CPU id %d - range is 0 - %d" }, #endif { SEVERITY_SUCC, MSG_NUMGPU, PARAM_NONE, "GPU count" }, + { SEVERITY_SUCC, MSG_NUMPGA, PARAM_NONE, "PGA count" }, { SEVERITY_SUCC, MSG_NUMCPU, PARAM_NONE, "CPU count" }, { SEVERITY_SUCC, MSG_VERSION, PARAM_NONE, "CGMiner versions" }, { SEVERITY_ERR, MSG_INVJSON, PARAM_NONE, "Invalid JSON" }, @@ -382,6 +424,54 @@ struct IP4ACCESS { static struct IP4ACCESS *ipaccess = NULL; static int ips = 0; +#ifdef USE_BITFORCE +extern struct device_api bitforce_api; +#endif + +#ifdef USE_ICARUS +extern struct device_api icarus_api; +#endif + +#if defined(USE_BITFORCE) || defined(USE_ICARUS) +static int numpgas() +{ + int count = 0; + int i; + + for (i = 0; i < total_devices; i++) { +#ifdef USE_BITFORCE + if (devices[i]->api == &bitforce_api) + count++; +#endif +#ifdef USE_ICARUS + if (devices[i]->api == &icarus_api) + count++; +#endif + } + return count; +} + +static int pgadevice(int pgaid) +{ + int count = 0; + int i; + + for (i = 0; i < total_devices; i++) { +#ifdef USE_BITFORCE + if (devices[i]->api == &bitforce_api) + count++; +#endif +#ifdef USE_ICARUS + if (devices[i]->api == &icarus_api) + count++; +#endif + if (count == (pgaid + 1)) + return i; + } + return -1; +} +#endif + // All replies (except BYE) start with a message // thus for JSON, message() inserts JSON_START at the front // and send_result() adds JSON_END at the end @@ -389,6 +479,9 @@ static char *message(int messageid, int paramid, char *param2, bool isjson) { char severity; char *ptr; +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + int pga; +#endif #ifdef WANT_CPUMINE int cpu; #endif @@ -421,6 +514,7 @@ static char *message(int messageid, int paramid, char *param2, bool isjson) switch(codes[i].params) { case PARAM_GPU: + case PARAM_PGA: case PARAM_CPU: sprintf(ptr, codes[i].description, paramid); break; @@ -436,20 +530,26 @@ static char *message(int messageid, int paramid, char *param2, bool isjson) case PARAM_POOLMAX: sprintf(ptr, codes[i].description, paramid, total_pools - 1); break; + case PARAM_DMAX: +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + pga = numpgas(); +#endif #ifdef WANT_CPUMINE - case PARAM_GCMAX: if (opt_n_threads > 0) cpu = num_processors; else cpu = 0; +#endif - sprintf(ptr, codes[i].description, nDevs, cpu); - break; -#else - case PARAM_GMAX: - sprintf(ptr, codes[i].description, nDevs); - break; + sprintf(ptr, codes[i].description, nDevs +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + , pga #endif +#ifdef WANT_CPUMINE + , cpu +#endif + ); + break; case PARAM_CMD: sprintf(ptr, codes[i].description, JSON_COMMAND); break; @@ -500,6 +600,7 @@ static void apiversion(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, static void minerconfig(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, bool isjson) { char buf[BUFSIZ]; + int pgacount = 0; int cpucount = 0; char *adlinuse = (char *)NO; #ifdef HAVE_ADL @@ -516,6 +617,10 @@ static void minerconfig(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, const char *adl = NO; #endif +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + pgacount = numpgas(); +#endif + #ifdef WANT_CPUMINE cpucount = opt_n_threads > 0 ? num_processors : 0; #endif @@ -523,9 +628,9 @@ static void minerconfig(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, strcpy(io_buffer, message(MSG_MINECON, 0, NULL, isjson)); if (isjson) - sprintf(buf, "," JSON_MINECON "{\"GPU Count\":%d,\"CPU Count\":%d,\"Pool Count\":%d,\"ADL\":\"%s\",\"ADL in use\":\"%s\",\"Strategy\":\"%s\",\"Log Interval\":\"%d\"}" JSON_CLOSE, nDevs, cpucount, total_pools, adl, adlinuse, strategies[pool_strategy].s, opt_log_interval); + sprintf(buf, "," JSON_MINECON "{\"GPU Count\":%d,\"PGA Count\":%d,\"CPU Count\":%d,\"Pool Count\":%d,\"ADL\":\"%s\",\"ADL in use\":\"%s\",\"Strategy\":\"%s\",\"Log Interval\":\"%d\"}" JSON_CLOSE, nDevs, pgacount, cpucount, total_pools, adl, adlinuse, strategies[pool_strategy].s, opt_log_interval); else - sprintf(buf, _MINECON ",GPU Count=%d,CPU Count=%d,Pool Count=%d,ADL=%s,ADL in use=%s,Strategy=%s,Log Interval=%d%c", nDevs, cpucount, total_pools, adl, adlinuse, strategies[pool_strategy].s, opt_log_interval, SEPARATOR); + sprintf(buf, _MINECON ",GPU Count=%d,PGA Count=%d,CPU Count=%d,Pool Count=%d,ADL=%s,ADL in use=%s,Strategy=%s,Log Interval=%d%c", nDevs, pgacount, cpucount, total_pools, adl, adlinuse, strategies[pool_strategy].s, opt_log_interval, SEPARATOR); strcat(io_buffer, buf); } @@ -589,6 +694,59 @@ static void gpustatus(int gpu, bool isjson) } } +#if defined(USE_BITFORCE) || defined(USE_ICARUS) +static void pgastatus(int pga, bool isjson) +{ + char buf[BUFSIZ]; + char *enabled; + char *status; + int numpga = numpgas(); + + if (numpga > 0 && pga >= 0 && pga < numpga) { + int dev = pgadevice(pga); + if (dev < 0) // Should never happen + return; + + struct cgpu_info *cgpu = devices[dev]; + + cgpu->utility = cgpu->accepted / ( total_secs ? total_secs : 1 ) * 60; + + if (cgpu->deven != DEV_DISABLED) + enabled = (char *)YES; + else + enabled = (char *)NO; + + if (cgpu->status == LIFE_DEAD) + status = (char *)DEAD; + else if (cgpu->status == LIFE_SICK) + status = (char *)SICK; + else if (cgpu->status == LIFE_NOSTART) + status = (char *)NOSTART; + else + status = (char *)ALIVE; + + if (isjson) + sprintf(buf, "{\"PGA\":%d,\"Name\":\"%s\",\"ID\":%d,\"Enabled\":\"%s\",\"Status\":\"%s\",\"Temperature\":%.2f,\"MHS av\":%.2f,\"MHS %ds\":%.2f,\"Accepted\":%d,\"Rejected\":%d,\"Hardware Errors\":%d,\"Utility\":%.2f,\"Last Share Pool\":%d,\"Last Share Time\":%lu,\"Total MH\":%.4f}", + pga, cgpu->api->name, cgpu->device_id, + enabled, status, cgpu->temp, + cgpu->total_mhashes / total_secs, opt_log_interval, cgpu->rolling, + cgpu->accepted, cgpu->rejected, cgpu->hw_errors, cgpu->utility, + ((unsigned long)(cgpu->last_share_pool_time) > 0) ? cgpu->last_share_pool : -1, + (unsigned long)(cgpu->last_share_pool_time), cgpu->total_mhashes); + else + sprintf(buf, "PGA=%d,Name=%s,ID=%d,Enabled=%s,Status=%s,Temperature=%.2f,MHS av=%.2f,MHS %ds=%.2f,Accepted=%d,Rejected=%d,Hardware Errors=%d,Utility=%.2f,Last Share Pool=%d,Last Share Time=%lu,Total MH=%.4f%c", + pga, cgpu->api->name, cgpu->device_id, + enabled, status, cgpu->temp, + cgpu->total_mhashes / total_secs, opt_log_interval, cgpu->rolling, + cgpu->accepted, cgpu->rejected, cgpu->hw_errors, cgpu->utility, + ((unsigned long)(cgpu->last_share_pool_time) > 0) ? cgpu->last_share_pool : -1, + (unsigned long)(cgpu->last_share_pool_time), cgpu->total_mhashes, SEPARATOR); + + strcat(io_buffer, buf); + } +} +#endif + #ifdef WANT_CPUMINE static void cpustatus(int cpu, bool isjson) { @@ -623,6 +781,7 @@ static void cpustatus(int cpu, bool isjson) static void devstatus(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, bool isjson) { + int devcount = 0; int i; if (nDevs == 0 && opt_n_threads == 0) { @@ -638,19 +797,37 @@ static void devstatus(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, b } for (i = 0; i < nDevs; i++) { - if (isjson && i > 0) + if (isjson && devcount > 0) strcat(io_buffer, COMMA); gpustatus(i, isjson); + + devcount++; } +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + int numpga = numpgas(); + + if (numpga > 0) + for (i = 0; i < numpga; i++) { + if (isjson && devcount > 0) + strcat(io_buffer, COMMA); + + pgastatus(i, isjson); + + devcount++; + } +#endif + #ifdef WANT_CPUMINE if (opt_n_threads > 0) for (i = 0; i < num_processors; i++) { - if (isjson && (i > 0 || nDevs > 0)) + if (isjson && devcount > 0) strcat(io_buffer, COMMA); cpustatus(i, isjson); + + devcount++; } #endif @@ -691,6 +868,42 @@ static void gpudev(__maybe_unused SOCKETTYPE c, char *param, bool isjson) strcat(io_buffer, JSON_CLOSE); } +#if defined(USE_BITFORCE) || defined(USE_ICARUS) +static void pgadev(__maybe_unused SOCKETTYPE c, char *param, bool isjson) +{ + int numpga = numpgas(); + int id; + + if (numpga == 0) { + strcpy(io_buffer, message(MSG_PGANON, 0, NULL, isjson)); + return; + } + + if (param == NULL || *param == '\0') { + strcpy(io_buffer, message(MSG_MISID, 0, NULL, isjson)); + return; + } + + id = atoi(param); + if (id < 0 || id >= numpga) { + strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson)); + return; + } + + strcpy(io_buffer, message(MSG_PGADEV, id, NULL, isjson)); + + if (isjson) { + strcat(io_buffer, COMMA); + strcat(io_buffer, JSON_PGA); + } + + pgastatus(id, isjson); + + if (isjson) + strcat(io_buffer, JSON_CLOSE); +} +#endif + #ifdef WANT_CPUMINE static void cpudev(__maybe_unused SOCKETTYPE c, char *param, bool isjson) { @@ -949,6 +1162,25 @@ static void gpucount(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, bo strcat(io_buffer, buf); } +static void pgacount(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, bool isjson) +{ + char buf[BUFSIZ]; + int count = 0; + +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + count = numpgas(); +#endif + + strcpy(io_buffer, message(MSG_NUMPGA, 0, NULL, isjson)); + + if (isjson) + sprintf(buf, "," JSON_PGAS "{\"Count\":%d}" JSON_CLOSE, count); + else + sprintf(buf, _PGAS ",Count=%d%c", count, SEPARATOR); + + strcat(io_buffer, buf); +} + static void cpucount(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, bool isjson) { char buf[BUFSIZ]; @@ -1350,10 +1582,14 @@ struct CMDS { { "gpudisable", gpudisable, true }, { "gpurestart", gpurestart, true }, { "gpu", gpudev, false }, +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + { "pga", pgadev, false }, +#endif #ifdef WANT_CPUMINE { "cpu", cpudev, false }, #endif { "gpucount", gpucount, false }, + { "pgacount", pgacount, false }, { "cpucount", cpucount, false }, { "switchpool", switchpool, true }, { "addpool", addpool, true }, From 3d9970d66f97c75cc4187f6a9dff5d4b38d755fb Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 29 Feb 2012 09:02:30 -0500 Subject: [PATCH 002/117] Bugfix: Check for libudev header (not just library) in configure, and document optional dependency --- README | 2 ++ configure.ac | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README b/README index e327a5ee..e3b93e9c 100644 --- a/README +++ b/README @@ -44,6 +44,8 @@ Dependencies: (This sdk is mandatory for GPU mining) AMD ADL SDK http://developer.amd.com/sdks/ADLSDK (This sdk is mandatory for ATI GPU monitoring & clocking) + libudev headers + (This is only required for FPGA auto-detection) CGMiner specific configuration options: --enable-cpumining Build with cpu mining support(default disabled) diff --git a/configure.ac b/configure.ac index f505383a..5b0a7582 100644 --- a/configure.ac +++ b/configure.ac @@ -266,7 +266,7 @@ if test "x$bitforce" != xno; then [libudev=auto] ) if test "x$libudev" != "xno"; then - AC_CHECK_LIB([udev], [udev_device_get_devnode], [ + AC_CHECK_HEADER([libudev.h],[ libudev=yes UDEV_LIBS=-ludev AC_DEFINE([HAVE_LIBUDEV], [1], [Defined to 1 if libudev is wanted]) From aa52e7dfd7d08b4a29d728cf79707f27b027cbd6 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Thu, 1 Mar 2012 17:24:38 +0100 Subject: [PATCH 003/117] optimized nonce-check and output code for -v 2 and -v 4 --- diakgcn120223.cl | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/diakgcn120223.cl b/diakgcn120223.cl index de9ce58a..ada19379 100644 --- a/diakgcn120223.cl +++ b/diakgcn120223.cl @@ -1,4 +1,4 @@ -// DiaKGCN 24-02-2012 - OpenCL kernel by Diapolo +// DiaKGCN 01-03-2012 - OpenCL kernel by Diapolo // // Parts and / or ideas for this kernel are based upon the public-domain poclbm project, the phatk kernel by Phateus and the DiabloMiner kernel by DiabloD3. // The kernel was rewritten by me (Diapolo) and is still public-domain! @@ -571,7 +571,6 @@ __kernel V[7] += V[3] + W[12] + ch(V[0], V[1], V[2]) + rotr26(V[0]); - #define FOUND (0x80) #define NFLAG (0x7F) @@ -599,31 +598,11 @@ __kernel output[FOUND] = output[NFLAG & nonce.s7] = nonce.s7; } #elif defined VECTORS4 - V[7] ^= 0x136032edU; - - bool result = V[7].x & V[7].y & V[7].z & V[7].w; - - if (!result) { - if (!V[7].x) - output[FOUND] = output[NFLAG & nonce.x] = nonce.x; - if (!V[7].y) - output[FOUND] = output[NFLAG & nonce.y] = nonce.y; - if (!V[7].z) - output[FOUND] = output[NFLAG & nonce.z] = nonce.z; - if (!V[7].w) - output[FOUND] = output[NFLAG & nonce.w] = nonce.w; - } + if ((V[7].x == 0x136032edU) ^ (V[7].y == 0x136032edU) ^ (V[7].z == 0x136032edU) ^ (V[7].w == 0x136032edU)) + output[FOUND] = output[NFLAG & nonce.x] = (V[7].x == 0x136032edU) ? nonce.x : ((V[7].y == 0x136032edU) ? nonce.y : ((V[7].z == 0x136032edU) ? nonce.z : nonce.w)); #elif defined VECTORS2 - V[7] ^= 0x136032edU; - - bool result = V[7].x & V[7].y; - - if (!result) { - if (!V[7].x) - output[FOUND] = output[NFLAG & nonce.x] = nonce.x; - if (!V[7].y) - output[FOUND] = output[NFLAG & nonce.y] = nonce.y; - } + if ((V[7].x == 0x136032edU) + (V[7].y == 0x136032edU)) + output[FOUND] = output[NFLAG & nonce.x] = (V[7].x == 0x136032edU) ? nonce.x : nonce.y; #else if (V[7] == 0x136032edU) output[FOUND] = output[NFLAG & nonce] = nonce; From 8bafc8d22cc60fd4bae739ac485680bbeb2efe47 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 3 Mar 2012 21:45:02 -0500 Subject: [PATCH 004/117] Allow specifying a specific driver for --scan-serial For example: --scan-serial bitforce:/dev/ttyUSB0 --- bitforce.c | 8 ++++++-- icarus.c | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/bitforce.c b/bitforce.c index e0636648..556354f8 100644 --- a/bitforce.c +++ b/bitforce.c @@ -203,13 +203,17 @@ static void bitforce_detect_auto() static void bitforce_detect() { struct string_elist *iter, *tmp; + const char*s; bool found = false; bool autoscan = false; list_for_each_entry_safe(iter, tmp, &scan_devices, list) { - if (!strcmp(iter->string, "auto")) + s = iter->string; + if (!strncmp("bitforce:", iter->string, 9)) + s += 9; + if (!strcmp(s, "auto")) autoscan = true; - else if (bitforce_detect_one(iter->string)) { + else if (bitforce_detect_one(s)) { string_elist_del(iter); found = true; } diff --git a/icarus.c b/icarus.c index 1d59657d..f5e20559 100644 --- a/icarus.c +++ b/icarus.c @@ -205,9 +205,13 @@ static bool icarus_detect_one(const char *devpath) static void icarus_detect() { struct string_elist *iter, *tmp; + const char*s; list_for_each_entry_safe(iter, tmp, &scan_devices, list) { - if (icarus_detect_one(iter->string)) + s = iter->string; + if (!strncmp("icarus:", iter->string, 7)) + s += 7; + if (icarus_detect_one(s)) string_elist_del(iter); } } From 0fdf31dc272c16ea03b5209cf0020c1c46e11372 Mon Sep 17 00:00:00 2001 From: Kano Date: Sun, 4 Mar 2012 14:05:39 +1100 Subject: [PATCH 005/117] icarus.c set the windows TODO timeout --- icarus.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/icarus.c b/icarus.c index 1d59657d..b50aaae7 100644 --- a/icarus.c +++ b/icarus.c @@ -100,7 +100,10 @@ static int icarus_open(const char *devpath) NULL, OPEN_EXISTING, 0, NULL); if (unlikely(hSerial == INVALID_HANDLE_VALUE)) return -1; - /* TODO: Needs setup read block time. just like VTIME = 10 */ + + COMMTIMEOUTS cto = {1000, 0, 1000, 0, 1000}; + SetCommTimeouts(hSerial, &cto); + return _open_osfhandle((LONG)hSerial, 0); #endif } From caa02f81a552798df46e9671b541fe66a23309a1 Mon Sep 17 00:00:00 2001 From: Kano Date: Sun, 4 Mar 2012 14:37:38 +1100 Subject: [PATCH 006/117] icarus.c modify (regular) timeout warning to only be debug --- icarus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/icarus.c b/icarus.c index b50aaae7..48dabe57 100644 --- a/icarus.c +++ b/icarus.c @@ -123,7 +123,7 @@ static int icarus_gets(unsigned char *buf, size_t bufLen, int fd) rc++; if (rc == ICARUS_READ_FAULT_COUNT) { - applog(LOG_WARNING, + applog(LOG_DEBUG, "Icarus Read: No data in %d seconds", rc); return 1; } From 1f118078eba7926b325fe21a8794a0ecb2b5c1f6 Mon Sep 17 00:00:00 2001 From: Kano Date: Sun, 4 Mar 2012 14:51:11 +1100 Subject: [PATCH 007/117] api.c: correct error messages --- api.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/api.c b/api.c index edab0724..d7f8a97f 100644 --- a/api.c +++ b/api.c @@ -524,6 +524,21 @@ static char *message(int messageid, int paramid, char *param2, bool isjson) case PARAM_GPUMAX: sprintf(ptr, codes[i].description, paramid, nDevs - 1); break; +#if defined(USE_BITFORCE) || defined(USE_ICARUS) + case PARAM_PGAMAX: + pga = numpgas(); + sprintf(ptr, codes[i].description, paramid, pga - 1); + break; +#endif +#ifdef WANT_CPUMINE + case PARAM_CPUMAX: + if (opt_n_threads > 0) + cpu = num_processors; + else + cpu = 0; + sprintf(ptr, codes[i].description, paramid, cpu - 1); + break; +#endif case PARAM_PMAX: sprintf(ptr, codes[i].description, total_pools); break; From 702dd0f86f88159ed81c2780087b76138e60f9a7 Mon Sep 17 00:00:00 2001 From: Kano Date: Tue, 6 Mar 2012 18:51:16 +1100 Subject: [PATCH 008/117] miner.php split devs output for different devices --- miner.php | 79 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 33 deletions(-) diff --git a/miner.php b/miner.php index d385a8ff..8f37dfcc 100644 --- a/miner.php +++ b/miner.php @@ -158,7 +158,8 @@ function fmt($section, $name, $value) switch ($section.'.'.$name) { - case 'GPU0.Last Share Time': + case 'GPU.Last Share Time': + case 'PGA.Last Share Time': return date('H:i:s', $value); break; case 'SUMMARY.Elapsed': @@ -190,11 +191,13 @@ function fmt($section, $name, $value) } } break; - case 'GPU0.Utility': + case 'GPU.Utility': + case 'PGA.Utility': case 'SUMMARY.Utility': return $value.'/m'; break; - case 'GPU0.Temperature': + case 'GPU.Temperature': + case 'PGA.Temperature': return $value.'°C'; break; } @@ -202,8 +205,37 @@ function fmt($section, $name, $value) return $value; } # +global $poolcmd; +$poolcmd = array( 'Switch to' => 'switchpool', + 'Enable' => 'enablepool', + 'Disable' => 'disablepool' ); +# +function showhead($cmd, $item, $values) +{ + global $poolcmd; + + echo ''; + + foreach ($values as $name => $value) + { + if ($name == '0') + $name = ' '; + echo "$name"; + } + + if ($cmd == 'pools') + foreach ($poolcmd as $name => $pcmd) + echo "$name"; + + echo ''; +} +# function details($cmd, $list) { + global $poolcmd; + + $dfmt = 'H:i:s j-M-Y \U\T\CP'; + $stas = array('S' => 'Success', 'W' => 'Warning', 'I' => 'Informational', 'E' => 'Error', 'F' => 'Fatal'); $tb = ''; @@ -211,7 +243,7 @@ function details($cmd, $list) echo $tb; - echo ''; + echo ''; echo $te.$tb; @@ -219,49 +251,30 @@ function details($cmd, $list) { echo ''; echo ''; + if (isset($list['STATUS']['When'])) + echo ''; $sta = $list['STATUS']['STATUS']; echo ''; echo ''; echo ''; } - echo $te.$tb; $section = ''; - $poolcmd = array( 'Switch to' => 'switchpool', - 'Enable' => 'enablepool', - 'Disable' => 'disablepool' ); - foreach ($list as $item => $values) { - if ($item != 'STATUS') - { - $section = $item; - - echo ''; - - foreach ($values as $name => $value) - { - if ($name == '0') - $name = ' '; - echo ""; - } - - if ($cmd == 'pools') - foreach ($poolcmd as $name => $pcmd) - echo ""; + if ($item == 'STATUS') + continue; - echo ''; + $sectionname = ereg_replace('[0-9]', '', $item); - break; + if ($sectionname != $section) + { + echo $te.$tb; + showhead($cmd, $item, $values); + $section = $sectionname; } - } - - foreach ($list as $item => $values) - { - if ($item == 'STATUS') - continue; echo ''; From 2295d6b1d8c57b119ff8621ca8f6d638db09df71 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 12 Mar 2012 14:57:56 -0400 Subject: [PATCH 009/117] Bugfix: AC_ARG_WITH provides withval instead of enableval --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index f505383a..d295d401 100644 --- a/configure.ac +++ b/configure.ac @@ -261,8 +261,8 @@ fi AM_CONDITIONAL([HAS_YASM], [test x$has_yasm = xtrue]) if test "x$bitforce" != xno; then - AC_ARG_WITH([libudev], [AC_HELP_STRING([--with-libudev], [Autodetect FPGAs using libudev])], - [libudev=$enableval], + AC_ARG_WITH([libudev], [AC_HELP_STRING([--without-libudev], [Autodetect FPGAs using libudev (default enabled)])], + [libudev=$withval], [libudev=auto] ) if test "x$libudev" != "xno"; then From ed8382c88dc986225fadd4099bd0625cbe5b47f1 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 12 Mar 2012 14:56:05 -0400 Subject: [PATCH 010/117] Make curses TUI support optional at compile-time. --- adl.c | 9 ++++++- cgminer.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++--- configure.ac | 31 ++++++++++++++++++++--- device-gpu.c | 10 ++++++++ logging.c | 43 ++++++++++++++++--------------- util.c | 1 - 6 files changed, 136 insertions(+), 29 deletions(-) diff --git a/adl.c b/adl.c index 7a4707e0..e561fa28 100644 --- a/adl.c +++ b/adl.c @@ -12,9 +12,12 @@ #if defined(HAVE_ADL) && (defined(__linux) || defined (WIN32)) #include -#include #include +#ifdef HAVE_CURSES +#include +#endif + #include "miner.h" #include "ADL_SDK/adl_sdk.h" #include "compat.h" @@ -850,6 +853,7 @@ static void get_vddcrange(int gpu, float *imin, float *imax) *imax = (float)ga->lpOdParameters.sVddc.iMax / 1000; } +#ifdef HAVE_CURSES static float curses_float(const char *query) { float ret; @@ -860,6 +864,7 @@ static float curses_float(const char *query) free(cvar); return ret; } +#endif int set_vddc(int gpu, float fVddc) { @@ -1138,6 +1143,7 @@ void set_defaultengine(int gpu) unlock_adl(); } +#ifdef HAVE_CURSES void change_autosettings(int gpu) { struct gpu_adl *ga = &gpus[gpu].adl; @@ -1294,6 +1300,7 @@ updated: sleep(1); goto updated; } +#endif void clear_adl(int nDevs) { diff --git a/cgminer.c b/cgminer.c index c336f8b4..217e7599 100644 --- a/cgminer.c +++ b/cgminer.c @@ -11,7 +11,9 @@ #include "config.h" +#ifdef HAVE_CURSES #include +#endif #include #include @@ -116,7 +118,13 @@ int gpu_threads; int opt_n_threads = -1; int mining_threads; int num_processors; -bool use_curses = true; +bool use_curses = +#ifdef HAVE_CURSES + true +#else + false +#endif +; static bool opt_submit_stale; static int opt_shares; static bool opt_fail_only; @@ -141,7 +149,9 @@ int longpoll_thr_id; static int stage_thr_id; static int watchpool_thr_id; static int watchdog_thr_id; +#ifdef HAVE_CURSES static int input_thr_id; +#endif int gpur_thr_id; static int api_thr_id; static int total_threads; @@ -151,7 +161,9 @@ struct work_restart *work_restart = NULL; static pthread_mutex_t hash_lock; static pthread_mutex_t qd_lock; static pthread_mutex_t *stgd_lock; +#ifdef HAVE_CURSES static pthread_mutex_t curses_lock; +#endif static pthread_rwlock_t blk_lock; pthread_rwlock_t netacc_lock; @@ -179,6 +191,9 @@ enum pool_strategy pool_strategy = POOL_FAILOVER; int opt_rotate_period; static int total_urls, total_users, total_passes, total_userpasses; +#ifndef HAVE_CURSES +const +#endif static bool curses_active = false; static char current_block[37]; @@ -828,7 +843,12 @@ static struct opt_table opt_config_table[] = { #endif OPT_WITHOUT_ARG("--text-only|-T", opt_set_invbool, &use_curses, - "Disable ncurses formatted screen output"), +#ifdef HAVE_CURSES + "Disable ncurses formatted screen output" +#else + opt_hidden +#endif + ), OPT_WITH_ARG("--url|-o", set_url, NULL, NULL, "URL for bitcoin JSON-RPC server"), @@ -1127,13 +1147,16 @@ static int requests_staged(void) return ret; } +#ifdef HAVE_CURSES WINDOW *mainwin, *statuswin, *logwin; +#endif double total_secs = 0.1; static char statusline[256]; static int devcursor, logstart, logcursor; struct cgpu_info gpus[MAX_GPUDEVICES]; /* Maximum number apparently possible */ struct cgpu_info *cpus; +#ifdef HAVE_CURSES static inline void unlock_curses(void) { mutex_unlock(&curses_lock); @@ -1154,6 +1177,7 @@ static bool curses_active_locked(void) unlock_curses(); return ret; } +#endif void tailsprintf(char *f, const char *fmt, ...) { @@ -1192,6 +1216,7 @@ static void text_print_status(int thr_id) } } +#ifdef HAVE_CURSES /* Must be called with curses mutex lock held and curses_active */ static void curses_print_status(void) { @@ -1274,6 +1299,7 @@ static void curses_print_devstatus(int thr_id) wclrtoeol(statuswin); } +#endif static void print_status(int thr_id) { @@ -1281,6 +1307,7 @@ static void print_status(int thr_id) text_print_status(thr_id); } +#ifdef HAVE_CURSES /* Check for window resize. Called with curses mutex locked */ static inline bool change_logwinsize(void) { @@ -1336,7 +1363,9 @@ void wlogprint(const char *f, ...) unlock_curses(); } } +#endif +#ifdef HAVE_CURSES void log_curses(int prio, const char *f, va_list ap) { bool high_prio; @@ -1366,6 +1395,7 @@ void clear_logwin(void) unlock_curses(); } } +#endif /* regenerate the full work->hash value and also return true if it's a block */ bool regeneratehash(const struct work *work) @@ -1700,6 +1730,7 @@ static void workio_cmd_free(struct workio_cmd *wc) free(wc); } +#ifdef HAVE_CURSES static void disable_curses(void) { if (curses_active_locked()) { @@ -1728,6 +1759,7 @@ static void disable_curses(void) unlock_curses(); } } +#endif static void print_summary(void); @@ -2259,6 +2291,7 @@ static bool stage_work(struct work *work) return true; } +#ifdef HAVE_CURSES int curses_int(const char *query) { int ret; @@ -2269,8 +2302,11 @@ int curses_int(const char *query) free(cvar); return ret; } +#endif +#ifdef HAVE_CURSES static bool input_pool(bool live); +#endif int active_pools(void) { @@ -2284,6 +2320,7 @@ int active_pools(void) return ret; } +#ifdef HAVE_CURSES static void display_pool_summary(struct pool *pool) { double efficiency = 0.0; @@ -2331,6 +2368,7 @@ static void remove_pool(struct pool *pool) pool->pool_no = total_pools; total_pools--; } +#endif void write_config(FILE *fcfg) { @@ -2481,6 +2519,7 @@ void write_config(FILE *fcfg) fputs("\n}", fcfg); } +#ifdef HAVE_CURSES static void display_pools(void) { struct pool *pool; @@ -2685,10 +2724,12 @@ retry: immedok(logwin, false); opt_loginput = false; } +#endif static void start_longpoll(void); static void stop_longpoll(void); +#ifdef HAVE_CURSES static void set_options(void) { int selected; @@ -2829,6 +2870,7 @@ static void *input_thread(void __maybe_unused *userdata) return NULL; } +#endif /* This thread should not be shut down unless a problem occurs */ static void *workio_thread(void *userdata) @@ -3709,6 +3751,7 @@ out: return NULL; } +__maybe_unused static void stop_longpoll(void) { struct thr_info *thr = &thr_info[longpoll_thr_id]; @@ -3795,6 +3838,7 @@ static void *watchdog_thread(void __maybe_unused *userdata) hashmeter(-1, &zero_tv, 0); +#ifdef HAVE_CURSES if (curses_active_locked()) { change_logwinsize(); curses_print_status(); @@ -3806,6 +3850,7 @@ static void *watchdog_thread(void __maybe_unused *userdata) wrefresh(logwin); unlock_curses(); } +#endif gettimeofday(&now, NULL); @@ -4010,7 +4055,9 @@ static void clean_up(void) #endif gettimeofday(&total_tv_end, NULL); +#ifdef HAVE_CURSES disable_curses(); +#endif if (!opt_realquiet && successful_connect) print_summary(); @@ -4037,6 +4084,7 @@ void quit(int status, const char *format, ...) exit(status); } +#ifdef HAVE_CURSES char *curses_input(const char *query) { char *input; @@ -4054,6 +4102,7 @@ char *curses_input(const char *query) noecho(); return input; } +#endif int add_pool_details(bool live, char *url, char *user, char *pass) { @@ -4089,6 +4138,7 @@ int add_pool_details(bool live, char *url, char *user, char *pass) return ADD_POOL_OK; } +#ifdef HAVE_CURSES static bool input_pool(bool live) { char *url = NULL, *user = NULL, *pass = NULL; @@ -4140,6 +4190,7 @@ out: } return ret; } +#endif #if defined(unix) static void fork_monitor() @@ -4209,6 +4260,7 @@ out: } #endif // defined(unix) +#ifdef HAVE_CURSES void enable_curses(void) { int x,y; @@ -4231,6 +4283,7 @@ void enable_curses(void) { curses_active = true; unlock_curses(); } +#endif /* TODO: fix need a dummy CPU device_api even if no support for CPU mining */ #ifndef WANT_CPUMINE @@ -4280,7 +4333,9 @@ int main (int argc, char *argv[]) mutex_init(&hash_lock); mutex_init(&qd_lock); +#ifdef HAVE_CURSES mutex_init(&curses_lock); +#endif mutex_init(&control_lock); rwlock_init(&blk_lock); rwlock_init(&netacc_lock); @@ -4362,8 +4417,10 @@ int main (int argc, char *argv[]) successful_connect = true; } +#ifdef HAVE_CURSES if (use_curses) enable_curses(); +#endif applog(LOG_WARNING, "Started %s", packagename); @@ -4467,14 +4524,18 @@ int main (int argc, char *argv[]) logstart += total_devices; logcursor = logstart + 1; +#ifdef HAVE_CURSES check_winsizes(); if (opt_realquiet) use_curses = false; +#endif if (!total_pools) { applog(LOG_WARNING, "Need to specify at least one pool server."); - if (!use_curses || (use_curses && !input_pool(false))) +#ifdef HAVE_CURSES + if (!use_curses || !input_pool(false)) +#endif quit(1, "Pool setup failed"); } @@ -4596,6 +4657,7 @@ int main (int argc, char *argv[]) applog(LOG_WARNING, "Pool: %d URL: %s User: %s Password: %s", i, pool->rpc_url, pool->rpc_user, pool->rpc_pass); } +#ifdef HAVE_CURSES if (use_curses) { halfdelay(150); applog(LOG_ERR, "Press any key to exit, or cgminer will try again in 15s."); @@ -4603,6 +4665,7 @@ int main (int argc, char *argv[]) quit(0, "No servers could be used! Exiting."); nocbreak(); } else +#endif quit(0, "No servers could be used! Exiting."); } } while (!pools_active); @@ -4707,6 +4770,7 @@ begin_bench: quit(1, "API thread create failed"); pthread_detach(thr->pth); +#ifdef HAVE_CURSES /* Create curses input thread for keyboard input. Create this last so * that we know all threads are created since this can call kill_work * to try and shut down ll previous threads. */ @@ -4715,6 +4779,7 @@ begin_bench: if (thr_info_create(thr, NULL, input_thread, thr)) quit(1, "input thread create failed"); pthread_detach(thr->pth); +#endif /* main loop - simply wait for workio thread to exit. This is not the * normal exit path and only occurs should the workio_thread die diff --git a/configure.ac b/configure.ac index f505383a..a6a97d84 100644 --- a/configure.ac +++ b/configure.ac @@ -207,12 +207,33 @@ if test "x$icarus" = xyes; then fi AM_CONDITIONAL([HAS_ICARUS], [test x$icarus = xyes]) -AC_SEARCH_LIBS(addstr, ncurses pdcurses, , - AC_MSG_ERROR([Could not find curses library - please install libncurses-dev or pdcurses-dev])) -AC_CHECK_LIB(ncurses, addstr, NCURSES_LIBS=-lncurses) -AC_CHECK_LIB(pdcurses, addstr, PDCURSES_LIBS=-lpdcurses) +curses="auto" +AC_ARG_WITH([curses], + [AC_HELP_STRING([--without-curses],[Compile support for curses TUI (default enabled)])], + [curses=$withval] + ) +if test "x$curses" = "xno"; then + cursesmsg='User specified --without-curses. TUI support DISABLED' +else + AC_SEARCH_LIBS(addstr, ncurses pdcurses, [ + curses=yes + cursesmsg="FOUND: ${ac_cv_search_addstr:2}" + AC_DEFINE([HAVE_CURSES], [1], [Defined to 1 if curses TUI support is wanted]) + ], [ + if test "x$curses" = "xyes"; then + AC_MSG_ERROR([Could not find curses library - please install libncurses-dev or pdcurses-dev (or configure --without-curses)]) + else + AC_MSG_WARN([Could not find curses library - if you want a TUI, install libncurses-dev or pdcurses-dev]) + curses=no + cursesmsg='NOT FOUND. TUI support DISABLED' + fi + ]) +fi + + +AM_CONDITIONAL([HAVE_CURSES], [test x$curses = xyes]) AM_CONDITIONAL([WANT_JANSSON], [test x$request_jansson = xtrue]) AM_CONDITIONAL([HAVE_WINDOWS], [test x$have_win32 = xtrue]) AM_CONDITIONAL([HAVE_x86_64], [test x$have_x86_64 = xtrue]) @@ -365,6 +386,8 @@ echo echo "Configuration Options Summary:" echo +echo " curses.TUI...........: $cursesmsg" + if test "x$opencl" != xno; then if test $found_opencl = 1; then echo " OpenCL...............: FOUND. GPU mining support enabled" diff --git a/device-gpu.c b/device-gpu.c index 70dea39f..1a3e35d9 100644 --- a/device-gpu.c +++ b/device-gpu.c @@ -11,7 +11,10 @@ #include "config.h" +#ifdef HAVE_CURSES #include +#endif + #include #include #include @@ -32,8 +35,10 @@ /* TODO: cleanup externals ********************/ +#ifdef HAVE_CURSES extern WINDOW *mainwin, *statuswin, *logwin; extern void enable_curses(void); +#endif extern int mining_threads; extern double total_secs; @@ -526,6 +531,9 @@ void pause_dynamic_threads(int gpu) struct device_api opencl_api; +#endif /* HAVE_OPENCL */ + +#if defined(HAVE_OPENCL) && defined(HAVE_CURSES) void manage_gpu(void) { struct thr_info *thr; @@ -1177,11 +1185,13 @@ static bool opencl_thread_prepare(struct thr_info *thr) applog(LOG_ERR, "Restarting the GPU from the menu will not fix this."); applog(LOG_ERR, "Try restarting cgminer."); failmessage = true; +#ifdef HAVE_CURSES if (use_curses) { buf = curses_input("Press enter to continue"); if (buf) free(buf); } +#endif } cgpu->deven = DEV_DISABLED; cgpu->status = LIFE_NOSTART; diff --git a/logging.c b/logging.c index a73db086..cf5e4030 100644 --- a/logging.c +++ b/logging.c @@ -18,9 +18,29 @@ bool opt_log_output = false; /* per default priorities higher than LOG_NOTICE are logged */ int opt_log_level = LOG_NOTICE; -void vapplog(int prio, const char *fmt, va_list ap) +static void my_log_curses(int prio, char *f, va_list ap) { +#ifdef HAVE_CURSES extern bool use_curses; + if (use_curses) + log_curses(prio, f, ap); + else +#endif + { + int len = strlen(f); + + strcpy(f + len - 1, " \n"); + +#ifdef HAVE_CURSES + log_curses(prio, f, ap); +#else + vprintf(f, ap); +#endif + } +} + +void vapplog(int prio, const char *fmt, va_list ap) +{ if (!opt_debug && prio == LOG_DEBUG) return; @@ -60,15 +80,7 @@ void vapplog(int prio, const char *fmt, va_list ap) fflush(stderr); } - if (use_curses) - log_curses(prio, f, ap); - else { - int len = strlen(f); - - strcpy(f + len - 1, " \n"); - - log_curses(prio, f, ap); - } + my_log_curses(prio, f, ap); } } @@ -90,7 +102,6 @@ void applog(int prio, const char *fmt, ...) */ static void __maybe_unused log_generic(int prio, const char *fmt, va_list ap) { - extern bool use_curses; #ifdef HAVE_SYSLOG_H if (use_syslog) { vsyslog(prio, fmt, ap); @@ -127,15 +138,7 @@ static void __maybe_unused log_generic(int prio, const char *fmt, va_list ap) fflush(stderr); } - if (use_curses) - log_curses(prio, f, ap); - else { - int len = strlen(f); - - strcpy(f + len - 1, " \n"); - - log_curses(prio, f, ap); - } + my_log_curses(prio, f, ap); } } /* we can not generalize variable argument list */ diff --git a/util.c b/util.c index 3dff4ee1..6a5dcd84 100644 --- a/util.c +++ b/util.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include From 84aa0d693b71fb77090a637fa36555f01ee82eb5 Mon Sep 17 00:00:00 2001 From: Kano Date: Tue, 13 Mar 2012 23:36:02 +1100 Subject: [PATCH 011/117] miner.php: ereg_replace is DEPRECATED so use preg_replace instead --- miner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/miner.php b/miner.php index 8f37dfcc..945f3aec 100644 --- a/miner.php +++ b/miner.php @@ -267,7 +267,7 @@ function details($cmd, $list) if ($item == 'STATUS') continue; - $sectionname = ereg_replace('[0-9]', '', $item); + $sectionname = preg_replace('/\d/', '', $item); if ($sectionname != $section) { From b6ae200dadff37f097bd0e5577ee630825cba4c9 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 13 Mar 2012 09:11:23 -0400 Subject: [PATCH 012/117] Ignore reduntant-with-build options --disable-gpu, --no-adl, and --no-restart --- cgminer.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/cgminer.c b/cgminer.c index c336f8b4..85a6f5c6 100644 --- a/cgminer.c +++ b/cgminer.c @@ -100,9 +100,9 @@ static const bool opt_time = true; #ifdef HAVE_OPENCL int opt_dynamic_interval = 7; +#endif bool opt_restart = true; static bool opt_nogpu; -#endif struct list_head scan_devices; int nDevs; @@ -663,11 +663,14 @@ static struct opt_table opt_config_table[] = { OPT_WITH_ARG("--device|-d", set_devices, NULL, NULL, "Select device to use, (Use repeat -d for multiple devices, default: all)"), -#ifdef HAVE_OPENCL OPT_WITHOUT_ARG("--disable-gpu|-G", opt_set_bool, &opt_nogpu, - "Disable GPU mining even if suitable devices exist"), +#ifdef HAVE_OPENCL + "Disable GPU mining even if suitable devices exist" +#else + opt_hidden #endif + ), #if defined(WANT_CPUMINE) && (defined(HAVE_OPENCL) || defined(USE_BITFORCE) || defined(USE_ICARUS)) OPT_WITHOUT_ARG("--enable-cpu|-C", opt_set_bool, &opt_usecpu, @@ -736,19 +739,25 @@ static struct opt_table opt_config_table[] = { OPT_WITHOUT_ARG("--net-delay", opt_set_bool, &opt_delaynet, "Impose small delays in networking to not overload slow routers"), -#ifdef HAVE_ADL OPT_WITHOUT_ARG("--no-adl", opt_set_bool, &opt_noadl, - "Disable the ATI display library used for monitoring and setting GPU parameters"), +#ifdef HAVE_ADL + "Disable the ATI display library used for monitoring and setting GPU parameters" +#else + opt_hidden #endif + ), OPT_WITHOUT_ARG("--no-longpoll", opt_set_invbool, &want_longpoll, "Disable X-Long-Polling support"), -#ifdef HAVE_OPENCL OPT_WITHOUT_ARG("--no-restart", opt_set_invbool, &opt_restart, - "Do not attempt to restart GPUs that hang"), +#ifdef HAVE_OPENCL + "Do not attempt to restart GPUs that hang" +#else + opt_hidden #endif + ), OPT_WITH_ARG("--pass|-p", set_pass, NULL, NULL, "Password for bitcoin JSON-RPC server"), From 03c94c02e92972cbcfa19d036247d970586148f3 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Tue, 13 Mar 2012 13:10:31 -0400 Subject: [PATCH 013/117] Bugfix: Skip enabling curses, if --real-quiet or listing devices --- cgminer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cgminer.c b/cgminer.c index c336f8b4..aa647750 100644 --- a/cgminer.c +++ b/cgminer.c @@ -4362,6 +4362,9 @@ int main (int argc, char *argv[]) successful_connect = true; } + if (opt_realquiet || devices_enabled == -1) + use_curses = false; + if (use_curses) enable_curses(); @@ -4469,9 +4472,6 @@ int main (int argc, char *argv[]) check_winsizes(); - if (opt_realquiet) - use_curses = false; - if (!total_pools) { applog(LOG_WARNING, "Need to specify at least one pool server."); if (!use_curses || (use_curses && !input_pool(false))) From 22ff7a406951f97af57cbca75d282c4bbf41a3e7 Mon Sep 17 00:00:00 2001 From: Kano Date: Wed, 14 Mar 2012 20:29:45 +1100 Subject: [PATCH 014/117] miner.php: option for readonly or check privileged access --- miner.php | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/miner.php b/miner.php index 945f3aec..6e501ba6 100644 --- a/miner.php +++ b/miner.php @@ -1,12 +1,27 @@ Mine @@ -177,55 +185,87 @@ function getparam($name, $both = false) # function fmt($section, $name, $value) { + $errorclass = ' class=err'; + $warnclass = ' class=warn'; $b = ' '; + $ret = $value; + $class = ''; + switch ($section.'.'.$name) { case 'GPU.Last Share Time': case 'PGA.Last Share Time': - return date('H:i:s', $value); + $ret = date('H:i:s', $value); break; case 'SUMMARY.Elapsed': $s = $value % 60; $value -= $s; $value /= 60; if ($value == 0) - { - return $s.'s'; - } + $ret = $s.'s'; else { $m = $value % 60; $value -= $m; $value /= 60; if ($value == 0) - { - return sprintf("%dm$b%02ds", $m, $s); - } + $ret = sprintf("%dm$b%02ds", $m, $s); else { $h = $value % 24; $value -= $h; $value /= 24; if ($value == 0) - return sprintf("%dh$b%02dm$b%02ds", $h, $m, $s); + $ret = sprintf("%dh$b%02dm$b%02ds", $h, $m, $s); else - return sprintf("%ddays$b%02dh$b%02dm$b%02ds", $value, $h, $m, $s); + $ret = sprintf("%ddays$b%02dh$b%02dm$b%02ds", $value, $h, $m, $s); } } break; + case 'NOTIFY.Last Well': + if ($value == '0') + { + $ret = 'Never'; + $class = $warnclass; + } + else + $ret = date('H:i:s', $value); + break; + case 'NOTIFY.Last Not Well': + if ($value == '0') + $ret = 'Never'; + else + { + $ret = date('H:i:s', $value); + $class = $errorclass; + } + break; + case 'NOTIFY.Reason Not Well': + if ($value != 'None') + $class = $errorclass; + break; case 'GPU.Utility': case 'PGA.Utility': case 'SUMMARY.Utility': - return $value.'/m'; + $ret = $value.'/m'; break; case 'GPU.Temperature': case 'PGA.Temperature': - return $value.'°C'; + $ret = $value.'°C'; break; } - return $value; + if ($section == 'NOTIFY') + { + $code = preg_split('/ /', $name); + if (count($code) > 1) + if ($code[0] == 'Thread' || $code[0] == 'Dev') + if ($value != '0') + $class = $errorclass; + } + + return array($ret, $class); } # global $poolcmd; @@ -302,7 +342,10 @@ function details($cmd, $list) echo ''; foreach ($values as $name => $value) - echo ''; + { + list($showvalue, $class) = fmt($section, $name, $value); + echo "$showvalue"; + } if ($cmd == 'pools' && $readonly === false) { @@ -444,7 +487,7 @@ function process($cmds, $rd, $ro) # function display() { - global $error, $readonly; + global $error, $readonly, $notify; $error = null; @@ -464,8 +507,12 @@ function display() $cmds = array( 'devs' => 'device list', 'summary' => 'summary information', - 'pools' => 'pool list', - 'config' => 'cgminer config'); + 'pools' => 'pool list'); + + if ($notify) + $cmds['notify'] = 'device status'; + + $cmds['config'] = 'cgminer config'; process($cmds, $rd, $ro); From 25f914a3345b274bbeb0942e0dee621c4385c053 Mon Sep 17 00:00:00 2001 From: Kano Date: Sat, 24 Mar 2012 23:20:48 +1100 Subject: [PATCH 028/117] api.c miner.php add a '*' to the front of all notify counters - simplifies future support of new counters --- api.c | 6 ++++-- miner.php | 10 ++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/api.c b/api.c index 8c86252c..8a95a626 100644 --- a/api.c +++ b/api.c @@ -1638,8 +1638,10 @@ void notifystatus(int device, struct cgpu_info *cgpu, bool isjson) break; } + // ALL counters (and only counters) must start the name with a '*' + // Simplifies future external support for adding new counters if (isjson) - sprintf(buf, "%s{\"NOTIFY\":%d,\"Name\":\"%s\",\"ID\":%d,\"Last Well\":%lu,\"Last Not Well\":%lu,\"Reason Not Well\":\"%s\",\"Thread Fail Init\":%d,\"Thread Zero Hash\":%d,\"Thread Fail Queue\":%d,\"Dev Sick Idle 60s\":%d,\"Dev Dead Idle 600s\":%d,\"Dev Nostart\":%d,\"Dev Over Heat\":%d,\"Dev Thermal Cutoff\":%d}" JSON_CLOSE, + sprintf(buf, "%s{\"NOTIFY\":%d,\"Name\":\"%s\",\"ID\":%d,\"Last Well\":%lu,\"Last Not Well\":%lu,\"Reason Not Well\":\"%s\",\"*Thread Fail Init\":%d,\"*Thread Zero Hash\":%d,\"*Thread Fail Queue\":%d,\"*Dev Sick Idle 60s\":%d,\"*Dev Dead Idle 600s\":%d,\"*Dev Nostart\":%d,\"*Dev Over Heat\":%d,\"*Dev Thermal Cutoff\":%d}" JSON_CLOSE, device > 0 ? "," : "", device, cgpu->api->name, cgpu->device_id, cgpu->device_last_well, cgpu->device_last_not_well, reason, cgpu->thread_fail_init_count, cgpu->thread_zero_hash_count, @@ -1647,7 +1649,7 @@ void notifystatus(int device, struct cgpu_info *cgpu, bool isjson) cgpu->dev_dead_idle_600_count, cgpu->dev_nostart_count, cgpu->dev_over_heat_count, cgpu->dev_thermal_cutoff_count); else - sprintf(buf, "NOTIFY=%d,Name=%s,ID=%d,Last Well=%lu,Last Not Well=%lu,Reason Not Well=%s,Thread Fail Init=%d,Thread Zero Hash=%d,Thread Fail Queue=%d,Dev Sick Idle 60s=%d,Dev Dead Idle 600s=%d,Dev Nostart=%d,Dev Over Heat=%d,Dev Thermal Cutoff=%d%c", + sprintf(buf, "NOTIFY=%d,Name=%s,ID=%d,Last Well=%lu,Last Not Well=%lu,Reason Not Well=%s,*Thread Fail Init=%d,*Thread Zero Hash=%d,*Thread Fail Queue=%d,*Dev Sick Idle 60s=%d,*Dev Dead Idle 600s=%d,*Dev Nostart=%d,*Dev Over Heat=%d,*Dev Thermal Cutoff=%d%c", device, cgpu->api->name, cgpu->device_id, cgpu->device_last_well, cgpu->device_last_not_well, reason, cgpu->thread_fail_init_count, cgpu->thread_zero_hash_count, diff --git a/miner.php b/miner.php index 14b249ee..5cdcc7e4 100644 --- a/miner.php +++ b/miner.php @@ -256,14 +256,8 @@ function fmt($section, $name, $value) break; } - if ($section == 'NOTIFY') - { - $code = preg_split('/ /', $name); - if (count($code) > 1) - if ($code[0] == 'Thread' || $code[0] == 'Dev') - if ($value != '0') - $class = $errorclass; - } + if ($section == 'NOTIFY' && substr($name, 0, 1) == '*' && $value != '0') + $class = $errorclass; return array($ret, $class); } From cba2d84622801256a0205ff5b6d46793661b9e5d Mon Sep 17 00:00:00 2001 From: Kano Date: Mon, 26 Mar 2012 22:00:00 +1100 Subject: [PATCH 029/117] Change email due to SPAM --- AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index c95f6a9f..b58f3588 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,4 +1,4 @@ Original CPU mining software: Jeff Garzik GPU mining and rewrite: Con Kolivas 15qSxP1SQcUX3o4nhkfdbgyoWEFMomJ4rZ BitFORCE FPGA mining and refactor: Luke Dashjr 1NbRmS6a4dniwHHoSS9v3tEYUpP1Z5VVdL -API+: Andrew Smith 1Jjk2LmktEQKnv8r2cZ9MvLiZwZ9gxabKm +API+: Andrew Smith 1Jjk2LmktEQKnv8r2cZ9MvLiZwZ9gxabKm From d8f14fd666af8357d52f3230dac1aeba75a1f824 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 26 Feb 2012 21:33:26 +1100 Subject: [PATCH 030/117] Cluster Vals7 for use on output. --- poclbm120222.cl | 82 +++++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index 2e163dea..03e9d5d6 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -1213,8 +1213,6 @@ Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[56]; Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; @@ -1223,66 +1221,78 @@ Vals[6]+=W[9]; Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[57]; +Vals[6]+=Vals[2]; W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); Vals[5]+=W[10]; -Vals[2]+=Vals[6]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); +Vals[5]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[5]+=ch(Vals[6],Vals[3],Vals[4]); Vals[5]+=K[58]; +Vals[5]+=Vals[1]; W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=W[11]; -Vals[1]+=Vals[5]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[4]+=ch(Vals[5],Vals[6],Vals[3]); Vals[4]+=K[59]; - -W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); -W[12]+=W[5]; -W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[7]+=W[12]; -Vals[0]+=Vals[4]; -Vals[7]+=Vals[3]; -Vals[7]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[7]+=ch(Vals[0],Vals[1],Vals[2]); -//Vals[7]+=K[60]; diffed from 0xA41F32E7 +Vals[4]+=Vals[0]; #define FOUND (0x80) #define NFLAG (0x7F) -#if defined(VECTORS4) - Vals[7] ^= 0x136032edU; +#if defined(VECTORS2) || defined(VECTORS4) + bool result = any((Vals[7]+ + Ma(Vals[2],Vals[0],Vals[1])+ + (rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22))+ + W[12]+ + (rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U))+ + W[5]+ + (rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U))+ + Vals[3]+ + (rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25))+ + ch(Vals[4],Vals[5],Vals[6])- + 0x136032edU) == 0); + if (result) { + // Repeating this seems crazy but it's faster than setting the + // Vals[7] variable on all non-matches. + Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); + Vals[7]+=W[12]; + Vals[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); + Vals[7]+=W[5]; + Vals[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); + Vals[7]+=Vals[3]; + Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); + Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); + Vals[7] ^= 0x136032edU; - bool result = Vals[7].x & Vals[7].y & Vals[7].z & Vals[7].w; - - if (!result) { if (!Vals[7].x) output[FOUND] = output[NFLAG & nonce.x] = nonce.x; if (!Vals[7].y) output[FOUND] = output[NFLAG & nonce.y] = nonce.y; +#if defined(VECTORS4) if (!Vals[7].z) output[FOUND] = output[NFLAG & nonce.z] = nonce.z; if (!Vals[7].w) output[FOUND] = output[NFLAG & nonce.w] = nonce.w; - } -#elif defined VECTORS2 - Vals[7] ^= 0x136032edU; - - bool result = Vals[7].x & Vals[7].y; - - if (!result) { - if (!Vals[7].x) - output[FOUND] = output[FOUND] = output[NFLAG & nonce.x] = nonce.x; - if (!Vals[7].y) - output[FOUND] = output[FOUND] = output[NFLAG & nonce.y] = nonce.y; +#endif } #else - if (Vals[7] == 0x136032edU) - output[FOUND] = output[NFLAG & nonce] = nonce; + if (!(Vals[7]+ + Ma(Vals[2],Vals[0],Vals[1])+ + (rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22))+ + W[12]+ + (rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U))+ + W[5]+ + (rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U))+ + Vals[3]+ + (rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25))+ + ch(Vals[4],Vals[5],Vals[6])- + 0x136032edU)) + output[FOUND] = output[NFLAG & nonce] = nonce; #endif } From 0f359a8e31500214c520855e718232171a3b0084 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 26 Feb 2012 23:07:27 +1100 Subject: [PATCH 031/117] Merge all additions before output. --- diablo120222.cl | 137 ++++++++++++++++++------------------------------ 1 file changed, 52 insertions(+), 85 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index effb6187..73d2edb7 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -1119,119 +1119,86 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( ZA[699] = ZA[667] + ZA[698]; ZA[697] = ZA[696] + 0x1e376c08U; - ZA[702] = ZR25(ZA[640]) + ZA[636]; ZA[700] = ZR15(ZA[692]) + ZA[699]; ZA[877] = ZA[858] + ZA[697]; ZA[874] = ZA[855] + ZA[873]; ZA[870] = ZA[867] + ZA[869]; ZA[878] = (ZCh(ZA[874], ZA[868], ZA[863]) + ZA[877]) + ZR26(ZA[874]); - ZA[875] = ZMa(ZA[865], ZA[860], ZA[870]) + ZR30(ZA[870]); - ZA[703] = ZA[671] + ZA[702]; - ZA[701] = ZA[700] + 0x2748774cU; - ZA[706] = ZR25(ZA[644]) + ZA[640]; - ZA[704] = ZR15(ZA[696]) + ZA[703]; - ZA[882] = ZA[863] + ZA[701]; + ZA[704] = ZR15(ZA[696]) + ZA[671] + ZR25(ZA[640]) + ZA[636]; ZA[879] = ZA[860] + ZA[878]; - ZA[876] = ZA[873] + ZA[875]; + ZA[876] = ZA[873] + ZMa(ZA[865], ZA[860], ZA[870]) + ZR30(ZA[870]); - ZA[883] = (ZCh(ZA[879], ZA[874], ZA[868]) + ZA[882]) + ZR26(ZA[879]); - ZA[880] = ZMa(ZA[870], ZA[865], ZA[876]) + ZR30(ZA[876]); - ZA[707] = ZA[679] + ZA[706]; - ZA[705] = ZA[704] + 0x34b0bcb5U; + ZA[883] = (ZCh(ZA[879], ZA[874], ZA[868]) + ZA[863] + ZA[700] + + 0x2748774cU) + ZR26(ZA[879]); - ZA[710] = ZR25(ZA[648]) + ZA[644]; - ZA[708] = ZR15(ZA[700]) + ZA[707]; - ZA[887] = ZA[868] + ZA[705]; + ZA[708] = ZR15(ZA[700]) + ZA[679] + ZR25(ZA[644]) + ZA[640]; ZA[884] = ZA[865] + ZA[883]; - ZA[881] = ZA[878] + ZA[880]; + ZA[881] = ZA[878] + ZMa(ZA[870], ZA[865], ZA[876]) + ZR30(ZA[876]); - ZA[888] = (ZCh(ZA[884], ZA[879], ZA[874]) + ZA[887]) + ZR26(ZA[884]); - ZA[885] = ZMa(ZA[876], ZA[870], ZA[881]) + ZR30(ZA[881]); - ZA[711] = ZA[684] + ZA[710]; - ZA[709] = ZA[708] + 0x391c0cb3U; + ZA[888] = (ZCh(ZA[884], ZA[879], ZA[874]) + ZA[868] + ZA[704] + + 0x34b0bcb5U) + ZR26(ZA[884]); - ZA[714] = ZR25(ZA[651]) + ZA[648]; - ZA[712] = ZR15(ZA[704]) + ZA[711]; - ZA[892] = ZA[874] + ZA[709]; + ZA[712] = ZR15(ZA[704]) + ZA[684] + ZR25(ZA[648]) + ZA[644]; ZA[889] = ZA[870] + ZA[888]; - ZA[886] = ZA[883] + ZA[885]; + ZA[886] = ZA[883] + ZMa(ZA[876], ZA[870], ZA[881]) + ZR30(ZA[881]); - ZA[893] = (ZCh(ZA[889], ZA[884], ZA[879]) + ZA[892]) + ZR26(ZA[889]); - ZA[890] = ZMa(ZA[881], ZA[876], ZA[886]) + ZR30(ZA[886]); - ZA[715] = ZA[688] + ZA[714]; - ZA[713] = ZA[712] + 0x4ed8aa4aU; + ZA[893] = (ZCh(ZA[889], ZA[884], ZA[879]) + ZA[874] + ZA[708] + + 0x391c0cb3U) + ZR26(ZA[889]); - ZA[718] = ZR25(ZA[655]) + ZA[651]; - ZA[716] = ZR15(ZA[708]) + ZA[715]; - ZA[897] = ZA[879] + ZA[713]; + ZA[716] = ZR15(ZA[708]) + ZA[688] + ZR25(ZA[651]) + ZA[648]; ZA[894] = ZA[876] + ZA[893]; - ZA[891] = ZA[888] + ZA[890]; + ZA[891] = ZA[888] + ZMa(ZA[881], ZA[876], ZA[886]) + ZR30(ZA[886]); - ZA[898] = (ZCh(ZA[894], ZA[889], ZA[884]) + ZA[897]) + ZR26(ZA[894]); - ZA[895] = ZMa(ZA[886], ZA[881], ZA[891]) + ZR30(ZA[891]); - ZA[719] = ZA[692] + ZA[718]; - ZA[717] = ZA[716] + 0x5b9cca4fU; + ZA[898] = (ZCh(ZA[894], ZA[889], ZA[884]) + ZA[879] + ZA[712] + + 0x4ed8aa4aU) + ZR26(ZA[894]); - ZA[722] = ZR25(ZA[659]) + ZA[655]; - ZA[720] = ZR15(ZA[712]) + ZA[719]; - ZA[902] = ZA[884] + ZA[717]; + ZA[720] = ZR15(ZA[712]) + ZA[692] + ZR25(ZA[655]) + ZA[651]; ZA[899] = ZA[881] + ZA[898]; - ZA[896] = ZA[893] + ZA[895]; + ZA[896] = ZA[893] + ZMa(ZA[886], ZA[881], ZA[891]) + ZR30(ZA[891]); - ZA[903] = (ZCh(ZA[899], ZA[894], ZA[889]) + ZA[902]) + ZR26(ZA[899]); - ZA[900] = ZMa(ZA[891], ZA[886], ZA[896]) + ZR30(ZA[896]); - ZA[723] = ZA[696] + ZA[722]; - ZA[721] = ZA[720] + 0x682e6ff3U; + ZA[903] = (ZCh(ZA[899], ZA[894], ZA[889]) + ZA[884] + ZA[716] + + 0x5b9cca4fU) + ZR26(ZA[899]); - ZA[672] = ZR25(ZA[663]) + ZA[659]; - ZA[724] = ZR15(ZA[716]) + ZA[723]; - ZA[907] = ZA[889] + ZA[721]; + ZA[724] = ZR15(ZA[716]) + ZA[696] + ZR25(ZA[659]) + ZA[655]; ZA[904] = ZA[886] + ZA[903]; - ZA[901] = ZA[898] + ZA[900]; + ZA[901] = ZA[898] + ZMa(ZA[891], ZA[886], ZA[896]) + ZR30(ZA[896]); - ZA[908] = (ZCh(ZA[904], ZA[899], ZA[894]) + ZA[907]) + ZR26(ZA[904]); - ZA[905] = ZMa(ZA[896], ZA[891], ZA[901]) + ZR30(ZA[901]); - ZA[673] = ZR25(ZA[667]) + ZA[663]; - ZA[726] = ZA[700] + ZA[672]; - ZA[725] = ZA[724] + 0x748f82eeU; + ZA[908] = (ZCh(ZA[904], ZA[899], ZA[894]) + ZA[889] + ZA[720] + + 0x682e6ff3U) + ZR26(ZA[904]); - ZA[727] = ZR15(ZA[720]) + ZA[726]; - ZA[912] = ZA[894] + ZA[725]; + ZA[727] = ZR15(ZA[720]) + ZA[700] + ZR25(ZA[663]) + ZA[659]; ZA[909] = ZA[891] + ZA[908]; - ZA[906] = ZA[903] + ZA[905]; - ZA[675] = ZA[667] + 0x8cc70208U; - ZA[729] = ZA[704] + ZA[673]; - - ZA[913] = (ZCh(ZA[909], ZA[904], ZA[899]) + ZA[912]) + ZR26(ZA[909]); - ZA[910] = ZMa(ZA[901], ZA[896], ZA[906]) + ZR30(ZA[906]); - ZA[674] = ZR25(ZA[671]) + ZA[675]; - ZA[730] = ZR15(ZA[724]) + ZA[729]; - ZA[728] = ZA[727] + 0x78a5636fU; - - ZA[681] = ZR25(ZA[679]) + ZA[671]; - ZA[917] = ZA[899] + ZA[901] + ZA[728]; - ZA[914] = ZA[896] + ZA[913]; - ZA[911] = ZA[908] + ZA[910]; - ZA[732] = ZA[708] + ZA[674]; - ZA[731] = ZA[730] + 0x84c87814U; - - ZA[918] = (ZCh(ZA[914], ZA[909], ZA[904]) + ZA[917]) + ZR26(ZA[914]); - ZA[915] = ZMa(ZA[906], ZA[901], ZA[911]) + ZR30(ZA[911]); - ZA[733] = ZR15(ZA[727]) + ZA[732]; - ZA[919] = ZA[906] + ZA[904] + ZA[731]; - ZA[734] = ZA[712] + ZA[681]; + ZA[906] = ZA[903] + ZMa(ZA[896], ZA[891], ZA[901]) + ZR30(ZA[901]); - ZA[920] = (ZCh(ZA[918], ZA[914], ZA[909]) + ZA[919]) + ZR26(ZA[918]); - ZA[735] = ZR15(ZA[730]) + ZA[734]; - ZA[921] = ZA[911] + ZA[909] + ZA[733]; - ZA[916] = ZA[913] + ZA[915]; + 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[922] = (ZCh(ZA[920], ZA[918], ZA[914]) + ZA[921]) + ZR26(ZA[920]); - ZA[923] = ZA[916] + ZA[914] + ZA[735]; - - ZA[924] = (ZCh(ZA[922], ZA[920], ZA[918]) + ZA[923]) + ZR26(ZA[922]); + 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) From 40f5aac9b117b7042304b673f6fa75f379707404 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 27 Feb 2012 08:57:20 +1100 Subject: [PATCH 032/117] Machine optimise by removing one-use variables. --- diablo120222.cl | 1583 ++++++++++++++--------------------------------- 1 file changed, 448 insertions(+), 1135 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 73d2edb7..8c9a8f40 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -64,1141 +64,454 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( 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[27] = ZMa(f1, g1, ZA[26]) + ZR30(ZA[26]); - ZA[17] = ZA[16] + h1; - - ZA[19] = (ZCh(ZA[17], ZA[15], b1) + c1_plus_k5) + ZR26(ZA[17]); - ZA[28] = ZA[27] + ZA[16]; - - ZA[548] = ZMa(ZA[26], f1, ZA[28]) + ZR30(ZA[28]); - ZA[20] = ZA[19] + g1; - - ZA[22] = (ZCh(ZA[20], ZA[17], ZA[15]) + b1_plus_k6) + ZR26(ZA[20]); - ZA[29] = ZA[548] + ZA[19]; - - ZA[549] = ZMa(ZA[28], ZA[26], ZA[29]) + ZR30(ZA[29]); - ZA[23] = ZA[22] + f1; - - ZA[24] = ZCh(ZA[23], ZA[20], ZA[17]) + ZR26(ZA[23]); - ZA[180] = Znonce + PreVal4_state0_k7; - ZA[30] = ZA[549] + ZA[22]; - - ZA[31] = ZMa(ZA[29], ZA[28], ZA[30]) + ZR30(ZA[30]); - ZA[181] = ZA[180] + ZA[24]; - - ZA[182] = ZA[181] + ZA[26]; - ZA[183] = ZA[181] + ZA[31]; - ZA[18] = ZA[17] + 0xd807aa98U; - - ZA[186] = (ZCh(ZA[182], ZA[23], ZA[20]) + ZA[18]) + ZR26(ZA[182]); - ZA[184] = ZMa(ZA[30], ZA[29], ZA[183]) + ZR30(ZA[183]); - - ZA[187] = ZA[186] + ZA[28]; - ZA[188] = ZA[186] + ZA[184]; - ZA[21] = ZA[20] + 0x12835b01U; - - ZA[191] = (ZCh(ZA[187], ZA[182], ZA[23]) + ZA[21]) + ZR26(ZA[187]); - ZA[189] = ZMa(ZA[183], ZA[30], ZA[188]) + ZR30(ZA[188]); - - ZA[192] = ZA[191] + ZA[29]; - ZA[193] = ZA[191] + ZA[189]; - ZA[25] = ZA[23] + 0x243185beU; - - ZA[196] = (ZCh(ZA[192], ZA[187], ZA[182]) + ZA[25]) + ZR26(ZA[192]); - ZA[194] = ZMa(ZA[188], ZA[183], ZA[193]) + ZR30(ZA[193]); - - ZA[197] = ZA[196] + ZA[30]; - ZA[198] = ZA[196] + ZA[194]; - ZA[185] = ZA[182] + 0x550c7dc3U; - - ZA[201] = (ZCh(ZA[197], ZA[192], ZA[187]) + ZA[185]) + ZR26(ZA[197]); - ZA[199] = ZMa(ZA[193], ZA[188], ZA[198]) + ZR30(ZA[198]); - - ZA[202] = ZA[201] + ZA[183]; - ZA[203] = ZA[201] + ZA[199]; - ZA[190] = ZA[187] + 0x72be5d74U; - - ZA[206] = (ZCh(ZA[202], ZA[197], ZA[192]) + ZA[190]) + ZR26(ZA[202]); - ZA[204] = ZMa(ZA[198], ZA[193], ZA[203]) + ZR30(ZA[203]); - - ZA[207] = ZA[206] + ZA[188]; - ZA[208] = ZA[206] + ZA[204]; - ZA[195] = ZA[192] + 0x80deb1feU; - - ZA[211] = (ZCh(ZA[207], ZA[202], ZA[197]) + ZA[195]) + ZR26(ZA[207]); - ZA[209] = ZMa(ZA[203], ZA[198], ZA[208]) + ZR30(ZA[208]); - - ZA[212] = ZA[193] + ZA[211]; - ZA[213] = ZA[211] + ZA[209]; - ZA[200] = ZA[197] + 0x9bdc06a7U; - - ZA[216] = (ZCh(ZA[212], ZA[207], ZA[202]) + ZA[200]) + ZR26(ZA[212]); - ZA[214] = ZMa(ZA[208], ZA[203], ZA[213]) + ZR30(ZA[213]); - - ZA[217] = ZA[198] + ZA[216]; - ZA[218] = ZA[216] + ZA[214]; - ZA[205] = ZA[202] + 0xc19bf3f4U; - - ZA[220] = (ZCh(ZA[217], ZA[212], ZA[207]) + ZA[205]) + ZR26(ZA[217]); - ZA[219] = ZMa(ZA[213], ZA[208], ZA[218]) + ZR30(ZA[218]); - - ZA[222] = ZA[203] + ZA[220]; - ZA[223] = ZA[220] + ZA[219]; - ZA[210] = ZA[207] + W16_plus_K16; - - ZA[226] = (ZCh(ZA[222], ZA[217], ZA[212]) + ZA[210]) + ZR26(ZA[222]); - ZA[225] = ZMa(ZA[218], ZA[213], ZA[223]) + ZR30(ZA[223]); - - ZA[0] = ZR25(Znonce) + W18; - ZA[228] = ZA[226] + ZA[225]; - ZA[227] = ZA[208] + ZA[226]; - ZA[215] = ZA[212] + W17_plus_K17; - - ZA[231] = (ZCh(ZA[227], ZA[222], ZA[217]) + ZA[215]) + ZR26(ZA[227]); - ZA[229] = ZMa(ZA[223], ZA[218], ZA[228]) + ZR30(ZA[228]); - ZA[1] = ZA[0] + 0x0fc19dc6U; - - ZA[232] = ZA[213] + ZA[231]; - ZA[233] = ZA[231] + ZA[229]; - ZA[221] = ZA[217] + ZA[1]; - ZA[32] = Znonce + W19; - - ZA[236] = (ZCh(ZA[232], ZA[227], ZA[222]) + ZA[221]) + ZR26(ZA[232]); - ZA[234] = ZMa(ZA[228], ZA[223], ZA[233]) + ZR30(ZA[233]); - ZA[33] = ZA[32] + 0x240ca1ccU; - - ZA[3] = ZR15(ZA[0]) + 0x80000000U; - ZA[238] = ZA[236] + ZA[234]; - ZA[237] = ZA[218] + ZA[236]; - ZA[224] = ZA[222] + ZA[33]; - - ZA[241] = (ZCh(ZA[237], ZA[232], ZA[227]) + ZA[224]) + ZR26(ZA[237]); - ZA[239] = ZMa(ZA[233], ZA[228], ZA[238]) + ZR30(ZA[238]); - ZA[4] = ZA[3] + 0x2de92c6fU; - - ZA[35] = ZR15(ZA[32]); - ZA[243] = ZA[241] + ZA[239]; - ZA[242] = ZA[223] + ZA[241]; - ZA[230] = ZA[227] + ZA[4]; - - ZA[246] = (ZCh(ZA[242], ZA[237], ZA[232]) + ZA[230]) + ZR26(ZA[242]); - ZA[244] = ZMa(ZA[238], ZA[233], ZA[243]) + ZR30(ZA[243]); - ZA[36] = ZA[35] + 0x4a7484aaU; - - ZA[7] = ZR15(ZA[3]) + 0x00000280U; - ZA[248] = ZA[246] + ZA[244]; - ZA[247] = ZA[228] + ZA[246]; - ZA[235] = ZA[232] + ZA[36]; - - ZA[251] = (ZCh(ZA[247], ZA[242], ZA[237]) + ZA[235]) + ZR26(ZA[247]); - ZA[249] = ZMa(ZA[243], ZA[238], ZA[248]) + ZR30(ZA[248]); - ZA[8] = ZA[7] + 0x5cb0a9dcU; - - ZA[38] = ZR15(ZA[35]) + W16; - ZA[253] = ZA[251] + ZA[249]; - ZA[252] = ZA[233] + ZA[251]; - ZA[240] = ZA[237] + ZA[8]; - - ZA[256] = (ZCh(ZA[252], ZA[247], ZA[242]) + ZA[240]) + ZR26(ZA[252]); - ZA[254] = ZMa(ZA[248], ZA[243], ZA[253]) + ZR30(ZA[253]); - ZA[40] = ZA[38] + 0x76f988daU; - - ZA[10] = ZR15(ZA[7]) + W17; - ZA[258] = ZA[256] + ZA[254]; - ZA[257] = ZA[238] + ZA[256]; - ZA[245] = ZA[242] + ZA[40]; - - ZA[261] = (ZCh(ZA[257], ZA[252], ZA[247]) + ZA[245]) + ZR26(ZA[257]); - ZA[259] = ZMa(ZA[253], ZA[248], ZA[258]) + ZR30(ZA[258]); - ZA[13] = ZA[10] + 0x983e5152U; - - ZA[43] = ZR15(ZA[38]) + ZA[0]; - ZA[263] = ZA[261] + ZA[259]; - ZA[262] = ZA[243] + ZA[261]; - ZA[250] = ZA[247] + ZA[13]; - - ZA[266] = (ZCh(ZA[262], ZA[257], ZA[252]) + ZA[250]) + ZR26(ZA[262]); - ZA[264] = ZMa(ZA[258], ZA[253], ZA[263]) + ZR30(ZA[263]); - ZA[11] = ZR15(ZA[10]); - ZA[45] = ZA[43] + 0xa831c66dU; - - ZA[52] = ZA[11] + ZA[32]; - ZA[267] = ZA[248] + ZA[266]; - ZA[255] = ZA[252] + ZA[45]; - ZA[268] = ZA[266] + ZA[264]; - - ZA[271] = (ZCh(ZA[267], ZA[262], ZA[257]) + ZA[255]) + ZR26(ZA[267]); - ZA[269] = ZMa(ZA[263], ZA[258], ZA[268]) + ZR30(ZA[268]); - ZA[54] = ZA[52] + 0xb00327c8U; - - ZA[48] = ZR15(ZA[43]) + ZA[3]; - ZA[273] = ZA[271] + ZA[269]; - ZA[272] = ZA[253] + ZA[271]; - ZA[260] = ZA[257] + ZA[54]; - - ZA[276] = (ZCh(ZA[272], ZA[267], ZA[262]) + ZA[260]) + ZR26(ZA[272]); - ZA[274] = ZMa(ZA[268], ZA[263], ZA[273]) + ZR30(ZA[273]); - ZA[49] = ZA[48] + 0xbf597fc7U; - - ZA[61] = ZR15(ZA[52]) + ZA[35]; - ZA[278] = ZA[276] + ZA[274]; - ZA[277] = ZA[258] + ZA[276]; - ZA[265] = ZA[262] + ZA[49]; - - ZA[281] = (ZCh(ZA[277], ZA[272], ZA[267]) + ZA[265]) + ZR26(ZA[277]); - ZA[279] = ZMa(ZA[273], ZA[268], ZA[278]) + ZR30(ZA[278]); - ZA[62] = ZA[61] + 0xc6e00bf3U; - - ZA[53] = ZR15(ZA[48]) + ZA[7]; - ZA[283] = ZA[281] + ZA[279]; - ZA[282] = ZA[263] + ZA[281]; - ZA[270] = ZA[267] + ZA[62]; - - ZA[286] = (ZCh(ZA[282], ZA[277], ZA[272]) + ZA[270]) + ZR26(ZA[282]); - ZA[284] = ZMa(ZA[278], ZA[273], ZA[283]) + ZR30(ZA[283]); - ZA[39] = ZA[38] + 0x00A00055U; - ZA[55] = ZA[53] + 0xd5a79147U; - - ZA[66] = ZR15(ZA[61]) + ZA[39]; - ZA[288] = ZA[286] + ZA[284]; - ZA[287] = ZA[268] + ZA[286]; - ZA[275] = ZA[272] + ZA[55]; - - ZA[291] = (ZCh(ZA[287], ZA[282], ZA[277]) + ZA[275]) + ZR26(ZA[287]); - ZA[289] = ZMa(ZA[283], ZA[278], ZA[288]) + ZR30(ZA[288]); - ZA[12] = ZA[10] + W31; - ZA[68] = ZA[66] + 0x06ca6351U; - - ZA[67] = ZR15(ZA[53]) + ZA[12]; - ZA[293] = ZA[291] + ZA[289]; - ZA[292] = ZA[273] + ZA[291]; - ZA[280] = ZA[277] + ZA[68]; - - ZA[296] = (ZCh(ZA[292], ZA[287], ZA[282]) + ZA[280]) + ZR26(ZA[292]); - ZA[294] = ZMa(ZA[288], ZA[283], ZA[293]) + ZR30(ZA[293]); - ZA[2] = ZR25(ZA[0]); - ZA[69] = ZA[67] + 0x14292967U; - ZA[44] = ZA[43] + W32; - - ZA[75] = ZR15(ZA[66]) + ZA[44]; - ZA[298] = ZA[296] + ZA[294]; - ZA[297] = ZA[278] + ZA[296]; - ZA[285] = ZA[282] + ZA[69]; - ZA[5] = ZA[2] + W17; - - ZA[301] = (ZCh(ZA[297], ZA[292], ZA[287]) + ZA[285]) + ZR26(ZA[297]); - ZA[299] = ZMa(ZA[293], ZA[288], ZA[298]) + ZR30(ZA[298]); - ZA[56] = ZA[52] + ZA[5]; - ZA[76] = ZA[75] + 0x27b70a85U; - - ZA[34] = ZR25(ZA[32]) + ZA[0]; - ZA[70] = ZR15(ZA[67]) + ZA[56]; - ZA[302] = ZA[283] + ZA[301]; - ZA[303] = ZA[301] + ZA[299]; - ZA[290] = ZA[287] + ZA[76]; - - ZA[306] = (ZCh(ZA[302], ZA[297], ZA[292]) + ZA[290]) + ZR26(ZA[302]); - ZA[304] = ZMa(ZA[298], ZA[293], ZA[303]) + ZR30(ZA[303]); - ZA[6] = ZR25(ZA[3]); - ZA[77] = ZA[70] + 0x2e1b2138U; - ZA[50] = ZA[34] + ZA[48]; - - ZA[78] = ZR15(ZA[75]) + ZA[50]; - ZA[308] = ZA[306] + ZA[304]; - ZA[307] = ZA[288] + ZA[306]; - ZA[295] = ZA[292] + ZA[77]; - ZA[41] = ZA[32] + ZA[6]; - - ZA[311] = (ZCh(ZA[307], ZA[302], ZA[297]) + ZA[295]) + ZR26(ZA[307]); - ZA[309] = ZMa(ZA[303], ZA[298], ZA[308]) + ZR30(ZA[308]); - ZA[63] = ZA[41] + ZA[61]; - ZA[85] = ZA[78] + 0x4d2c6dfcU; - - ZA[37] = ZR25(ZA[35]) + ZA[3]; - ZA[79] = ZR15(ZA[70]) + ZA[63]; - ZA[312] = ZA[293] + ZA[311]; - ZA[313] = ZA[311] + ZA[309]; - ZA[300] = ZA[297] + ZA[85]; - - ZA[316] = (ZCh(ZA[312], ZA[307], ZA[302]) + ZA[300]) + ZR26(ZA[312]); - ZA[314] = ZMa(ZA[308], ZA[303], ZA[313]) + ZR30(ZA[313]); - ZA[9] = ZR25(ZA[7]); - ZA[86] = ZA[79] + 0x53380d13U; - ZA[57] = ZA[37] + ZA[53]; - - ZA[87] = ZR15(ZA[78]) + ZA[57]; - ZA[318] = ZA[316] + ZA[314]; - ZA[317] = ZA[298] + ZA[316]; - ZA[305] = ZA[302] + ZA[86]; - ZA[46] = ZA[35] + ZA[9]; - - ZA[321] = (ZCh(ZA[317], ZA[312], ZA[307]) + ZA[305]) + ZR26(ZA[317]); - ZA[319] = ZMa(ZA[313], ZA[308], ZA[318]) + ZR30(ZA[318]); - ZA[71] = ZA[46] + ZA[66]; - ZA[92] = ZA[87] + 0x650a7354U; - - ZA[42] = ZR25(ZA[38]) + ZA[7]; - ZA[88] = ZR15(ZA[79]) + ZA[71]; - ZA[322] = ZA[303] + ZA[321]; - ZA[323] = ZA[321] + ZA[319]; - ZA[310] = ZA[307] + ZA[92]; - - ZA[326] = (ZCh(ZA[322], ZA[317], ZA[312]) + ZA[310]) + ZR26(ZA[322]); - ZA[324] = ZMa(ZA[318], ZA[313], ZA[323]) + ZR30(ZA[323]); - ZA[14] = ZR25(ZA[10]); - ZA[93] = ZA[88] + 0x766a0abbU; - ZA[72] = ZA[42] + ZA[67]; - - ZA[94] = ZR15(ZA[87]) + ZA[72]; - ZA[328] = ZA[326] + ZA[324]; - ZA[327] = ZA[308] + ZA[326]; - ZA[315] = ZA[312] + ZA[93]; - ZA[51] = ZA[38] + ZA[14]; - - ZA[331] = (ZCh(ZA[327], ZA[322], ZA[317]) + ZA[315]) + ZR26(ZA[327]); - ZA[329] = ZMa(ZA[323], ZA[318], ZA[328]) + ZR30(ZA[328]); - ZA[80] = ZA[51] + ZA[75]; - ZA[100] = ZA[94] + 0x81c2c92eU; - - ZA[47] = ZR25(ZA[43]) + ZA[10]; - ZA[95] = ZR15(ZA[88]) + ZA[80]; - ZA[332] = ZA[313] + ZA[331]; - ZA[333] = ZA[331] + ZA[329]; - ZA[320] = ZA[317] + ZA[100]; - - ZA[336] = (ZCh(ZA[332], ZA[327], ZA[322]) + ZA[320]) + ZR26(ZA[332]); - ZA[334] = ZMa(ZA[328], ZA[323], ZA[333]) + ZR30(ZA[333]); - ZA[81] = ZA[47] + ZA[70]; - ZA[101] = ZA[95] + 0x92722c85U; - - ZA[58] = ZR25(ZA[52]) + ZA[43]; - ZA[102] = ZR15(ZA[94]) + ZA[81]; - ZA[337] = ZA[318] + ZA[336]; - ZA[338] = ZA[336] + ZA[334]; - ZA[325] = ZA[322] + ZA[101]; - - ZA[341] = (ZCh(ZA[337], ZA[332], ZA[327]) + ZA[325]) + ZR26(ZA[337]); - ZA[339] = ZMa(ZA[333], ZA[328], ZA[338]) + ZR30(ZA[338]); - ZA[89] = ZA[58] + ZA[78]; - ZA[108] = ZA[102] + 0xa2bfe8a1U; - - ZA[59] = ZR25(ZA[48]) + ZA[52]; - ZA[103] = ZR15(ZA[95]) + ZA[89]; - ZA[342] = ZA[323] + ZA[341]; - ZA[343] = ZA[341] + ZA[339]; - ZA[330] = ZA[327] + ZA[108]; - - ZA[346] = (ZCh(ZA[342], ZA[337], ZA[332]) + ZA[330]) + ZR26(ZA[342]); - ZA[344] = ZMa(ZA[338], ZA[333], ZA[343]) + ZR30(ZA[343]); - ZA[90] = ZA[59] + ZA[79]; - ZA[109] = ZA[103] + 0xa81a664bU; - - ZA[64] = ZR25(ZA[61]) + ZA[48]; - ZA[110] = ZR15(ZA[102]) + ZA[90]; - ZA[347] = ZA[328] + ZA[346]; - ZA[348] = ZA[346] + ZA[344]; - ZA[335] = ZA[332] + ZA[109]; - - ZA[351] = (ZCh(ZA[347], ZA[342], ZA[337]) + ZA[335]) + ZR26(ZA[347]); - ZA[349] = ZMa(ZA[343], ZA[338], ZA[348]) + ZR30(ZA[348]); - ZA[60] = ZR25(ZA[53]); - ZA[116] = ZA[110] + 0xc24b8b70U; - ZA[96] = ZA[87] + ZA[64]; - - ZA[111] = ZR15(ZA[103]) + ZA[96]; - ZA[353] = ZA[351] + ZA[349]; - ZA[352] = ZA[333] + ZA[351]; - ZA[340] = ZA[337] + ZA[116]; - ZA[65] = ZA[60] + ZA[61]; - - ZA[356] = (ZCh(ZA[352], ZA[347], ZA[342]) + ZA[340]) + ZR26(ZA[352]); - ZA[354] = ZMa(ZA[348], ZA[343], ZA[353]) + ZR30(ZA[353]); - ZA[97] = ZA[88] + ZA[65]; - ZA[117] = ZA[111] + 0xc76c51a3U; - - ZA[73] = ZR25(ZA[66]) + ZA[53]; - ZA[118] = ZR15(ZA[110]) + ZA[97]; - ZA[357] = ZA[338] + ZA[356]; - ZA[358] = ZA[356] + ZA[354]; - ZA[345] = ZA[342] + ZA[117]; - - ZA[361] = (ZCh(ZA[357], ZA[352], ZA[347]) + ZA[345]) + ZR26(ZA[357]); - ZA[359] = ZMa(ZA[353], ZA[348], ZA[358]) + ZR30(ZA[358]); - ZA[104] = ZA[73] + ZA[94]; - ZA[124] = ZA[118] + 0xd192e819U; - - ZA[74] = ZR25(ZA[67]) + ZA[66]; - ZA[119] = ZR15(ZA[111]) + ZA[104]; - ZA[362] = ZA[343] + ZA[361]; - ZA[363] = ZA[361] + ZA[359]; - ZA[350] = ZA[347] + ZA[124]; - - ZA[366] = (ZCh(ZA[362], ZA[357], ZA[352]) + ZA[350]) + ZR26(ZA[362]); - ZA[364] = ZMa(ZA[358], ZA[353], ZA[363]) + ZR30(ZA[363]); - ZA[105] = ZA[74] + ZA[95]; - ZA[125] = ZA[119] + 0xd6990624U; - - ZA[82] = ZR25(ZA[75]) + ZA[67]; - ZA[126] = ZR15(ZA[118]) + ZA[105]; - ZA[367] = ZA[348] + ZA[366]; - ZA[368] = ZA[366] + ZA[364]; - ZA[355] = ZA[352] + ZA[125]; - - ZA[371] = (ZCh(ZA[367], ZA[362], ZA[357]) + ZA[355]) + ZR26(ZA[367]); - ZA[369] = ZMa(ZA[363], ZA[358], ZA[368]) + ZR30(ZA[368]); - ZA[112] = ZA[102] + ZA[82]; - ZA[132] = ZA[126] + 0xf40e3585U; - - ZA[83] = ZR25(ZA[70]) + ZA[75]; - ZA[127] = ZR15(ZA[119]) + ZA[112]; - ZA[372] = ZA[353] + ZA[371]; - ZA[373] = ZA[371] + ZA[369]; - ZA[360] = ZA[357] + ZA[132]; - - ZA[376] = (ZCh(ZA[372], ZA[367], ZA[362]) + ZA[360]) + ZR26(ZA[372]); - ZA[374] = ZMa(ZA[368], ZA[363], ZA[373]) + ZR30(ZA[373]); - ZA[113] = ZA[103] + ZA[83]; - ZA[133] = ZA[127] + 0x106aa070U; - - ZA[84] = ZR25(ZA[78]) + ZA[70]; - ZA[134] = ZR15(ZA[126]) + ZA[113]; - ZA[377] = ZA[358] + ZA[376]; - ZA[378] = ZA[376] + ZA[374]; - ZA[365] = ZA[362] + ZA[133]; - - ZA[381] = (ZCh(ZA[377], ZA[372], ZA[367]) + ZA[365]) + ZR26(ZA[377]); - ZA[379] = ZMa(ZA[373], ZA[368], ZA[378]) + ZR30(ZA[378]); - ZA[120] = ZA[110] + ZA[84]; - ZA[140] = ZA[134] + 0x19a4c116U; - - ZA[91] = ZR25(ZA[79]) + ZA[78]; - ZA[135] = ZR15(ZA[127]) + ZA[120]; - ZA[382] = ZA[363] + ZA[381]; - ZA[383] = ZA[381] + ZA[379]; - ZA[370] = ZA[367] + ZA[140]; - - ZA[386] = (ZCh(ZA[382], ZA[377], ZA[372]) + ZA[370]) + ZR26(ZA[382]); - ZA[384] = ZMa(ZA[378], ZA[373], ZA[383]) + ZR30(ZA[383]); - ZA[121] = ZA[111] + ZA[91]; - ZA[141] = ZA[135] + 0x1e376c08U; - - ZA[98] = ZR25(ZA[87]) + ZA[79]; - ZA[142] = ZR15(ZA[134]) + ZA[121]; - ZA[387] = ZA[368] + ZA[386]; - ZA[388] = ZA[386] + ZA[384]; - ZA[375] = ZA[372] + ZA[141]; - - ZA[391] = (ZCh(ZA[387], ZA[382], ZA[377]) + ZA[375]) + ZR26(ZA[387]); - ZA[389] = ZMa(ZA[383], ZA[378], ZA[388]) + ZR30(ZA[388]); - ZA[128] = ZA[118] + ZA[98]; - ZA[147] = ZA[142] + 0x2748774cU; - - ZA[99] = ZR25(ZA[88]) + ZA[87]; - ZA[143] = ZR15(ZA[135]) + ZA[128]; - ZA[392] = ZA[373] + ZA[391]; - ZA[393] = ZA[391] + ZA[389]; - ZA[380] = ZA[377] + ZA[147]; - - ZA[396] = (ZCh(ZA[392], ZA[387], ZA[382]) + ZA[380]) + ZR26(ZA[392]); - ZA[394] = ZMa(ZA[388], ZA[383], ZA[393]) + ZR30(ZA[393]); - ZA[129] = ZA[119] + ZA[99]; - ZA[148] = ZA[143] + 0x34b0bcb5U; - - ZA[106] = ZR25(ZA[94]) + ZA[88]; - ZA[149] = ZR15(ZA[142]) + ZA[129]; - ZA[397] = ZA[378] + ZA[396]; - ZA[398] = ZA[396] + ZA[394]; - ZA[385] = ZA[382] + ZA[148]; - - ZA[401] = (ZCh(ZA[397], ZA[392], ZA[387]) + ZA[385]) + ZR26(ZA[397]); - ZA[399] = ZMa(ZA[393], ZA[388], ZA[398]) + ZR30(ZA[398]); - ZA[136] = ZA[126] + ZA[106]; - ZA[153] = ZA[149] + 0x391c0cb3U; - - ZA[107] = ZR25(ZA[95]) + ZA[94]; - ZA[150] = ZR15(ZA[143]) + ZA[136]; - ZA[402] = ZA[383] + ZA[401]; - ZA[403] = ZA[401] + ZA[399]; - ZA[390] = ZA[387] + ZA[153]; - - ZA[406] = (ZCh(ZA[402], ZA[397], ZA[392]) + ZA[390]) + ZR26(ZA[402]); - ZA[404] = ZMa(ZA[398], ZA[393], ZA[403]) + ZR30(ZA[403]); - ZA[137] = ZA[127] + ZA[107]; - ZA[154] = ZA[150] + 0x4ed8aa4aU; - - ZA[114] = ZR25(ZA[102]) + ZA[95]; - ZA[155] = ZR15(ZA[149]) + ZA[137]; - ZA[407] = ZA[388] + ZA[406]; - ZA[408] = ZA[406] + ZA[404]; - ZA[395] = ZA[392] + ZA[154]; - - ZA[411] = (ZCh(ZA[407], ZA[402], ZA[397]) + ZA[395]) + ZR26(ZA[407]); - ZA[409] = ZMa(ZA[403], ZA[398], ZA[408]) + ZR30(ZA[408]); - ZA[144] = ZA[134] + ZA[114]; - ZA[159] = ZA[155] + 0x5b9cca4fU; - - ZA[115] = ZR25(ZA[103]) + ZA[102]; - ZA[156] = ZR15(ZA[150]) + ZA[144]; - ZA[412] = ZA[393] + ZA[411]; - ZA[413] = ZA[411] + ZA[409]; - ZA[400] = ZA[397] + ZA[159]; - - ZA[416] = (ZCh(ZA[412], ZA[407], ZA[402]) + ZA[400]) + ZR26(ZA[412]); - ZA[414] = ZMa(ZA[408], ZA[403], ZA[413]) + ZR30(ZA[413]); - ZA[145] = ZA[135] + ZA[115]; - ZA[160] = ZA[156] + 0x682e6ff3U; - - ZA[122] = ZR25(ZA[110]) + ZA[103]; - ZA[161] = ZR15(ZA[155]) + ZA[145]; - ZA[417] = ZA[398] + ZA[416]; - ZA[418] = ZA[416] + ZA[414]; - ZA[405] = ZA[402] + ZA[160]; - - ZA[421] = (ZCh(ZA[417], ZA[412], ZA[407]) + ZA[405]) + ZR26(ZA[417]); - ZA[419] = ZMa(ZA[413], ZA[408], ZA[418]) + ZR30(ZA[418]); - ZA[151] = ZA[142] + ZA[122]; - ZA[165] = ZA[161] + 0x748f82eeU; - - ZA[123] = ZR25(ZA[111]) + ZA[110]; - ZA[162] = ZR15(ZA[156]) + ZA[151]; - ZA[422] = ZA[403] + ZA[421]; - ZA[423] = ZA[421] + ZA[419]; - ZA[410] = ZA[407] + ZA[165]; - - ZA[426] = (ZCh(ZA[422], ZA[417], ZA[412]) + ZA[410]) + ZR26(ZA[422]); - ZA[424] = ZMa(ZA[418], ZA[413], ZA[423]) + ZR30(ZA[423]); - ZA[152] = ZA[143] + ZA[123]; - ZA[166] = ZA[162] + 0x78a5636fU; - - ZA[130] = ZR25(ZA[118]) + ZA[111]; - ZA[167] = ZR15(ZA[161]) + ZA[152]; - ZA[427] = ZA[408] + ZA[426]; - ZA[428] = ZA[426] + ZA[424]; - ZA[415] = ZA[412] + ZA[166]; - - ZA[431] = (ZCh(ZA[427], ZA[422], ZA[417]) + ZA[415]) + ZR26(ZA[427]); - ZA[429] = ZMa(ZA[423], ZA[418], ZA[428]) + ZR30(ZA[428]); - ZA[157] = ZA[149] + ZA[130]; - ZA[170] = ZA[167] + 0x84c87814U; - - ZA[131] = ZR25(ZA[119]) + ZA[118]; - ZA[168] = ZR15(ZA[162]) + ZA[157]; - ZA[432] = ZA[413] + ZA[431]; - ZA[433] = ZA[431] + ZA[429]; - ZA[420] = ZA[417] + ZA[170]; - - ZA[436] = (ZCh(ZA[432], ZA[427], ZA[422]) + ZA[420]) + ZR26(ZA[432]); - ZA[434] = ZMa(ZA[428], ZA[423], ZA[433]) + ZR30(ZA[433]); - ZA[158] = ZA[150] + ZA[131]; - ZA[171] = ZA[168] + 0x8cc70208U; - - ZA[138] = ZR25(ZA[126]) + ZA[119]; - ZA[172] = ZR15(ZA[167]) + ZA[158]; - ZA[437] = ZA[418] + ZA[436]; - ZA[438] = ZA[436] + ZA[434]; - ZA[425] = ZA[422] + ZA[171]; - - ZA[441] = (ZCh(ZA[437], ZA[432], ZA[427]) + ZA[425]) + ZR26(ZA[437]); - ZA[439] = ZMa(ZA[433], ZA[428], ZA[438]) + ZR30(ZA[438]); - ZA[163] = ZA[155] + ZA[138]; - ZA[174] = ZA[172] + 0x90befffaU; - - ZA[139] = ZR25(ZA[127]) + ZA[126]; - ZA[173] = ZR15(ZA[168]) + ZA[163]; - ZA[442] = ZA[423] + ZA[441]; - ZA[443] = ZA[441] + ZA[439]; - ZA[430] = ZA[427] + ZA[174]; - - ZA[445] = (ZCh(ZA[442], ZA[437], ZA[432]) + ZA[430]) + ZR26(ZA[442]); - ZA[444] = ZMa(ZA[438], ZA[433], ZA[443]) + ZR30(ZA[443]); - ZA[164] = ZA[156] + ZA[139]; - ZA[175] = ZA[173] + 0xa4506cebU; - - ZA[146] = ZR25(ZA[134]) + ZA[127]; - ZA[176] = ZR15(ZA[172]) + ZA[164]; - ZA[446] = ZA[428] + ZA[445]; - ZA[447] = ZA[445] + ZA[444]; - ZA[435] = ZA[432] + ZA[175]; - - ZA[449] = (ZCh(ZA[446], ZA[442], ZA[437]) + ZA[435]) + ZR26(ZA[446]); - ZA[448] = ZMa(ZA[443], ZA[438], ZA[447]) + ZR30(ZA[447]); - ZA[169] = ZA[161] + ZA[146]; - ZA[178] = ZA[176] + 0xbef9a3f7U; - - ZA[177] = ZR15(ZA[173]) + ZA[169]; - ZA[451] = ZA[449] + ZA[448]; - ZA[450] = ZA[433] + ZA[449]; - ZA[440] = ZA[437] + ZA[178]; - - ZA[453] = (ZCh(ZA[450], ZA[446], ZA[442]) + ZA[440]) + ZR26(ZA[450]); - ZA[452] = ZMa(ZA[447], ZA[443], ZA[451]) + ZR30(ZA[451]); - ZA[179] = ZA[177] + 0xc67178f2U; - - ZA[454] = ZA[438] + ZA[453]; - ZA[494] = ZA[442] + ZA[179]; - ZA[455] = ZA[453] + ZA[452]; - - ZA[457] = (ZCh(ZA[454], ZA[450], ZA[446]) + ZA[494]) + ZR26(ZA[454]); - ZA[456] = ZMa(ZA[451], ZA[447], ZA[455]) + ZR30(ZA[455]); - - ZA[459] = ZA[457] + ZA[456]; - - ZA[461] = ZA[455] + state1; - ZA[460] = ZA[459] + state0; - - ZA[495] = ZA[460] + 0x98c7e2a2U; - ZA[469] = ZA[461] + 0x90bb1e3cU; - - ZA[498] = (ZCh(ZA[495], 0x510e527fU, 0x9b05688cU) + ZA[469]) + ZR26(ZA[495]); - ZA[462] = ZA[451] + state2; - - ZA[496] = ZA[460] + 0xfc08884dU; - ZA[506] = ZA[498] + 0x3c6ef372U; - ZA[470] = ZA[462] + 0x50c6645bU; - - ZA[507] = (ZCh(ZA[506], ZA[495], 0x510e527fU) + ZA[470]) + ZR26(ZA[506]); - ZA[500] = ZMa(0x6a09e667U, 0xbb67ae85U, ZA[496]) + ZR30(ZA[496]); - ZA[463] = ZA[447] + state3; - - ZA[458] = ZA[443] + ZA[457]; - ZA[499] = ZA[498] + ZA[500]; - ZA[508] = ZA[507] + 0xbb67ae85U; - ZA[473] = ZA[463] + 0x3ac42e24U; - - ZA[510] = (ZCh(ZA[508], ZA[506], ZA[495]) + ZA[473]) + ZR26(ZA[508]); - ZA[928] = ZMa(ZA[496], 0x6a09e667U, ZA[499]) + ZR30(ZA[499]); - ZA[464] = ZA[458] + state4; - - ZA[476] = ZA[464] + ZA[460] + 0xd21ea4fdU; - ZA[511] = ZA[510] + 0x6a09e667U; - ZA[509] = ZA[928] + ZA[507]; - ZA[465] = ZA[454] + state5; - - ZA[514] = (ZCh(ZA[511], ZA[508], ZA[506]) + ZA[476]) + ZR26(ZA[511]); - ZA[512] = ZMa(ZA[499], ZA[496], ZA[509]) + ZR30(ZA[509]); - ZA[478] = ZA[465] + 0x59f111f1U; - - ZA[519] = ZA[506] + ZA[478]; - ZA[516] = ZA[496] + ZA[514]; - ZA[513] = ZA[510] + ZA[512]; - ZA[466] = ZA[450] + state6; - - ZA[520] = (ZCh(ZA[516], ZA[511], ZA[508]) + ZA[519]) + ZR26(ZA[516]); - ZA[515] = ZMa(ZA[509], ZA[499], ZA[513]) + ZR30(ZA[513]); - ZA[480] = ZA[466] + 0x923f82a4U; - - ZA[524] = ZA[508] + ZA[480]; - ZA[521] = ZA[499] + ZA[520]; - ZA[517] = ZA[514] + ZA[515]; - ZA[467] = ZA[446] + state7; - - ZA[525] = (ZCh(ZA[521], ZA[516], ZA[511]) + ZA[524]) + ZR26(ZA[521]); - ZA[522] = ZMa(ZA[513], ZA[509], ZA[517]) + ZR30(ZA[517]); - ZA[484] = ZA[467] + 0xab1c5ed5U; - - ZA[529] = ZA[511] + ZA[484]; - ZA[526] = ZA[509] + ZA[525]; - ZA[523] = ZA[520] + ZA[522]; - - ZA[530] = (ZCh(ZA[526], ZA[521], ZA[516]) + ZA[529]) + ZR26(ZA[526]); - ZA[550] = ZMa(ZA[517], ZA[513], ZA[523]) + ZR30(ZA[523]); - - ZA[531] = ZA[513] + ZA[530]; - ZA[533] = ZA[516] + 0x5807aa98U; - ZA[527] = ZA[550] + ZA[525]; - - ZA[534] = (ZCh(ZA[531], ZA[526], ZA[521]) + ZA[533]) + ZR26(ZA[531]); - ZA[551] = ZMa(ZA[523], ZA[517], ZA[527]) + ZR30(ZA[527]); - - ZA[535] = ZA[517] + ZA[534]; - ZA[538] = ZA[521] + 0x12835b01U; - ZA[532] = ZA[551] + ZA[530]; - - ZA[539] = (ZCh(ZA[535], ZA[531], ZA[526]) + ZA[538]) + ZR26(ZA[535]); - ZA[552] = ZMa(ZA[527], ZA[523], ZA[532]) + ZR30(ZA[532]); - - ZA[540] = ZA[523] + ZA[539]; - ZA[542] = ZA[526] + 0x243185beU; - ZA[536] = ZA[552] + ZA[534]; - - ZA[543] = (ZCh(ZA[540], ZA[535], ZA[531]) + ZA[542]) + ZR26(ZA[540]); - ZA[553] = ZMa(ZA[532], ZA[527], ZA[536]) + ZR30(ZA[536]); - - ZA[544] = ZA[527] + ZA[543]; - ZA[555] = ZA[531] + 0x550c7dc3U; - ZA[541] = ZA[553] + ZA[539]; - - ZA[558] = (ZCh(ZA[544], ZA[540], ZA[535]) + ZA[555]) + ZR26(ZA[544]); - ZA[547] = ZMa(ZA[536], ZA[532], ZA[541]) + ZR30(ZA[541]); - - ZA[559] = ZA[532] + ZA[558]; - ZA[556] = ZA[535] + 0x72be5d74U; - ZA[545] = ZA[547] + ZA[543]; - - ZA[562] = (ZCh(ZA[559], ZA[544], ZA[540]) + ZA[556]) + ZR26(ZA[559]); - ZA[561] = ZMa(ZA[541], ZA[536], ZA[545]) + ZR30(ZA[545]); - - ZA[563] = ZA[536] + ZA[562]; - ZA[560] = ZA[561] + ZA[558]; - ZA[557] = ZA[540] + 0x80deb1feU; - - ZA[568] = (ZCh(ZA[563], ZA[559], ZA[544]) + ZA[557]) + ZR26(ZA[563]); - ZA[564] = ZMa(ZA[545], ZA[541], ZA[560]) + ZR30(ZA[560]); - - ZA[569] = ZA[541] + ZA[568]; - ZA[572] = ZA[544] + 0x9bdc06a7U; - ZA[565] = ZA[562] + ZA[564]; - - ZA[574] = (ZCh(ZA[569], ZA[563], ZA[559]) + ZA[572]) + ZR26(ZA[569]); - ZA[570] = ZMa(ZA[560], ZA[545], ZA[565]) + ZR30(ZA[565]); - ZA[468] = ZR25(ZA[461]); - - ZA[497] = ZA[468] + ZA[460]; - ZA[575] = ZA[545] + ZA[574]; - ZA[571] = ZA[568] + ZA[570]; - ZA[573] = ZA[559] + 0xc19bf274U; - - ZA[578] = (ZCh(ZA[575], ZA[569], ZA[563]) + ZA[573]) + ZR26(ZA[575]); - ZA[576] = ZMa(ZA[565], ZA[560], ZA[571]) + ZR30(ZA[571]); - ZA[929] = ZR25(ZA[462]); - ZA[503] = ZA[497] + 0xe49b69c1U; - - ZA[471] = ZA[929] + ZA[461] + 0x00a00000U; - ZA[582] = ZA[563] + ZA[503]; - ZA[579] = ZA[560] + ZA[578]; - ZA[577] = ZA[574] + ZA[576]; - - ZA[583] = (ZCh(ZA[579], ZA[575], ZA[569]) + ZA[582]) + ZR26(ZA[579]); - ZA[580] = ZMa(ZA[571], ZA[565], ZA[577]) + ZR30(ZA[577]); - ZA[488] = ZA[471] + 0xefbe4786U; - - ZA[472] = ZR25(ZA[463]) + ZA[462]; - ZA[587] = ZA[569] + ZA[488]; - ZA[584] = ZA[565] + ZA[583]; - ZA[581] = ZA[578] + ZA[580]; - - ZA[588] = (ZCh(ZA[584], ZA[579], ZA[575]) + ZA[587]) + ZR26(ZA[584]); - ZA[586] = ZMa(ZA[577], ZA[571], ZA[581]) + ZR30(ZA[581]); - ZA[501] = ZR15(ZA[497]) + ZA[472]; - ZA[475] = ZR15(ZA[471]); - ZA[926] = ZA[575] + 0x0fc19dc6U; - - ZA[474] = ZA[475] + ZA[463] + ZR25(ZA[464]); - ZA[927] = ZA[926] + ZA[501]; - ZA[589] = ZA[571] + ZA[588]; - ZA[585] = ZA[583] + ZA[586]; - - ZA[592] = (ZCh(ZA[589], ZA[584], ZA[579]) + ZA[927]) + ZR26(ZA[589]); - ZA[590] = ZMa(ZA[581], ZA[577], ZA[585]) + ZR30(ZA[585]); - ZA[477] = ZR25(ZA[465]) + ZA[464]; - ZA[489] = ZA[474] + 0x240ca1ccU; - - ZA[518] = ZR15(ZA[501]) + ZA[477]; - ZA[479] = ZR25(ZA[466]); - ZA[596] = ZA[579] + ZA[489]; - ZA[593] = ZA[577] + ZA[592]; - ZA[591] = ZA[588] + ZA[590]; - - ZA[597] = (ZCh(ZA[593], ZA[589], ZA[584]) + ZA[596]) + ZR26(ZA[593]); - ZA[594] = ZMa(ZA[585], ZA[581], ZA[591]) + ZR30(ZA[591]); - ZA[481] = ZA[479] + ZA[465]; - ZA[601] = ZA[518] + 0x2de92c6fU; - - ZA[482] = ZR15(ZA[474]) + ZA[481]; - ZA[602] = ZA[584] + ZA[601]; - ZA[598] = ZA[581] + ZA[597]; - ZA[595] = ZA[592] + ZA[594]; - - ZA[632] = (ZCh(ZA[598], ZA[593], ZA[589]) + ZA[602]) + ZR26(ZA[598]); - ZA[599] = ZMa(ZA[591], ZA[585], ZA[595]) + ZR30(ZA[595]); - ZA[483] = ZA[466] + 0x00000100U + ZR25(ZA[467]); - ZA[490] = ZA[482] + 0x4a7484aaU; - - ZA[528] = ZR15(ZA[518]) + ZA[483]; - ZA[736] = ZA[585] + ZA[632]; - ZA[605] = ZA[589] + ZA[490]; - ZA[600] = ZA[597] + ZA[599]; - ZA[485] = ZA[467] + 0x11002000U; - - ZA[738] = (ZCh(ZA[736], ZA[598], ZA[593]) + ZA[605]) + ZR26(ZA[736]); - ZA[744] = ZMa(ZA[595], ZA[591], ZA[600]) + ZR30(ZA[600]); - ZA[487] = ZR15(ZA[482]) + ZA[485]; - ZA[603] = ZA[528] + 0x5cb0a9dcU; - - ZA[502] = ZA[497] + ZA[487]; - ZA[739] = ZA[591] + ZA[738]; - ZA[604] = ZA[593] + ZA[603]; - ZA[737] = ZA[744] + ZA[632]; - - ZA[741] = (ZCh(ZA[739], ZA[736], ZA[598]) + ZA[604]) + ZR26(ZA[739]); - ZA[745] = ZMa(ZA[600], ZA[595], ZA[737]) + ZR30(ZA[737]); - ZA[486] = ZA[471] + 0x80000000U; - ZA[606] = ZA[502] + 0x76f988daU; - - ZA[537] = ZR15(ZA[528]) + ZA[486]; - ZA[742] = ZA[595] + ZA[741]; - ZA[613] = ZA[598] + ZA[606]; - ZA[740] = ZA[745] + ZA[738]; - - ZA[747] = (ZCh(ZA[742], ZA[739], ZA[736]) + ZA[613]) + ZR26(ZA[742]); - ZA[746] = ZMa(ZA[737], ZA[600], ZA[740]) + ZR30(ZA[740]); - ZA[607] = ZA[537] + 0x983e5152U; - - ZA[546] = ZR15(ZA[502]) + ZA[501]; - ZA[751] = ZA[736] + ZA[607]; - ZA[748] = ZA[600] + ZA[747]; - ZA[743] = ZA[746] + ZA[741]; - - ZA[752] = (ZCh(ZA[748], ZA[742], ZA[739]) + ZA[751]) + ZR26(ZA[748]); - ZA[749] = ZMa(ZA[740], ZA[737], ZA[743]) + ZR30(ZA[743]); - ZA[608] = ZA[546] + 0xa831c66dU; - - ZA[554] = ZR15(ZA[537]) + ZA[474]; - ZA[756] = ZA[739] + ZA[608]; - ZA[753] = ZA[737] + ZA[752]; - ZA[750] = ZA[747] + ZA[749]; - - ZA[757] = (ZCh(ZA[753], ZA[748], ZA[742]) + ZA[756]) + ZR26(ZA[753]); - ZA[754] = ZMa(ZA[743], ZA[740], ZA[750]) + ZR30(ZA[750]); - ZA[609] = ZA[554] + 0xb00327c8U; - - ZA[566] = ZR15(ZA[546]) + ZA[518]; - ZA[761] = ZA[742] + ZA[609]; - ZA[758] = ZA[740] + ZA[757]; - ZA[755] = ZA[752] + ZA[754]; - - ZA[762] = (ZCh(ZA[758], ZA[753], ZA[748]) + ZA[761]) + ZR26(ZA[758]); - ZA[759] = ZMa(ZA[750], ZA[743], ZA[755]) + ZR30(ZA[755]); - ZA[610] = ZA[566] + 0xbf597fc7U; - - ZA[567] = ZR15(ZA[554]) + ZA[482]; - ZA[766] = ZA[748] + ZA[610]; - ZA[763] = ZA[743] + ZA[762]; - ZA[760] = ZA[757] + ZA[759]; - - ZA[767] = (ZCh(ZA[763], ZA[758], ZA[753]) + ZA[766]) + ZR26(ZA[763]); - ZA[764] = ZMa(ZA[755], ZA[750], ZA[760]) + ZR30(ZA[760]); - ZA[611] = ZA[567] + 0xc6e00bf3U; - - ZA[614] = ZR15(ZA[566]) + ZA[528]; - ZA[771] = ZA[753] + ZA[611]; - ZA[768] = ZA[750] + ZA[767]; - ZA[765] = ZA[762] + ZA[764]; - - ZA[772] = (ZCh(ZA[768], ZA[763], ZA[758]) + ZA[771]) + ZR26(ZA[768]); - ZA[769] = ZMa(ZA[760], ZA[755], ZA[765]) + ZR30(ZA[765]); - ZA[612] = ZA[502] + 0x00400022U; - ZA[615] = ZA[614] + 0xd5a79147U; - - ZA[616] = ZR15(ZA[567]) + ZA[612]; - ZA[504] = ZR25(ZA[497]) + 0x00000100U; - ZA[776] = ZA[758] + ZA[615]; - ZA[773] = ZA[755] + ZA[772]; - ZA[770] = ZA[767] + ZA[769]; - - ZA[777] = (ZCh(ZA[773], ZA[768], ZA[763]) + ZA[776]) + ZR26(ZA[773]); - ZA[774] = ZMa(ZA[765], ZA[760], ZA[770]) + ZR30(ZA[770]); - ZA[492] = ZR25(ZA[471]); - ZA[618] = ZA[537] + ZA[504]; - ZA[617] = ZA[616] + 0x06ca6351U; - - ZA[619] = ZR15(ZA[614]) + ZA[618]; - ZA[781] = ZA[763] + ZA[617]; - ZA[778] = ZA[760] + ZA[777]; - ZA[775] = ZA[772] + ZA[774]; - ZA[505] = ZA[492] + ZA[497]; - - ZA[782] = (ZCh(ZA[778], ZA[773], ZA[768]) + ZA[781]) + ZR26(ZA[778]); - ZA[779] = ZMa(ZA[770], ZA[765], ZA[775]) + ZR30(ZA[775]); - ZA[621] = ZA[505] + ZA[546]; - ZA[620] = ZA[619] + 0x14292967U; - - ZA[622] = ZR15(ZA[616]) + ZA[621]; - ZA[625] = ZR25(ZA[501]); - ZA[786] = ZA[768] + ZA[620]; - ZA[783] = ZA[765] + ZA[782]; - ZA[624] = ZA[554] + ZA[471]; - ZA[780] = ZA[777] + ZA[779]; - - ZA[787] = (ZCh(ZA[783], ZA[778], ZA[773]) + ZA[786]) + ZR26(ZA[783]); - ZA[784] = ZMa(ZA[775], ZA[770], ZA[780]) + ZR30(ZA[780]); - ZA[493] = ZR25(ZA[474]); - ZA[626] = ZA[625] + ZA[624]; - ZA[623] = ZA[622] + 0x27b70a85U; - - ZA[627] = ZR15(ZA[619]) + ZA[626]; - ZA[791] = ZA[773] + ZA[623]; - ZA[788] = ZA[770] + ZA[787]; - ZA[785] = ZA[782] + ZA[784]; - ZA[629] = ZA[493] + ZA[501]; - - ZA[792] = (ZCh(ZA[788], ZA[783], ZA[778]) + ZA[791]) + ZR26(ZA[788]); - ZA[789] = ZMa(ZA[780], ZA[775], ZA[785]) + ZR30(ZA[785]); - ZA[630] = ZA[566] + ZA[629]; - ZA[628] = ZA[627] + 0x2e1b2138U; - - ZA[634] = ZR25(ZA[518]) + ZA[474]; - ZA[631] = ZR15(ZA[622]) + ZA[630]; - ZA[796] = ZA[778] + ZA[628]; - ZA[793] = ZA[775] + ZA[792]; - ZA[790] = ZA[787] + ZA[789]; - - ZA[797] = (ZCh(ZA[793], ZA[788], ZA[783]) + ZA[796]) + ZR26(ZA[793]); - ZA[794] = ZMa(ZA[785], ZA[780], ZA[790]) + ZR30(ZA[790]); - ZA[491] = ZR25(ZA[482]); - ZA[635] = ZA[567] + ZA[634]; - ZA[633] = ZA[631] + 0x4d2c6dfcU; - - ZA[636] = ZR15(ZA[627]) + ZA[635]; - ZA[801] = ZA[783] + ZA[633]; - ZA[798] = ZA[780] + ZA[797]; - ZA[795] = ZA[792] + ZA[794]; - ZA[638] = ZA[491] + ZA[518]; - - ZA[802] = (ZCh(ZA[798], ZA[793], ZA[788]) + ZA[801]) + ZR26(ZA[798]); - ZA[799] = ZMa(ZA[790], ZA[785], ZA[795]) + ZR30(ZA[795]); - ZA[639] = ZA[638] + ZA[614]; - ZA[637] = ZA[636] + 0x53380d13U; - - ZA[642] = ZR25(ZA[528]) + ZA[482]; - ZA[640] = ZR15(ZA[631]) + ZA[639]; - ZA[806] = ZA[788] + ZA[637]; - ZA[803] = ZA[785] + ZA[802]; - ZA[800] = ZA[797] + ZA[799]; - - ZA[807] = (ZCh(ZA[803], ZA[798], ZA[793]) + ZA[806]) + ZR26(ZA[803]); - ZA[804] = ZMa(ZA[795], ZA[790], ZA[800]) + ZR30(ZA[800]); - ZA[643] = ZA[616] + ZA[642]; - ZA[641] = ZA[640] + 0x650a7354U; - - ZA[646] = ZR25(ZA[502]) + ZA[528]; - ZA[644] = ZR15(ZA[636]) + ZA[643]; - ZA[811] = ZA[793] + ZA[641]; - ZA[808] = ZA[790] + ZA[807]; - ZA[805] = ZA[802] + ZA[804]; - - ZA[812] = (ZCh(ZA[808], ZA[803], ZA[798]) + ZA[811]) + ZR26(ZA[808]); - ZA[809] = ZMa(ZA[800], ZA[795], ZA[805]) + ZR30(ZA[805]); - ZA[647] = ZA[619] + ZA[646]; - ZA[645] = ZA[644] + 0x766a0abbU; - - ZA[650] = ZR25(ZA[537]) + ZA[502]; - ZA[648] = ZR15(ZA[640]) + ZA[647]; - ZA[816] = ZA[798] + ZA[645]; - ZA[813] = ZA[795] + ZA[812]; - ZA[810] = ZA[807] + ZA[809]; - - ZA[817] = (ZCh(ZA[813], ZA[808], ZA[803]) + ZA[816]) + ZR26(ZA[813]); - ZA[814] = ZMa(ZA[805], ZA[800], ZA[810]) + ZR30(ZA[810]); - ZA[925] = ZA[622] + ZA[650]; - ZA[649] = ZA[648] + 0x81c2c92eU; - - ZA[653] = ZR25(ZA[546]) + ZA[537]; - ZA[651] = ZR15(ZA[644]) + ZA[925]; - ZA[821] = ZA[803] + ZA[649]; - ZA[818] = ZA[800] + ZA[817]; - ZA[815] = ZA[812] + ZA[814]; - - ZA[822] = (ZCh(ZA[818], ZA[813], ZA[808]) + ZA[821]) + ZR26(ZA[818]); - ZA[819] = ZMa(ZA[810], ZA[805], ZA[815]) + ZR30(ZA[815]); - ZA[654] = ZA[627] + ZA[653]; - ZA[652] = ZA[651] + 0x92722c85U; - - ZA[657] = ZR25(ZA[554]) + ZA[546]; - ZA[655] = ZR15(ZA[648]) + ZA[654]; - ZA[826] = ZA[808] + ZA[652]; - ZA[823] = ZA[805] + ZA[822]; - ZA[820] = ZA[817] + ZA[819]; - - ZA[827] = (ZCh(ZA[823], ZA[818], ZA[813]) + ZA[826]) + ZR26(ZA[823]); - ZA[824] = ZMa(ZA[815], ZA[810], ZA[820]) + ZR30(ZA[820]); - ZA[658] = ZA[631] + ZA[657]; - ZA[656] = ZA[655] + 0xa2bfe8a1U; - - ZA[661] = ZR25(ZA[566]) + ZA[554]; - ZA[659] = ZR15(ZA[651]) + ZA[658]; - ZA[831] = ZA[813] + ZA[656]; - ZA[828] = ZA[810] + ZA[827]; - ZA[825] = ZA[822] + ZA[824]; - - ZA[832] = (ZCh(ZA[828], ZA[823], ZA[818]) + ZA[831]) + ZR26(ZA[828]); - ZA[829] = ZMa(ZA[820], ZA[815], ZA[825]) + ZR30(ZA[825]); - ZA[662] = ZA[636] + ZA[661]; - ZA[660] = ZA[659] + 0xa81a664bU; - - ZA[665] = ZR25(ZA[567]) + ZA[566]; - ZA[663] = ZR15(ZA[655]) + ZA[662]; - ZA[836] = ZA[818] + ZA[660]; - ZA[833] = ZA[815] + ZA[832]; - ZA[830] = ZA[827] + ZA[829]; - - ZA[837] = (ZCh(ZA[833], ZA[828], ZA[823]) + ZA[836]) + ZR26(ZA[833]); - ZA[834] = ZMa(ZA[825], ZA[820], ZA[830]) + ZR30(ZA[830]); - ZA[666] = ZA[640] + ZA[665]; - ZA[664] = ZA[663] + 0xc24b8b70U; - - ZA[669] = ZR25(ZA[614]) + ZA[567]; - ZA[667] = ZR15(ZA[659]) + ZA[666]; - ZA[841] = ZA[823] + ZA[664]; - ZA[838] = ZA[820] + ZA[837]; - ZA[835] = ZA[832] + ZA[834]; - - ZA[842] = (ZCh(ZA[838], ZA[833], ZA[828]) + ZA[841]) + ZR26(ZA[838]); - ZA[839] = ZMa(ZA[830], ZA[825], ZA[835]) + ZR30(ZA[835]); - ZA[670] = ZA[644] + ZA[669]; - ZA[668] = ZA[667] + 0xc76c51a3U; - - ZA[677] = ZR25(ZA[616]) + ZA[614]; - ZA[671] = ZR15(ZA[663]) + ZA[670]; - ZA[846] = ZA[828] + ZA[668]; - ZA[843] = ZA[825] + ZA[842]; - ZA[840] = ZA[837] + ZA[839]; - - ZA[847] = (ZCh(ZA[843], ZA[838], ZA[833]) + ZA[846]) + ZR26(ZA[843]); - ZA[844] = ZMa(ZA[835], ZA[830], ZA[840]) + ZR30(ZA[840]); - ZA[678] = ZA[648] + ZA[677]; - ZA[676] = ZA[671] + 0xd192e819U; - - ZA[682] = ZR25(ZA[619]) + ZA[616]; - ZA[679] = ZR15(ZA[667]) + ZA[678]; - ZA[851] = ZA[833] + ZA[676]; - ZA[848] = ZA[830] + ZA[847]; - ZA[845] = ZA[842] + ZA[844]; - - ZA[852] = (ZCh(ZA[848], ZA[843], ZA[838]) + ZA[851]) + ZR26(ZA[848]); - ZA[849] = ZMa(ZA[840], ZA[835], ZA[845]) + ZR30(ZA[845]); - ZA[683] = ZA[651] + ZA[682]; - ZA[680] = ZA[679] + 0xd6990624U; - - ZA[686] = ZR25(ZA[622]) + ZA[619]; - ZA[684] = ZR15(ZA[671]) + ZA[683]; - ZA[856] = ZA[838] + ZA[680]; - ZA[853] = ZA[835] + ZA[852]; - ZA[850] = ZA[847] + ZA[849]; - - ZA[857] = (ZCh(ZA[853], ZA[848], ZA[843]) + ZA[856]) + ZR26(ZA[853]); - ZA[854] = ZMa(ZA[845], ZA[840], ZA[850]) + ZR30(ZA[850]); - ZA[687] = ZA[655] + ZA[686]; - ZA[685] = ZA[684] + 0xf40e3585U; - - ZA[690] = ZR25(ZA[627]) + ZA[622]; - ZA[688] = ZR15(ZA[679]) + ZA[687]; - ZA[861] = ZA[843] + ZA[685]; - ZA[858] = ZA[840] + ZA[857]; - ZA[855] = ZA[852] + ZA[854]; - - ZA[862] = (ZCh(ZA[858], ZA[853], ZA[848]) + ZA[861]) + ZR26(ZA[858]); - ZA[859] = ZMa(ZA[850], ZA[845], ZA[855]) + ZR30(ZA[855]); - ZA[691] = ZA[659] + ZA[690]; - ZA[689] = ZA[688] + 0x106aa070U; - - ZA[694] = ZR25(ZA[631]) + ZA[627]; - ZA[692] = ZR15(ZA[684]) + ZA[691]; - ZA[866] = ZA[848] + ZA[689]; - ZA[863] = ZA[845] + ZA[862]; - ZA[860] = ZA[857] + ZA[859]; - - ZA[867] = (ZCh(ZA[863], ZA[858], ZA[853]) + ZA[866]) + ZR26(ZA[863]); - ZA[864] = ZMa(ZA[855], ZA[850], ZA[860]) + ZR30(ZA[860]); - ZA[695] = ZA[663] + ZA[694]; - ZA[693] = ZA[692] + 0x19a4c116U; - - ZA[698] = ZR25(ZA[636]) + ZA[631]; - ZA[696] = ZR15(ZA[688]) + ZA[695]; - ZA[871] = ZA[853] + ZA[693]; - ZA[868] = ZA[850] + ZA[867]; - ZA[865] = ZA[862] + ZA[864]; - - ZA[873] = (ZCh(ZA[868], ZA[863], ZA[858]) + ZA[871]) + ZR26(ZA[868]); - ZA[869] = ZMa(ZA[860], ZA[855], ZA[865]) + ZR30(ZA[865]); - ZA[699] = ZA[667] + ZA[698]; - ZA[697] = ZA[696] + 0x1e376c08U; - - ZA[700] = ZR15(ZA[692]) + ZA[699]; - ZA[877] = ZA[858] + ZA[697]; - ZA[874] = ZA[855] + ZA[873]; - ZA[870] = ZA[867] + ZA[869]; - - ZA[878] = (ZCh(ZA[874], ZA[868], ZA[863]) + ZA[877]) + 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]); +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) From b99a0481f4375cc7d2923130b3522f1e6e9ace30 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 27 Feb 2012 09:32:31 +1100 Subject: [PATCH 033/117] Strip out unused variables from diablo array. --- diablo120222.cl | 914 ++++++++++++++++++++++++------------------------ 1 file changed, 457 insertions(+), 457 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 8c9a8f40..fa00124d 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -60,486 +60,486 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( __global uint * output) { - z ZA[930]; + z ZA[448]; 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[4]=Znonce+PreVal4_state0; +ZA[5]=(ZCh(ZA[4],b1,c1)+d1)+ZR26(ZA[4]); +ZA[11]=Znonce+PreVal4_T1; +ZA[6]=ZA[5]+h1; +ZA[7]=(ZCh(ZA[6],ZA[4],b1)+c1_plus_k5)+ZR26(ZA[6]); +ZA[12]=ZMa(f1,g1,ZA[11])+ZR30(ZA[11])+ZA[5]; +ZA[8]=ZA[7]+g1; +ZA[9]=(ZCh(ZA[8],ZA[6],ZA[4])+b1_plus_k6)+ZR26(ZA[8]); +ZA[13]=ZMa(ZA[11],f1,ZA[12])+ZR30(ZA[12])+ZA[7]; +ZA[10]=ZA[9]+f1; +ZA[14]=ZMa(ZA[12],ZA[11],ZA[13])+ZR30(ZA[13])+ZA[9]; +ZA[55]=Znonce+PreVal4_state0_k7+ZCh(ZA[10],ZA[8],ZA[6])+ZR26(ZA[10]); +ZA[56]=ZA[55]+ZA[11]; +ZA[57]=ZA[55]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]); +ZA[58]=(ZCh(ZA[56],ZA[10],ZA[8])+ZA[6]+0xd807aa98U)+ZR26(ZA[56]); +ZA[59]=ZA[58]+ZA[12]; +ZA[60]=ZA[58]+ZMa(ZA[14],ZA[13],ZA[57])+ZR30(ZA[57]); +ZA[61]=(ZCh(ZA[59],ZA[56],ZA[10])+ZA[8]+0x12835b01U)+ZR26(ZA[59]); +ZA[62]=ZA[61]+ZA[13]; +ZA[63]=ZA[61]+ZMa(ZA[57],ZA[14],ZA[60])+ZR30(ZA[60]); +ZA[64]=(ZCh(ZA[62],ZA[59],ZA[56])+ZA[10]+0x243185beU)+ZR26(ZA[62]); +ZA[65]=ZA[64]+ZA[14]; +ZA[66]=ZA[64]+ZMa(ZA[60],ZA[57],ZA[63])+ZR30(ZA[63]); +ZA[67]=(ZCh(ZA[65],ZA[62],ZA[59])+ZA[56]+0x550c7dc3U)+ZR26(ZA[65]); +ZA[68]=ZA[67]+ZA[57]; +ZA[69]=ZA[67]+ZMa(ZA[63],ZA[60],ZA[66])+ZR30(ZA[66]); +ZA[70]=(ZCh(ZA[68],ZA[65],ZA[62])+ZA[59]+0x72be5d74U)+ZR26(ZA[68]); +ZA[71]=ZA[70]+ZA[60]; +ZA[72]=ZA[70]+ZMa(ZA[66],ZA[63],ZA[69])+ZR30(ZA[69]); +ZA[73]=(ZCh(ZA[71],ZA[68],ZA[65])+ZA[62]+0x80deb1feU)+ZR26(ZA[71]); +ZA[74]=ZA[63]+ZA[73]; +ZA[75]=ZA[73]+ZMa(ZA[69],ZA[66],ZA[72])+ZR30(ZA[72]); +ZA[76]=(ZCh(ZA[74],ZA[71],ZA[68])+ZA[65]+0x9bdc06a7U)+ZR26(ZA[74]); +ZA[77]=ZA[66]+ZA[76]; +ZA[78]=ZA[76]+ZMa(ZA[72],ZA[69],ZA[75])+ZR30(ZA[75]); +ZA[79]=(ZCh(ZA[77],ZA[74],ZA[71])+ZA[68]+0xc19bf3f4U)+ZR26(ZA[77]); +ZA[80]=ZA[69]+ZA[79]; +ZA[81]=ZA[79]+ZMa(ZA[75],ZA[72],ZA[78])+ZR30(ZA[78]); +ZA[82]=(ZCh(ZA[80],ZA[77],ZA[74])+ZA[71]+W16_plus_K16)+ZR26(ZA[80]); 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]); +ZA[84]=ZA[82]+ZMa(ZA[78],ZA[75],ZA[81])+ZR30(ZA[81]); +ZA[83]=ZA[72]+ZA[82]; +ZA[85]=(ZCh(ZA[83],ZA[80],ZA[77])+ZA[74]+W17_plus_K17)+ZR26(ZA[83]); +ZA[86]=ZA[75]+ZA[85]; +ZA[87]=ZA[85]+ZMa(ZA[81],ZA[78],ZA[84])+ZR30(ZA[84]); +ZA[15]=Znonce+W19; +ZA[88]=(ZCh(ZA[86],ZA[83],ZA[80])+ZA[77]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[86]); +ZA[1]=ZR15(ZA[0])+0x80000000U; +ZA[90]=ZA[88]+ZMa(ZA[84],ZA[81],ZA[87])+ZR30(ZA[87]); +ZA[89]=ZA[78]+ZA[88]; +ZA[91]=(ZCh(ZA[89],ZA[86],ZA[83])+ZA[80]+ZA[15]+0x240ca1ccU)+ZR26(ZA[89]); +ZA[16]=ZR15(ZA[15]); +ZA[93]=ZA[91]+ZMa(ZA[87],ZA[84],ZA[90])+ZR30(ZA[90]); +ZA[92]=ZA[81]+ZA[91]; +ZA[94]=(ZCh(ZA[92],ZA[89],ZA[86])+ZA[83]+ZA[1]+0x2de92c6fU)+ZR26(ZA[92]); +ZA[2]=ZR15(ZA[1])+0x00000280U; +ZA[96]=ZA[94]+ZMa(ZA[90],ZA[87],ZA[93])+ZR30(ZA[93]); +ZA[95]=ZA[84]+ZA[94]; +ZA[97]=(ZCh(ZA[95],ZA[92],ZA[89])+ZA[86]+ZA[16]+0x4a7484aaU)+ZR26(ZA[95]); +ZA[17]=ZR15(ZA[16])+W16; +ZA[99]=ZA[97]+ZMa(ZA[93],ZA[90],ZA[96])+ZR30(ZA[96]); +ZA[98]=ZA[87]+ZA[97]; +ZA[100]=(ZCh(ZA[98],ZA[95],ZA[92])+ZA[89]+ZA[2]+0x5cb0a9dcU)+ZR26(ZA[98]); +ZA[3]=ZR15(ZA[2])+W17; +ZA[102]=ZA[100]+ZMa(ZA[96],ZA[93],ZA[99])+ZR30(ZA[99]); +ZA[101]=ZA[90]+ZA[100]; +ZA[103]=(ZCh(ZA[101],ZA[98],ZA[95])+ZA[92]+ZA[17]+0x76f988daU)+ZR26(ZA[101]); +ZA[18]=ZR15(ZA[17])+ZA[0]; +ZA[105]=ZA[103]+ZMa(ZA[99],ZA[96],ZA[102])+ZR30(ZA[102]); +ZA[104]=ZA[93]+ZA[103]; +ZA[106]=(ZCh(ZA[104],ZA[101],ZA[98])+ZA[95]+ZA[3]+0x983e5152U)+ZR26(ZA[104]); +ZA[20]=ZR15(ZA[3])+ZA[15]; +ZA[107]=ZA[96]+ZA[106]; +ZA[108]=ZA[106]+ZMa(ZA[102],ZA[99],ZA[105])+ZR30(ZA[105]); +ZA[109]=(ZCh(ZA[107],ZA[104],ZA[101])+ZA[98]+ZA[18]+0xa831c66dU)+ZR26(ZA[107]); +ZA[19]=ZR15(ZA[18])+ZA[1]; +ZA[111]=ZA[109]+ZMa(ZA[105],ZA[102],ZA[108])+ZR30(ZA[108]); +ZA[110]=ZA[99]+ZA[109]; +ZA[112]=(ZCh(ZA[110],ZA[107],ZA[104])+ZA[101]+ZA[20]+0xb00327c8U)+ZR26(ZA[110]); +ZA[22]=ZR15(ZA[20])+ZA[16]; +ZA[114]=ZA[112]+ZMa(ZA[108],ZA[105],ZA[111])+ZR30(ZA[111]); +ZA[113]=ZA[102]+ZA[112]; +ZA[115]=(ZCh(ZA[113],ZA[110],ZA[107])+ZA[104]+ZA[19]+0xbf597fc7U)+ZR26(ZA[113]); +ZA[21]=ZR15(ZA[19])+ZA[2]; +ZA[117]=ZA[115]+ZMa(ZA[111],ZA[108],ZA[114])+ZR30(ZA[114]); +ZA[116]=ZA[105]+ZA[115]; +ZA[118]=(ZCh(ZA[116],ZA[113],ZA[110])+ZA[107]+ZA[22]+0xc6e00bf3U)+ZR26(ZA[116]); +ZA[23]=ZR15(ZA[22])+ZA[17]+0x00A00055U; +ZA[120]=ZA[118]+ZMa(ZA[114],ZA[111],ZA[117])+ZR30(ZA[117]); +ZA[119]=ZA[108]+ZA[118]; +ZA[121]=(ZCh(ZA[119],ZA[116],ZA[113])+ZA[110]+ZA[21]+0xd5a79147U)+ZR26(ZA[119]); +ZA[24]=ZR15(ZA[21])+ZA[3]+W31; +ZA[123]=ZA[121]+ZMa(ZA[117],ZA[114],ZA[120])+ZR30(ZA[120]); +ZA[122]=ZA[111]+ZA[121]; +ZA[124]=(ZCh(ZA[122],ZA[119],ZA[116])+ZA[113]+ZA[23]+0x06ca6351U)+ZR26(ZA[122]); +ZA[26]=ZR15(ZA[23])+ZA[18]+W32; +ZA[126]=ZA[124]+ZMa(ZA[120],ZA[117],ZA[123])+ZR30(ZA[123]); +ZA[125]=ZA[114]+ZA[124]; +ZA[127]=(ZCh(ZA[125],ZA[122],ZA[119])+ZA[116]+ZA[24]+0x14292967U)+ZR26(ZA[125]); +ZA[25]=ZR15(ZA[24])+ZA[20]+ZR25(ZA[0])+W17; +ZA[128]=ZA[117]+ZA[127]; +ZA[129]=ZA[127]+ZMa(ZA[123],ZA[120],ZA[126])+ZR30(ZA[126]); +ZA[130]=(ZCh(ZA[128],ZA[125],ZA[122])+ZA[119]+ZA[26]+0x27b70a85U)+ZR26(ZA[128]); +ZA[27]=ZR15(ZA[26])+ZR25(ZA[15])+ZA[0]+ZA[19]; +ZA[132]=ZA[130]+ZMa(ZA[126],ZA[123],ZA[129])+ZR30(ZA[129]); +ZA[131]=ZA[120]+ZA[130]; +ZA[133]=(ZCh(ZA[131],ZA[128],ZA[125])+ZA[122]+ZA[25]+0x2e1b2138U)+ZR26(ZA[131]); +ZA[28]=ZR15(ZA[25])+ZA[15]+ZR25(ZA[1])+ZA[22]; +ZA[134]=ZA[123]+ZA[133]; +ZA[135]=ZA[133]+ZMa(ZA[129],ZA[126],ZA[132])+ZR30(ZA[132]); +ZA[136]=(ZCh(ZA[134],ZA[131],ZA[128])+ZA[125]+ZA[27]+0x4d2c6dfcU)+ZR26(ZA[134]); +ZA[29]=ZR15(ZA[27])+ZR25(ZA[16])+ZA[1]+ZA[21]; +ZA[138]=ZA[136]+ZMa(ZA[132],ZA[129],ZA[135])+ZR30(ZA[135]); +ZA[137]=ZA[126]+ZA[136]; +ZA[139]=(ZCh(ZA[137],ZA[134],ZA[131])+ZA[128]+ZA[28]+0x53380d13U)+ZR26(ZA[137]); +ZA[30]=ZR15(ZA[28])+ZA[16]+ZR25(ZA[2])+ZA[23]; +ZA[140]=ZA[129]+ZA[139]; +ZA[141]=ZA[139]+ZMa(ZA[135],ZA[132],ZA[138])+ZR30(ZA[138]); +ZA[142]=(ZCh(ZA[140],ZA[137],ZA[134])+ZA[131]+ZA[29]+0x650a7354U)+ZR26(ZA[140]); +ZA[31]=ZR15(ZA[29])+ZR25(ZA[17])+ZA[2]+ZA[24]; +ZA[144]=ZA[142]+ZMa(ZA[138],ZA[135],ZA[141])+ZR30(ZA[141]); +ZA[143]=ZA[132]+ZA[142]; +ZA[145]=(ZCh(ZA[143],ZA[140],ZA[137])+ZA[134]+ZA[30]+0x766a0abbU)+ZR26(ZA[143]); +ZA[32]=ZR15(ZA[30])+ZA[17]+ZR25(ZA[3])+ZA[26]; +ZA[146]=ZA[135]+ZA[145]; +ZA[147]=ZA[145]+ZMa(ZA[141],ZA[138],ZA[144])+ZR30(ZA[144]); +ZA[148]=(ZCh(ZA[146],ZA[143],ZA[140])+ZA[137]+ZA[31]+0x81c2c92eU)+ZR26(ZA[146]); +ZA[33]=ZR15(ZA[31])+ZR25(ZA[18])+ZA[3]+ZA[25]; +ZA[149]=ZA[138]+ZA[148]; +ZA[150]=ZA[148]+ZMa(ZA[144],ZA[141],ZA[147])+ZR30(ZA[147]); +ZA[151]=(ZCh(ZA[149],ZA[146],ZA[143])+ZA[140]+ZA[32]+0x92722c85U)+ZR26(ZA[149]); +ZA[34]=ZR15(ZA[32])+ZR25(ZA[20])+ZA[18]+ZA[27]; +ZA[152]=ZA[141]+ZA[151]; +ZA[153]=ZA[151]+ZMa(ZA[147],ZA[144],ZA[150])+ZR30(ZA[150]); +ZA[154]=(ZCh(ZA[152],ZA[149],ZA[146])+ZA[143]+ZA[33]+0xa2bfe8a1U)+ZR26(ZA[152]); +ZA[35]=ZR15(ZA[33])+ZR25(ZA[19])+ZA[20]+ZA[28]; +ZA[155]=ZA[144]+ZA[154]; +ZA[156]=ZA[154]+ZMa(ZA[150],ZA[147],ZA[153])+ZR30(ZA[153]); +ZA[157]=(ZCh(ZA[155],ZA[152],ZA[149])+ZA[146]+ZA[34]+0xa81a664bU)+ZR26(ZA[155]); +ZA[36]=ZR15(ZA[34])+ZA[29]+ZR25(ZA[22])+ZA[19]; +ZA[159]=ZA[157]+ZMa(ZA[153],ZA[150],ZA[156])+ZR30(ZA[156]); +ZA[158]=ZA[147]+ZA[157]; +ZA[160]=(ZCh(ZA[158],ZA[155],ZA[152])+ZA[149]+ZA[35]+0xc24b8b70U)+ZR26(ZA[158]); +ZA[37]=ZR15(ZA[35])+ZA[30]+ZR25(ZA[21])+ZA[22]; +ZA[161]=ZA[150]+ZA[160]; +ZA[162]=ZA[160]+ZMa(ZA[156],ZA[153],ZA[159])+ZR30(ZA[159]); +ZA[163]=(ZCh(ZA[161],ZA[158],ZA[155])+ZA[152]+ZA[36]+0xc76c51a3U)+ZR26(ZA[161]); +ZA[38]=ZR15(ZA[36])+ZR25(ZA[23])+ZA[21]+ZA[31]; +ZA[164]=ZA[153]+ZA[163]; +ZA[165]=ZA[163]+ZMa(ZA[159],ZA[156],ZA[162])+ZR30(ZA[162]); +ZA[166]=(ZCh(ZA[164],ZA[161],ZA[158])+ZA[155]+ZA[37]+0xd192e819U)+ZR26(ZA[164]); +ZA[39]=ZR15(ZA[37])+ZR25(ZA[24])+ZA[23]+ZA[32]; +ZA[167]=ZA[156]+ZA[166]; +ZA[168]=ZA[166]+ZMa(ZA[162],ZA[159],ZA[165])+ZR30(ZA[165]); +ZA[169]=(ZCh(ZA[167],ZA[164],ZA[161])+ZA[158]+ZA[38]+0xd6990624U)+ZR26(ZA[167]); +ZA[40]=ZR15(ZA[38])+ZA[33]+ZR25(ZA[26])+ZA[24]; +ZA[170]=ZA[159]+ZA[169]; +ZA[171]=ZA[169]+ZMa(ZA[165],ZA[162],ZA[168])+ZR30(ZA[168]); +ZA[172]=(ZCh(ZA[170],ZA[167],ZA[164])+ZA[161]+ZA[39]+0xf40e3585U)+ZR26(ZA[170]); +ZA[41]=ZR15(ZA[39])+ZA[34]+ZR25(ZA[25])+ZA[26]; +ZA[173]=ZA[162]+ZA[172]; +ZA[174]=ZA[172]+ZMa(ZA[168],ZA[165],ZA[171])+ZR30(ZA[171]); +ZA[175]=(ZCh(ZA[173],ZA[170],ZA[167])+ZA[164]+ZA[40]+0x106aa070U)+ZR26(ZA[173]); +ZA[42]=ZR15(ZA[40])+ZA[35]+ZR25(ZA[27])+ZA[25]; +ZA[176]=ZA[165]+ZA[175]; +ZA[177]=ZA[175]+ZMa(ZA[171],ZA[168],ZA[174])+ZR30(ZA[174]); +ZA[178]=(ZCh(ZA[176],ZA[173],ZA[170])+ZA[167]+ZA[41]+0x19a4c116U)+ZR26(ZA[176]); +ZA[43]=ZR15(ZA[41])+ZA[36]+ZR25(ZA[28])+ZA[27]; +ZA[179]=ZA[168]+ZA[178]; +ZA[180]=ZA[178]+ZMa(ZA[174],ZA[171],ZA[177])+ZR30(ZA[177]); +ZA[181]=(ZCh(ZA[179],ZA[176],ZA[173])+ZA[170]+ZA[42]+0x1e376c08U)+ZR26(ZA[179]); +ZA[44]=ZR15(ZA[42])+ZA[37]+ZR25(ZA[29])+ZA[28]; +ZA[182]=ZA[171]+ZA[181]; +ZA[183]=ZA[181]+ZMa(ZA[177],ZA[174],ZA[180])+ZR30(ZA[180]); +ZA[184]=(ZCh(ZA[182],ZA[179],ZA[176])+ZA[173]+ZA[43]+0x2748774cU)+ZR26(ZA[182]); +ZA[45]=ZR15(ZA[43])+ZA[38]+ZR25(ZA[30])+ZA[29]; +ZA[185]=ZA[174]+ZA[184]; +ZA[186]=ZA[184]+ZMa(ZA[180],ZA[177],ZA[183])+ZR30(ZA[183]); +ZA[187]=(ZCh(ZA[185],ZA[182],ZA[179])+ZA[176]+ZA[44]+0x34b0bcb5U)+ZR26(ZA[185]); +ZA[46]=ZR15(ZA[44])+ZA[39]+ZR25(ZA[31])+ZA[30]; +ZA[188]=ZA[177]+ZA[187]; +ZA[189]=ZA[187]+ZMa(ZA[183],ZA[180],ZA[186])+ZR30(ZA[186]); +ZA[190]=(ZCh(ZA[188],ZA[185],ZA[182])+ZA[179]+ZA[45]+0x391c0cb3U)+ZR26(ZA[188]); +ZA[47]=ZR15(ZA[45])+ZA[40]+ZR25(ZA[32])+ZA[31]; +ZA[191]=ZA[180]+ZA[190]; +ZA[192]=ZA[190]+ZMa(ZA[186],ZA[183],ZA[189])+ZR30(ZA[189]); +ZA[193]=(ZCh(ZA[191],ZA[188],ZA[185])+ZA[182]+ZA[46]+0x4ed8aa4aU)+ZR26(ZA[191]); +ZA[48]=ZR15(ZA[46])+ZA[41]+ZR25(ZA[33])+ZA[32]; +ZA[194]=ZA[183]+ZA[193]; +ZA[195]=ZA[193]+ZMa(ZA[189],ZA[186],ZA[192])+ZR30(ZA[192]); +ZA[196]=(ZCh(ZA[194],ZA[191],ZA[188])+ZA[185]+ZA[47]+0x5b9cca4fU)+ZR26(ZA[194]); +ZA[49]=ZR15(ZA[47])+ZA[42]+ZR25(ZA[34])+ZA[33]; +ZA[197]=ZA[186]+ZA[196]; +ZA[198]=ZA[196]+ZMa(ZA[192],ZA[189],ZA[195])+ZR30(ZA[195]); +ZA[199]=(ZCh(ZA[197],ZA[194],ZA[191])+ZA[188]+ZA[48]+0x682e6ff3U)+ZR26(ZA[197]); +ZA[50]=ZR15(ZA[48])+ZA[43]+ZR25(ZA[35])+ZA[34]; +ZA[200]=ZA[189]+ZA[199]; +ZA[201]=ZA[199]+ZMa(ZA[195],ZA[192],ZA[198])+ZR30(ZA[198]); +ZA[202]=(ZCh(ZA[200],ZA[197],ZA[194])+ZA[191]+ZA[49]+0x748f82eeU)+ZR26(ZA[200]); +ZA[51]=ZR15(ZA[49])+ZA[44]+ZR25(ZA[36])+ZA[35]; +ZA[203]=ZA[192]+ZA[202]; +ZA[204]=ZA[202]+ZMa(ZA[198],ZA[195],ZA[201])+ZR30(ZA[201]); +ZA[205]=(ZCh(ZA[203],ZA[200],ZA[197])+ZA[194]+ZA[50]+0x78a5636fU)+ZR26(ZA[203]); +ZA[52]=ZR15(ZA[50])+ZA[45]+ZR25(ZA[37])+ZA[36]; +ZA[206]=ZA[195]+ZA[205]; +ZA[207]=ZA[205]+ZMa(ZA[201],ZA[198],ZA[204])+ZR30(ZA[204]); +ZA[208]=(ZCh(ZA[206],ZA[203],ZA[200])+ZA[197]+ZA[51]+0x84c87814U)+ZR26(ZA[206]); +ZA[53]=ZR15(ZA[51])+ZA[46]+ZR25(ZA[38])+ZA[37]; +ZA[209]=ZA[198]+ZA[208]; +ZA[210]=ZA[208]+ZMa(ZA[204],ZA[201],ZA[207])+ZR30(ZA[207]); +ZA[211]=(ZCh(ZA[209],ZA[206],ZA[203])+ZA[200]+ZA[52]+0x8cc70208U)+ZR26(ZA[209]); +ZA[54]=ZR15(ZA[52])+ZA[47]+ZR25(ZA[39])+ZA[38]; +ZA[212]=ZA[201]+ZA[211]; +ZA[213]=ZA[211]+ZMa(ZA[207],ZA[204],ZA[210])+ZR30(ZA[210]); +ZA[214]=(ZCh(ZA[212],ZA[209],ZA[206])+ZA[203]+ZA[53]+0x90befffaU)+ZR26(ZA[212]); +ZA[215]=ZA[204]+ZA[214]; +ZA[216]=ZA[214]+ZMa(ZA[210],ZA[207],ZA[213])+ZR30(ZA[213]); +ZA[217]=(ZCh(ZA[215],ZA[212],ZA[209])+ZA[206]+ZA[54]+0xa4506cebU)+ZR26(ZA[215]); +ZA[219]=ZA[217]+ZMa(ZA[213],ZA[210],ZA[216])+ZR30(ZA[216]); +ZA[218]=ZA[207]+ZA[217]; +ZA[220]=(ZCh(ZA[218],ZA[215],ZA[212])+ZA[209]+ZR15(ZA[53])+ZA[48]+ZR25(ZA[40])+ZA[39]+0xbef9a3f7U)+ZR26(ZA[218]); +ZA[221]=ZA[210]+ZA[220]; +ZA[222]=ZA[220]+ZMa(ZA[216],ZA[213],ZA[219])+ZR30(ZA[219]); +ZA[223]=(ZCh(ZA[221],ZA[218],ZA[215])+ZA[212]+ZR15(ZA[54])+ZA[49]+ZR25(ZA[41])+ZA[40]+0xc67178f2U)+ZR26(ZA[221]); +ZA[225]=ZA[222]+state1; +ZA[224]=ZA[223]+ZMa(ZA[219],ZA[216],ZA[222])+ZR30(ZA[222])+state0; +ZA[235]=ZA[224]+0x98c7e2a2U; +ZA[238]=(ZCh(ZA[235],0x510e527fU,0x9b05688cU)+ZA[225]+0x90bb1e3cU)+ZR26(ZA[235]); +ZA[226]=ZA[219]+state2; +ZA[236]=ZA[224]+0xfc08884dU; +ZA[242]=ZA[238]+0x3c6ef372U; +ZA[243]=(ZCh(ZA[242],ZA[235],0x510e527fU)+ZA[226]+0x50c6645bU)+ZR26(ZA[242]); +ZA[227]=ZA[216]+state3; +ZA[239]=ZA[238]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[236])+ZR30(ZA[236]); +ZA[244]=ZA[243]+0xbb67ae85U; +ZA[246]=(ZCh(ZA[244],ZA[242],ZA[235])+ZA[227]+0x3ac42e24U)+ZR26(ZA[244]); +ZA[228]=ZA[213]+ZA[223]+state4; +ZA[247]=ZA[246]+0x6a09e667U; +ZA[245]=ZMa(ZA[236],0x6a09e667U,ZA[239])+ZR30(ZA[239])+ZA[243]; +ZA[229]=ZA[221]+state5; +ZA[249]=(ZCh(ZA[247],ZA[244],ZA[242])+ZA[228]+ZA[224]+0xd21ea4fdU)+ZR26(ZA[247]); +ZA[250]=ZA[236]+ZA[249]; +ZA[248]=ZA[246]+ZMa(ZA[239],ZA[236],ZA[245])+ZR30(ZA[245]); +ZA[230]=ZA[218]+state6; +ZA[253]=(ZCh(ZA[250],ZA[247],ZA[244])+ZA[242]+ZA[229]+0x59f111f1U)+ZR26(ZA[250]); +ZA[254]=ZA[239]+ZA[253]; +ZA[251]=ZA[249]+ZMa(ZA[245],ZA[239],ZA[248])+ZR30(ZA[248]); +ZA[231]=ZA[215]+state7; +ZA[256]=(ZCh(ZA[254],ZA[250],ZA[247])+ZA[244]+ZA[230]+0x923f82a4U)+ZR26(ZA[254]); +ZA[257]=ZA[245]+ZA[256]; +ZA[255]=ZA[253]+ZMa(ZA[248],ZA[245],ZA[251])+ZR30(ZA[251]); +ZA[260]=(ZCh(ZA[257],ZA[254],ZA[250])+ZA[247]+ZA[231]+0xab1c5ed5U)+ZR26(ZA[257]); +ZA[261]=ZA[248]+ZA[260]; +ZA[258]=ZMa(ZA[251],ZA[248],ZA[255])+ZR30(ZA[255])+ZA[256]; +ZA[263]=(ZCh(ZA[261],ZA[257],ZA[254])+ZA[250]+0x5807aa98U)+ZR26(ZA[261]); +ZA[264]=ZA[251]+ZA[263]; +ZA[262]=ZMa(ZA[255],ZA[251],ZA[258])+ZR30(ZA[258])+ZA[260]; +ZA[267]=(ZCh(ZA[264],ZA[261],ZA[257])+ZA[254]+0x12835b01U)+ZR26(ZA[264]); +ZA[268]=ZA[255]+ZA[267]; +ZA[265]=ZMa(ZA[258],ZA[255],ZA[262])+ZR30(ZA[262])+ZA[263]; +ZA[270]=(ZCh(ZA[268],ZA[264],ZA[261])+ZA[257]+0x243185beU)+ZR26(ZA[268]); +ZA[271]=ZA[258]+ZA[270]; +ZA[269]=ZMa(ZA[262],ZA[258],ZA[265])+ZR30(ZA[265])+ZA[267]; +ZA[275]=(ZCh(ZA[271],ZA[268],ZA[264])+ZA[261]+0x550c7dc3U)+ZR26(ZA[271]); +ZA[276]=ZA[262]+ZA[275]; +ZA[272]=ZMa(ZA[265],ZA[262],ZA[269])+ZR30(ZA[269])+ZA[270]; +ZA[278]=(ZCh(ZA[276],ZA[271],ZA[268])+ZA[264]+0x72be5d74U)+ZR26(ZA[276]); +ZA[279]=ZA[265]+ZA[278]; +ZA[277]=ZMa(ZA[269],ZA[265],ZA[272])+ZR30(ZA[272])+ZA[275]; +ZA[283]=(ZCh(ZA[279],ZA[276],ZA[271])+ZA[268]+0x80deb1feU)+ZR26(ZA[279]); +ZA[284]=ZA[269]+ZA[283]; +ZA[280]=ZA[278]+ZMa(ZA[272],ZA[269],ZA[277])+ZR30(ZA[277]); +ZA[286]=(ZCh(ZA[284],ZA[279],ZA[276])+ZA[271]+0x9bdc06a7U)+ZR26(ZA[284]); +ZA[237]=ZR25(ZA[225])+ZA[224]; +ZA[287]=ZA[272]+ZA[286]; +ZA[285]=ZA[283]+ZMa(ZA[277],ZA[272],ZA[280])+ZR30(ZA[280]); +ZA[289]=(ZCh(ZA[287],ZA[284],ZA[279])+ZA[276]+0xc19bf274U)+ZR26(ZA[287]); +ZA[232]=ZR25(ZA[226])+ZA[225]+0x00a00000U; +ZA[290]=ZA[277]+ZA[289]; +ZA[288]=ZA[286]+ZMa(ZA[280],ZA[277],ZA[285])+ZR30(ZA[285]); +ZA[292]=(ZCh(ZA[290],ZA[287],ZA[284])+ZA[279]+ZA[237]+0xe49b69c1U)+ZR26(ZA[290]); +ZA[293]=ZA[280]+ZA[292]; +ZA[291]=ZA[289]+ZMa(ZA[285],ZA[280],ZA[288])+ZR30(ZA[288]); +ZA[295]=(ZCh(ZA[293],ZA[290],ZA[287])+ZA[284]+ZA[232]+0xefbe4786U)+ZR26(ZA[293]); +ZA[240]=ZR15(ZA[237])+ZR25(ZA[227])+ZA[226]; +ZA[233]=ZR15(ZA[232])+ZA[227]+ZR25(ZA[228]); +ZA[296]=ZA[285]+ZA[295]; +ZA[294]=ZA[292]+ZMa(ZA[288],ZA[285],ZA[291])+ZR30(ZA[291]); +ZA[298]=(ZCh(ZA[296],ZA[293],ZA[290])+ZA[287]+0x0fc19dc6U+ZA[240])+ZR26(ZA[296]); +ZA[252]=ZR15(ZA[240])+ZR25(ZA[229])+ZA[228]; +ZA[299]=ZA[288]+ZA[298]; +ZA[297]=ZA[295]+ZMa(ZA[291],ZA[288],ZA[294])+ZR30(ZA[294]); +ZA[301]=(ZCh(ZA[299],ZA[296],ZA[293])+ZA[290]+ZA[233]+0x240ca1ccU)+ZR26(ZA[299]); +ZA[234]=ZR15(ZA[233])+ZR25(ZA[230])+ZA[229]; +ZA[302]=ZA[291]+ZA[301]; +ZA[300]=ZA[298]+ZMa(ZA[294],ZA[291],ZA[297])+ZR30(ZA[297]); +ZA[310]=(ZCh(ZA[302],ZA[299],ZA[296])+ZA[293]+ZA[252]+0x2de92c6fU)+ZR26(ZA[302]); +ZA[259]=ZR15(ZA[252])+ZA[230]+0x00000100U+ZR25(ZA[231]); +ZA[335]=ZA[294]+ZA[310]; +ZA[303]=ZA[301]+ZMa(ZA[297],ZA[294],ZA[300])+ZR30(ZA[300]); +ZA[337]=(ZCh(ZA[335],ZA[302],ZA[299])+ZA[296]+ZA[234]+0x4a7484aaU)+ZR26(ZA[335]); +ZA[241]=ZA[237]+ZR15(ZA[234])+ZA[231]+0x11002000U; +ZA[338]=ZA[297]+ZA[337]; +ZA[336]=ZMa(ZA[300],ZA[297],ZA[303])+ZR30(ZA[303])+ZA[310]; +ZA[340]=(ZCh(ZA[338],ZA[335],ZA[302])+ZA[299]+ZA[259]+0x5cb0a9dcU)+ZR26(ZA[338]); +ZA[266]=ZR15(ZA[259])+ZA[232]+0x80000000U; +ZA[341]=ZA[300]+ZA[340]; +ZA[339]=ZMa(ZA[303],ZA[300],ZA[336])+ZR30(ZA[336])+ZA[337]; +ZA[343]=(ZCh(ZA[341],ZA[338],ZA[335])+ZA[302]+ZA[241]+0x76f988daU)+ZR26(ZA[341]); +ZA[273]=ZR15(ZA[241])+ZA[240]; +ZA[344]=ZA[303]+ZA[343]; +ZA[342]=ZMa(ZA[336],ZA[303],ZA[339])+ZR30(ZA[339])+ZA[340]; +ZA[346]=(ZCh(ZA[344],ZA[341],ZA[338])+ZA[335]+ZA[266]+0x983e5152U)+ZR26(ZA[344]); +ZA[274]=ZR15(ZA[266])+ZA[233]; +ZA[347]=ZA[336]+ZA[346]; +ZA[345]=ZA[343]+ZMa(ZA[339],ZA[336],ZA[342])+ZR30(ZA[342]); +ZA[349]=(ZCh(ZA[347],ZA[344],ZA[341])+ZA[338]+ZA[273]+0xa831c66dU)+ZR26(ZA[347]); +ZA[281]=ZR15(ZA[273])+ZA[252]; +ZA[350]=ZA[339]+ZA[349]; +ZA[348]=ZA[346]+ZMa(ZA[342],ZA[339],ZA[345])+ZR30(ZA[345]); +ZA[352]=(ZCh(ZA[350],ZA[347],ZA[344])+ZA[341]+ZA[274]+0xb00327c8U)+ZR26(ZA[350]); +ZA[282]=ZR15(ZA[274])+ZA[234]; +ZA[353]=ZA[342]+ZA[352]; +ZA[351]=ZA[349]+ZMa(ZA[345],ZA[342],ZA[348])+ZR30(ZA[348]); +ZA[355]=(ZCh(ZA[353],ZA[350],ZA[347])+ZA[344]+ZA[281]+0xbf597fc7U)+ZR26(ZA[353]); +ZA[304]=ZR15(ZA[281])+ZA[259]; +ZA[356]=ZA[345]+ZA[355]; +ZA[354]=ZA[352]+ZMa(ZA[348],ZA[345],ZA[351])+ZR30(ZA[351]); +ZA[358]=(ZCh(ZA[356],ZA[353],ZA[350])+ZA[347]+ZA[282]+0xc6e00bf3U)+ZR26(ZA[356]); +ZA[305]=ZR15(ZA[282])+ZA[241]+0x00400022U; +ZA[359]=ZA[348]+ZA[358]; +ZA[357]=ZA[355]+ZMa(ZA[351],ZA[348],ZA[354])+ZR30(ZA[354]); +ZA[361]=(ZCh(ZA[359],ZA[356],ZA[353])+ZA[350]+ZA[304]+0xd5a79147U)+ZR26(ZA[359]); +ZA[306]=ZR15(ZA[304])+ZA[266]+ZR25(ZA[237])+0x00000100U; +ZA[362]=ZA[351]+ZA[361]; +ZA[360]=ZA[358]+ZMa(ZA[354],ZA[351],ZA[357])+ZR30(ZA[357]); +ZA[364]=(ZCh(ZA[362],ZA[359],ZA[356])+ZA[353]+ZA[305]+0x06ca6351U)+ZR26(ZA[362]); +ZA[307]=ZR15(ZA[305])+ZR25(ZA[232])+ZA[237]+ZA[273]; +ZA[365]=ZA[354]+ZA[364]; +ZA[363]=ZA[361]+ZMa(ZA[357],ZA[354],ZA[360])+ZR30(ZA[360]); +ZA[367]=(ZCh(ZA[365],ZA[362],ZA[359])+ZA[356]+ZA[306]+0x14292967U)+ZR26(ZA[365]); +ZA[308]=ZR15(ZA[306])+ZR25(ZA[240])+ZA[274]+ZA[232]; +ZA[368]=ZA[357]+ZA[367]; +ZA[366]=ZA[364]+ZMa(ZA[360],ZA[357],ZA[363])+ZR30(ZA[363]); +ZA[370]=(ZCh(ZA[368],ZA[365],ZA[362])+ZA[359]+ZA[307]+0x27b70a85U)+ZR26(ZA[368]); +ZA[309]=ZR15(ZA[307])+ZA[281]+ZR25(ZA[233])+ZA[240]; +ZA[371]=ZA[360]+ZA[370]; +ZA[369]=ZA[367]+ZMa(ZA[363],ZA[360],ZA[366])+ZR30(ZA[366]); +ZA[373]=(ZCh(ZA[371],ZA[368],ZA[365])+ZA[362]+ZA[308]+0x2e1b2138U)+ZR26(ZA[371]); +ZA[311]=ZR15(ZA[308])+ZA[282]+ZR25(ZA[252])+ZA[233]; +ZA[374]=ZA[363]+ZA[373]; +ZA[372]=ZA[370]+ZMa(ZA[366],ZA[363],ZA[369])+ZR30(ZA[369]); +ZA[376]=(ZCh(ZA[374],ZA[371],ZA[368])+ZA[365]+ZA[309]+0x4d2c6dfcU)+ZR26(ZA[374]); +ZA[312]=ZR15(ZA[309])+ZR25(ZA[234])+ZA[252]+ZA[304]; +ZA[377]=ZA[366]+ZA[376]; +ZA[375]=ZA[373]+ZMa(ZA[369],ZA[366],ZA[372])+ZR30(ZA[372]); +ZA[379]=(ZCh(ZA[377],ZA[374],ZA[371])+ZA[368]+ZA[311]+0x53380d13U)+ZR26(ZA[377]); +ZA[313]=ZR15(ZA[311])+ZA[305]+ZR25(ZA[259])+ZA[234]; +ZA[380]=ZA[369]+ZA[379]; +ZA[378]=ZA[376]+ZMa(ZA[372],ZA[369],ZA[375])+ZR30(ZA[375]); +ZA[382]=(ZCh(ZA[380],ZA[377],ZA[374])+ZA[371]+ZA[312]+0x650a7354U)+ZR26(ZA[380]); +ZA[314]=ZR15(ZA[312])+ZA[306]+ZR25(ZA[241])+ZA[259]; +ZA[383]=ZA[372]+ZA[382]; +ZA[381]=ZA[379]+ZMa(ZA[375],ZA[372],ZA[378])+ZR30(ZA[378]); +ZA[385]=(ZCh(ZA[383],ZA[380],ZA[377])+ZA[374]+ZA[313]+0x766a0abbU)+ZR26(ZA[383]); +ZA[315]=ZR15(ZA[313])+ZA[307]+ZR25(ZA[266])+ZA[241]; +ZA[386]=ZA[375]+ZA[385]; +ZA[384]=ZA[382]+ZMa(ZA[378],ZA[375],ZA[381])+ZR30(ZA[381]); +ZA[388]=(ZCh(ZA[386],ZA[383],ZA[380])+ZA[377]+ZA[314]+0x81c2c92eU)+ZR26(ZA[386]); +ZA[316]=ZR15(ZA[314])+ZA[308]+ZR25(ZA[273])+ZA[266]; +ZA[389]=ZA[378]+ZA[388]; +ZA[387]=ZA[385]+ZMa(ZA[381],ZA[378],ZA[384])+ZR30(ZA[384]); +ZA[391]=(ZCh(ZA[389],ZA[386],ZA[383])+ZA[380]+ZA[315]+0x92722c85U)+ZR26(ZA[389]); +ZA[317]=ZR15(ZA[315])+ZA[309]+ZR25(ZA[274])+ZA[273]; +ZA[392]=ZA[381]+ZA[391]; +ZA[390]=ZA[388]+ZMa(ZA[384],ZA[381],ZA[387])+ZR30(ZA[387]); +ZA[394]=(ZCh(ZA[392],ZA[389],ZA[386])+ZA[383]+ZA[316]+0xa2bfe8a1U)+ZR26(ZA[392]); +ZA[318]=ZR15(ZA[316])+ZA[311]+ZR25(ZA[281])+ZA[274]; +ZA[395]=ZA[384]+ZA[394]; +ZA[393]=ZA[391]+ZMa(ZA[387],ZA[384],ZA[390])+ZR30(ZA[390]); +ZA[397]=(ZCh(ZA[395],ZA[392],ZA[389])+ZA[386]+ZA[317]+0xa81a664bU)+ZR26(ZA[395]); +ZA[319]=ZR15(ZA[317])+ZA[312]+ZR25(ZA[282])+ZA[281]; +ZA[398]=ZA[387]+ZA[397]; +ZA[396]=ZA[394]+ZMa(ZA[390],ZA[387],ZA[393])+ZR30(ZA[393]); +ZA[400]=(ZCh(ZA[398],ZA[395],ZA[392])+ZA[389]+ZA[318]+0xc24b8b70U)+ZR26(ZA[398]); +ZA[320]=ZR15(ZA[318])+ZA[313]+ZR25(ZA[304])+ZA[282]; +ZA[401]=ZA[390]+ZA[400]; +ZA[399]=ZA[397]+ZMa(ZA[393],ZA[390],ZA[396])+ZR30(ZA[396]); +ZA[403]=(ZCh(ZA[401],ZA[398],ZA[395])+ZA[392]+ZA[319]+0xc76c51a3U)+ZR26(ZA[401]); +ZA[321]=ZR15(ZA[319])+ZA[314]+ZR25(ZA[305])+ZA[304]; +ZA[404]=ZA[393]+ZA[403]; +ZA[402]=ZA[400]+ZMa(ZA[396],ZA[393],ZA[399])+ZR30(ZA[399]); +ZA[406]=(ZCh(ZA[404],ZA[401],ZA[398])+ZA[395]+ZA[320]+0xd192e819U)+ZR26(ZA[404]); +ZA[322]=ZR15(ZA[320])+ZA[315]+ZR25(ZA[306])+ZA[305]; +ZA[407]=ZA[396]+ZA[406]; +ZA[405]=ZA[403]+ZMa(ZA[399],ZA[396],ZA[402])+ZR30(ZA[402]); +ZA[409]=(ZCh(ZA[407],ZA[404],ZA[401])+ZA[398]+ZA[321]+0xd6990624U)+ZR26(ZA[407]); +ZA[323]=ZR15(ZA[321])+ZA[316]+ZR25(ZA[307])+ZA[306]; +ZA[410]=ZA[399]+ZA[409]; +ZA[408]=ZA[406]+ZMa(ZA[402],ZA[399],ZA[405])+ZR30(ZA[405]); +ZA[412]=(ZCh(ZA[410],ZA[407],ZA[404])+ZA[401]+ZA[322]+0xf40e3585U)+ZR26(ZA[410]); +ZA[324]=ZR15(ZA[322])+ZA[317]+ZR25(ZA[308])+ZA[307]; +ZA[413]=ZA[402]+ZA[412]; +ZA[411]=ZA[409]+ZMa(ZA[405],ZA[402],ZA[408])+ZR30(ZA[408]); +ZA[415]=(ZCh(ZA[413],ZA[410],ZA[407])+ZA[404]+ZA[323]+0x106aa070U)+ZR26(ZA[413]); +ZA[325]=ZR15(ZA[323])+ZA[318]+ZR25(ZA[309])+ZA[308]; +ZA[416]=ZA[405]+ZA[415]; +ZA[414]=ZA[412]+ZMa(ZA[408],ZA[405],ZA[411])+ZR30(ZA[411]); +ZA[418]=(ZCh(ZA[416],ZA[413],ZA[410])+ZA[407]+ZA[324]+0x19a4c116U)+ZR26(ZA[416]); +ZA[326]=ZR15(ZA[324])+ZA[319]+ZR25(ZA[311])+ZA[309]; +ZA[419]=ZA[408]+ZA[418]; +ZA[417]=ZA[415]+ZMa(ZA[411],ZA[408],ZA[414])+ZR30(ZA[414]); +ZA[421]=(ZCh(ZA[419],ZA[416],ZA[413])+ZA[410]+ZA[325]+0x1e376c08U)+ZR26(ZA[419]); +ZA[327]=ZR15(ZA[325])+ZA[320]+ZR25(ZA[312])+ZA[311]; +ZA[422]=ZA[411]+ZA[421]; +ZA[420]=ZA[418]+ZMa(ZA[414],ZA[411],ZA[417])+ZR30(ZA[417]); +ZA[424]=(ZCh(ZA[422],ZA[419],ZA[416])+ZA[413]+ZA[326]+0x2748774cU)+ZR26(ZA[422]); +ZA[328]=ZR15(ZA[326])+ZA[321]+ZR25(ZA[313])+ZA[312]; +ZA[425]=ZA[414]+ZA[424]; +ZA[423]=ZA[421]+ZMa(ZA[417],ZA[414],ZA[420])+ZR30(ZA[420]); +ZA[427]=(ZCh(ZA[425],ZA[422],ZA[419])+ZA[416]+ZA[327]+0x34b0bcb5U)+ZR26(ZA[425]); +ZA[329]=ZR15(ZA[327])+ZA[322]+ZR25(ZA[314])+ZA[313]; +ZA[428]=ZA[417]+ZA[427]; +ZA[426]=ZA[424]+ZMa(ZA[420],ZA[417],ZA[423])+ZR30(ZA[423]); +ZA[430]=(ZCh(ZA[428],ZA[425],ZA[422])+ZA[419]+ZA[328]+0x391c0cb3U)+ZR26(ZA[428]); +ZA[330]=ZR15(ZA[328])+ZA[323]+ZR25(ZA[315])+ZA[314]; +ZA[431]=ZA[420]+ZA[430]; +ZA[429]=ZA[427]+ZMa(ZA[423],ZA[420],ZA[426])+ZR30(ZA[426]); +ZA[433]=(ZCh(ZA[431],ZA[428],ZA[425])+ZA[422]+ZA[329]+0x4ed8aa4aU)+ZR26(ZA[431]); +ZA[331]=ZR15(ZA[329])+ZA[324]+ZR25(ZA[316])+ZA[315]; +ZA[434]=ZA[423]+ZA[433]; +ZA[432]=ZA[430]+ZMa(ZA[426],ZA[423],ZA[429])+ZR30(ZA[429]); +ZA[436]=(ZCh(ZA[434],ZA[431],ZA[428])+ZA[425]+ZA[330]+0x5b9cca4fU)+ZR26(ZA[434]); +ZA[332]=ZR15(ZA[330])+ZA[325]+ZR25(ZA[317])+ZA[316]; +ZA[437]=ZA[426]+ZA[436]; +ZA[435]=ZA[433]+ZMa(ZA[429],ZA[426],ZA[432])+ZR30(ZA[432]); +ZA[439]=(ZCh(ZA[437],ZA[434],ZA[431])+ZA[428]+ZA[331]+0x682e6ff3U)+ZR26(ZA[437]); +ZA[333]=ZR15(ZA[331])+ZA[326]+ZR25(ZA[318])+ZA[317]; +ZA[440]=ZA[429]+ZA[439]; +ZA[438]=ZA[436]+ZMa(ZA[432],ZA[429],ZA[435])+ZR30(ZA[435]); +ZA[442]=(ZCh(ZA[440],ZA[437],ZA[434])+ZA[431]+ZA[332]+0x748f82eeU)+ZR26(ZA[440]); +ZA[334]=ZR15(ZA[332])+ZA[327]+ZR25(ZA[319])+ZA[318]; +ZA[443]=ZA[432]+ZA[442]; +ZA[441]=ZA[439]+ZMa(ZA[435],ZA[432],ZA[438])+ZR30(ZA[438]); +ZA[444]=(ZCh(ZA[443],ZA[440],ZA[437])+ZA[434]+ZA[435]+ZA[333]+0x78a5636fU)+ZR26(ZA[443]); +ZA[445]=(ZCh(ZA[444],ZA[443],ZA[440])+ZA[438]+ZA[437]+ZA[334]+0x84c87814U)+ZR26(ZA[444]); +ZA[446]=(ZCh(ZA[445],ZA[444],ZA[443])+ZA[441]+ZA[440]+ZR15(ZA[333])+ZA[328]+ZR25(ZA[320])+ZA[319]+0x8cc70208U)+ZR26(ZA[445]); +ZA[447]=(ZCh(ZA[446],ZA[445],ZA[444])+ZA[442]+ZMa(ZA[438],ZA[435],ZA[441])+ZR30(ZA[441])+ZA[443]+ZR15(ZA[334])+ZA[329]+ZR25(ZA[321])+ZA[320])+ZR26(ZA[446]); #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS4) - bool result = any(ZA[924] == 0x136032EDU); + bool result = any(ZA[447] == 0x136032EDU); if (result) { - if (ZA[924].x == 0x136032EDU) + if (ZA[447].x == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[924].y == 0x136032EDU) + if (ZA[447].y == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; - if (ZA[924].z == 0x136032EDU) + if (ZA[447].z == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z; - if (ZA[924].w == 0x136032EDU) + if (ZA[447].w == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w; } #elif defined(VECTORS2) - bool result = any(ZA[924] == 0x136032EDU); + bool result = any(ZA[447] == 0x136032EDU); if (result) { - if (ZA[924].x == 0x136032EDU) + if (ZA[447].x == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[924].y == 0x136032EDU) + if (ZA[447].y == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; } #else - if (ZA[924] == 0x136032EDU) + if (ZA[447] == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce] = Znonce; #endif } From 6121c2f17d700d09b03928b925ef8ea3715d398f Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 27 Feb 2012 11:56:08 +1100 Subject: [PATCH 034/117] Reuse variables to decrease total number used in diablo kernel. --- diablo120222.cl | 912 ++++++++++++++++++++++++------------------------ 1 file changed, 456 insertions(+), 456 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index fa00124d..573887b2 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -60,486 +60,486 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( __global uint * output) { - z ZA[448]; + z ZA[25]; const z Znonce = base + (uint)(get_global_id(0)); -ZA[4]=Znonce+PreVal4_state0; -ZA[5]=(ZCh(ZA[4],b1,c1)+d1)+ZR26(ZA[4]); -ZA[11]=Znonce+PreVal4_T1; -ZA[6]=ZA[5]+h1; -ZA[7]=(ZCh(ZA[6],ZA[4],b1)+c1_plus_k5)+ZR26(ZA[6]); -ZA[12]=ZMa(f1,g1,ZA[11])+ZR30(ZA[11])+ZA[5]; -ZA[8]=ZA[7]+g1; -ZA[9]=(ZCh(ZA[8],ZA[6],ZA[4])+b1_plus_k6)+ZR26(ZA[8]); -ZA[13]=ZMa(ZA[11],f1,ZA[12])+ZR30(ZA[12])+ZA[7]; -ZA[10]=ZA[9]+f1; -ZA[14]=ZMa(ZA[12],ZA[11],ZA[13])+ZR30(ZA[13])+ZA[9]; -ZA[55]=Znonce+PreVal4_state0_k7+ZCh(ZA[10],ZA[8],ZA[6])+ZR26(ZA[10]); -ZA[56]=ZA[55]+ZA[11]; -ZA[57]=ZA[55]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]); -ZA[58]=(ZCh(ZA[56],ZA[10],ZA[8])+ZA[6]+0xd807aa98U)+ZR26(ZA[56]); -ZA[59]=ZA[58]+ZA[12]; -ZA[60]=ZA[58]+ZMa(ZA[14],ZA[13],ZA[57])+ZR30(ZA[57]); -ZA[61]=(ZCh(ZA[59],ZA[56],ZA[10])+ZA[8]+0x12835b01U)+ZR26(ZA[59]); -ZA[62]=ZA[61]+ZA[13]; -ZA[63]=ZA[61]+ZMa(ZA[57],ZA[14],ZA[60])+ZR30(ZA[60]); -ZA[64]=(ZCh(ZA[62],ZA[59],ZA[56])+ZA[10]+0x243185beU)+ZR26(ZA[62]); -ZA[65]=ZA[64]+ZA[14]; -ZA[66]=ZA[64]+ZMa(ZA[60],ZA[57],ZA[63])+ZR30(ZA[63]); -ZA[67]=(ZCh(ZA[65],ZA[62],ZA[59])+ZA[56]+0x550c7dc3U)+ZR26(ZA[65]); -ZA[68]=ZA[67]+ZA[57]; -ZA[69]=ZA[67]+ZMa(ZA[63],ZA[60],ZA[66])+ZR30(ZA[66]); -ZA[70]=(ZCh(ZA[68],ZA[65],ZA[62])+ZA[59]+0x72be5d74U)+ZR26(ZA[68]); -ZA[71]=ZA[70]+ZA[60]; -ZA[72]=ZA[70]+ZMa(ZA[66],ZA[63],ZA[69])+ZR30(ZA[69]); -ZA[73]=(ZCh(ZA[71],ZA[68],ZA[65])+ZA[62]+0x80deb1feU)+ZR26(ZA[71]); -ZA[74]=ZA[63]+ZA[73]; -ZA[75]=ZA[73]+ZMa(ZA[69],ZA[66],ZA[72])+ZR30(ZA[72]); -ZA[76]=(ZCh(ZA[74],ZA[71],ZA[68])+ZA[65]+0x9bdc06a7U)+ZR26(ZA[74]); -ZA[77]=ZA[66]+ZA[76]; -ZA[78]=ZA[76]+ZMa(ZA[72],ZA[69],ZA[75])+ZR30(ZA[75]); -ZA[79]=(ZCh(ZA[77],ZA[74],ZA[71])+ZA[68]+0xc19bf3f4U)+ZR26(ZA[77]); -ZA[80]=ZA[69]+ZA[79]; -ZA[81]=ZA[79]+ZMa(ZA[75],ZA[72],ZA[78])+ZR30(ZA[78]); -ZA[82]=(ZCh(ZA[80],ZA[77],ZA[74])+ZA[71]+W16_plus_K16)+ZR26(ZA[80]); +ZA[2]=Znonce+PreVal4_state0; +ZA[3]=(ZCh(ZA[2],b1,c1)+d1)+ZR26(ZA[2]); +ZA[8]=Znonce+PreVal4_T1; +ZA[4]=ZA[3]+h1; +ZA[5]=(ZCh(ZA[4],ZA[2],b1)+c1_plus_k5)+ZR26(ZA[4]); +ZA[3]=ZMa(f1,g1,ZA[8])+ZR30(ZA[8])+ZA[3]; +ZA[6]=ZA[5]+g1; +ZA[2]=(ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6)+ZR26(ZA[6]); +ZA[5]=ZMa(ZA[8],f1,ZA[3])+ZR30(ZA[3])+ZA[5]; +ZA[7]=ZA[2]+f1; +ZA[2]=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5])+ZA[2]; +ZA[10]=Znonce+PreVal4_state0_k7+ZCh(ZA[7],ZA[6],ZA[4])+ZR26(ZA[7]); +ZA[8]=ZA[10]+ZA[8]; +ZA[10]=ZA[10]+ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); +ZA[4]=(ZCh(ZA[8],ZA[7],ZA[6])+ZA[4]+0xd807aa98U)+ZR26(ZA[8]); +ZA[3]=ZA[4]+ZA[3]; +ZA[4]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); +ZA[6]=(ZCh(ZA[3],ZA[8],ZA[7])+ZA[6]+0x12835b01U)+ZR26(ZA[3]); +ZA[5]=ZA[6]+ZA[5]; +ZA[6]=ZA[6]+ZMa(ZA[10],ZA[2],ZA[4])+ZR30(ZA[4]); +ZA[7]=(ZCh(ZA[5],ZA[3],ZA[8])+ZA[7]+0x243185beU)+ZR26(ZA[5]); +ZA[2]=ZA[7]+ZA[2]; +ZA[7]=ZA[7]+ZMa(ZA[4],ZA[10],ZA[6])+ZR30(ZA[6]); +ZA[8]=(ZCh(ZA[2],ZA[5],ZA[3])+ZA[8]+0x550c7dc3U)+ZR26(ZA[2]); +ZA[10]=ZA[8]+ZA[10]; +ZA[8]=ZA[8]+ZMa(ZA[6],ZA[4],ZA[7])+ZR30(ZA[7]); +ZA[3]=(ZCh(ZA[10],ZA[2],ZA[5])+ZA[3]+0x72be5d74U)+ZR26(ZA[10]); +ZA[4]=ZA[3]+ZA[4]; +ZA[3]=ZA[3]+ZMa(ZA[7],ZA[6],ZA[8])+ZR30(ZA[8]); +ZA[5]=(ZCh(ZA[4],ZA[10],ZA[2])+ZA[5]+0x80deb1feU)+ZR26(ZA[4]); +ZA[6]=ZA[6]+ZA[5]; +ZA[5]=ZA[5]+ZMa(ZA[8],ZA[7],ZA[3])+ZR30(ZA[3]); +ZA[2]=(ZCh(ZA[6],ZA[4],ZA[10])+ZA[2]+0x9bdc06a7U)+ZR26(ZA[6]); +ZA[7]=ZA[7]+ZA[2]; +ZA[2]=ZA[2]+ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); +ZA[10]=(ZCh(ZA[7],ZA[6],ZA[4])+ZA[10]+0xc19bf3f4U)+ZR26(ZA[7]); +ZA[8]=ZA[8]+ZA[10]; +ZA[10]=ZA[10]+ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); +ZA[4]=(ZCh(ZA[8],ZA[7],ZA[6])+ZA[4]+W16_plus_K16)+ZR26(ZA[8]); ZA[0]=ZR25(Znonce)+W18; -ZA[84]=ZA[82]+ZMa(ZA[78],ZA[75],ZA[81])+ZR30(ZA[81]); -ZA[83]=ZA[72]+ZA[82]; -ZA[85]=(ZCh(ZA[83],ZA[80],ZA[77])+ZA[74]+W17_plus_K17)+ZR26(ZA[83]); -ZA[86]=ZA[75]+ZA[85]; -ZA[87]=ZA[85]+ZMa(ZA[81],ZA[78],ZA[84])+ZR30(ZA[84]); -ZA[15]=Znonce+W19; -ZA[88]=(ZCh(ZA[86],ZA[83],ZA[80])+ZA[77]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[86]); +ZA[11]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); +ZA[4]=ZA[3]+ZA[4]; +ZA[6]=(ZCh(ZA[4],ZA[8],ZA[7])+ZA[6]+W17_plus_K17)+ZR26(ZA[4]); +ZA[5]=ZA[5]+ZA[6]; +ZA[6]=ZA[6]+ZMa(ZA[10],ZA[2],ZA[11])+ZR30(ZA[11]); +ZA[3]=Znonce+W19; +ZA[7]=(ZCh(ZA[5],ZA[4],ZA[8])+ZA[7]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[5]); ZA[1]=ZR15(ZA[0])+0x80000000U; -ZA[90]=ZA[88]+ZMa(ZA[84],ZA[81],ZA[87])+ZR30(ZA[87]); -ZA[89]=ZA[78]+ZA[88]; -ZA[91]=(ZCh(ZA[89],ZA[86],ZA[83])+ZA[80]+ZA[15]+0x240ca1ccU)+ZR26(ZA[89]); -ZA[16]=ZR15(ZA[15]); -ZA[93]=ZA[91]+ZMa(ZA[87],ZA[84],ZA[90])+ZR30(ZA[90]); -ZA[92]=ZA[81]+ZA[91]; -ZA[94]=(ZCh(ZA[92],ZA[89],ZA[86])+ZA[83]+ZA[1]+0x2de92c6fU)+ZR26(ZA[92]); -ZA[2]=ZR15(ZA[1])+0x00000280U; -ZA[96]=ZA[94]+ZMa(ZA[90],ZA[87],ZA[93])+ZR30(ZA[93]); -ZA[95]=ZA[84]+ZA[94]; -ZA[97]=(ZCh(ZA[95],ZA[92],ZA[89])+ZA[86]+ZA[16]+0x4a7484aaU)+ZR26(ZA[95]); -ZA[17]=ZR15(ZA[16])+W16; -ZA[99]=ZA[97]+ZMa(ZA[93],ZA[90],ZA[96])+ZR30(ZA[96]); -ZA[98]=ZA[87]+ZA[97]; -ZA[100]=(ZCh(ZA[98],ZA[95],ZA[92])+ZA[89]+ZA[2]+0x5cb0a9dcU)+ZR26(ZA[98]); -ZA[3]=ZR15(ZA[2])+W17; -ZA[102]=ZA[100]+ZMa(ZA[96],ZA[93],ZA[99])+ZR30(ZA[99]); -ZA[101]=ZA[90]+ZA[100]; -ZA[103]=(ZCh(ZA[101],ZA[98],ZA[95])+ZA[92]+ZA[17]+0x76f988daU)+ZR26(ZA[101]); -ZA[18]=ZR15(ZA[17])+ZA[0]; -ZA[105]=ZA[103]+ZMa(ZA[99],ZA[96],ZA[102])+ZR30(ZA[102]); -ZA[104]=ZA[93]+ZA[103]; -ZA[106]=(ZCh(ZA[104],ZA[101],ZA[98])+ZA[95]+ZA[3]+0x983e5152U)+ZR26(ZA[104]); -ZA[20]=ZR15(ZA[3])+ZA[15]; -ZA[107]=ZA[96]+ZA[106]; -ZA[108]=ZA[106]+ZMa(ZA[102],ZA[99],ZA[105])+ZR30(ZA[105]); -ZA[109]=(ZCh(ZA[107],ZA[104],ZA[101])+ZA[98]+ZA[18]+0xa831c66dU)+ZR26(ZA[107]); -ZA[19]=ZR15(ZA[18])+ZA[1]; -ZA[111]=ZA[109]+ZMa(ZA[105],ZA[102],ZA[108])+ZR30(ZA[108]); -ZA[110]=ZA[99]+ZA[109]; -ZA[112]=(ZCh(ZA[110],ZA[107],ZA[104])+ZA[101]+ZA[20]+0xb00327c8U)+ZR26(ZA[110]); -ZA[22]=ZR15(ZA[20])+ZA[16]; -ZA[114]=ZA[112]+ZMa(ZA[108],ZA[105],ZA[111])+ZR30(ZA[111]); -ZA[113]=ZA[102]+ZA[112]; -ZA[115]=(ZCh(ZA[113],ZA[110],ZA[107])+ZA[104]+ZA[19]+0xbf597fc7U)+ZR26(ZA[113]); -ZA[21]=ZR15(ZA[19])+ZA[2]; -ZA[117]=ZA[115]+ZMa(ZA[111],ZA[108],ZA[114])+ZR30(ZA[114]); -ZA[116]=ZA[105]+ZA[115]; -ZA[118]=(ZCh(ZA[116],ZA[113],ZA[110])+ZA[107]+ZA[22]+0xc6e00bf3U)+ZR26(ZA[116]); -ZA[23]=ZR15(ZA[22])+ZA[17]+0x00A00055U; -ZA[120]=ZA[118]+ZMa(ZA[114],ZA[111],ZA[117])+ZR30(ZA[117]); -ZA[119]=ZA[108]+ZA[118]; -ZA[121]=(ZCh(ZA[119],ZA[116],ZA[113])+ZA[110]+ZA[21]+0xd5a79147U)+ZR26(ZA[119]); -ZA[24]=ZR15(ZA[21])+ZA[3]+W31; -ZA[123]=ZA[121]+ZMa(ZA[117],ZA[114],ZA[120])+ZR30(ZA[120]); -ZA[122]=ZA[111]+ZA[121]; -ZA[124]=(ZCh(ZA[122],ZA[119],ZA[116])+ZA[113]+ZA[23]+0x06ca6351U)+ZR26(ZA[122]); -ZA[26]=ZR15(ZA[23])+ZA[18]+W32; -ZA[126]=ZA[124]+ZMa(ZA[120],ZA[117],ZA[123])+ZR30(ZA[123]); -ZA[125]=ZA[114]+ZA[124]; -ZA[127]=(ZCh(ZA[125],ZA[122],ZA[119])+ZA[116]+ZA[24]+0x14292967U)+ZR26(ZA[125]); -ZA[25]=ZR15(ZA[24])+ZA[20]+ZR25(ZA[0])+W17; -ZA[128]=ZA[117]+ZA[127]; -ZA[129]=ZA[127]+ZMa(ZA[123],ZA[120],ZA[126])+ZR30(ZA[126]); -ZA[130]=(ZCh(ZA[128],ZA[125],ZA[122])+ZA[119]+ZA[26]+0x27b70a85U)+ZR26(ZA[128]); -ZA[27]=ZR15(ZA[26])+ZR25(ZA[15])+ZA[0]+ZA[19]; -ZA[132]=ZA[130]+ZMa(ZA[126],ZA[123],ZA[129])+ZR30(ZA[129]); -ZA[131]=ZA[120]+ZA[130]; -ZA[133]=(ZCh(ZA[131],ZA[128],ZA[125])+ZA[122]+ZA[25]+0x2e1b2138U)+ZR26(ZA[131]); -ZA[28]=ZR15(ZA[25])+ZA[15]+ZR25(ZA[1])+ZA[22]; -ZA[134]=ZA[123]+ZA[133]; -ZA[135]=ZA[133]+ZMa(ZA[129],ZA[126],ZA[132])+ZR30(ZA[132]); -ZA[136]=(ZCh(ZA[134],ZA[131],ZA[128])+ZA[125]+ZA[27]+0x4d2c6dfcU)+ZR26(ZA[134]); -ZA[29]=ZR15(ZA[27])+ZR25(ZA[16])+ZA[1]+ZA[21]; -ZA[138]=ZA[136]+ZMa(ZA[132],ZA[129],ZA[135])+ZR30(ZA[135]); -ZA[137]=ZA[126]+ZA[136]; -ZA[139]=(ZCh(ZA[137],ZA[134],ZA[131])+ZA[128]+ZA[28]+0x53380d13U)+ZR26(ZA[137]); -ZA[30]=ZR15(ZA[28])+ZA[16]+ZR25(ZA[2])+ZA[23]; -ZA[140]=ZA[129]+ZA[139]; -ZA[141]=ZA[139]+ZMa(ZA[135],ZA[132],ZA[138])+ZR30(ZA[138]); -ZA[142]=(ZCh(ZA[140],ZA[137],ZA[134])+ZA[131]+ZA[29]+0x650a7354U)+ZR26(ZA[140]); -ZA[31]=ZR15(ZA[29])+ZR25(ZA[17])+ZA[2]+ZA[24]; -ZA[144]=ZA[142]+ZMa(ZA[138],ZA[135],ZA[141])+ZR30(ZA[141]); -ZA[143]=ZA[132]+ZA[142]; -ZA[145]=(ZCh(ZA[143],ZA[140],ZA[137])+ZA[134]+ZA[30]+0x766a0abbU)+ZR26(ZA[143]); -ZA[32]=ZR15(ZA[30])+ZA[17]+ZR25(ZA[3])+ZA[26]; -ZA[146]=ZA[135]+ZA[145]; -ZA[147]=ZA[145]+ZMa(ZA[141],ZA[138],ZA[144])+ZR30(ZA[144]); -ZA[148]=(ZCh(ZA[146],ZA[143],ZA[140])+ZA[137]+ZA[31]+0x81c2c92eU)+ZR26(ZA[146]); -ZA[33]=ZR15(ZA[31])+ZR25(ZA[18])+ZA[3]+ZA[25]; -ZA[149]=ZA[138]+ZA[148]; -ZA[150]=ZA[148]+ZMa(ZA[144],ZA[141],ZA[147])+ZR30(ZA[147]); -ZA[151]=(ZCh(ZA[149],ZA[146],ZA[143])+ZA[140]+ZA[32]+0x92722c85U)+ZR26(ZA[149]); -ZA[34]=ZR15(ZA[32])+ZR25(ZA[20])+ZA[18]+ZA[27]; -ZA[152]=ZA[141]+ZA[151]; -ZA[153]=ZA[151]+ZMa(ZA[147],ZA[144],ZA[150])+ZR30(ZA[150]); -ZA[154]=(ZCh(ZA[152],ZA[149],ZA[146])+ZA[143]+ZA[33]+0xa2bfe8a1U)+ZR26(ZA[152]); -ZA[35]=ZR15(ZA[33])+ZR25(ZA[19])+ZA[20]+ZA[28]; -ZA[155]=ZA[144]+ZA[154]; -ZA[156]=ZA[154]+ZMa(ZA[150],ZA[147],ZA[153])+ZR30(ZA[153]); -ZA[157]=(ZCh(ZA[155],ZA[152],ZA[149])+ZA[146]+ZA[34]+0xa81a664bU)+ZR26(ZA[155]); -ZA[36]=ZR15(ZA[34])+ZA[29]+ZR25(ZA[22])+ZA[19]; -ZA[159]=ZA[157]+ZMa(ZA[153],ZA[150],ZA[156])+ZR30(ZA[156]); -ZA[158]=ZA[147]+ZA[157]; -ZA[160]=(ZCh(ZA[158],ZA[155],ZA[152])+ZA[149]+ZA[35]+0xc24b8b70U)+ZR26(ZA[158]); -ZA[37]=ZR15(ZA[35])+ZA[30]+ZR25(ZA[21])+ZA[22]; -ZA[161]=ZA[150]+ZA[160]; -ZA[162]=ZA[160]+ZMa(ZA[156],ZA[153],ZA[159])+ZR30(ZA[159]); -ZA[163]=(ZCh(ZA[161],ZA[158],ZA[155])+ZA[152]+ZA[36]+0xc76c51a3U)+ZR26(ZA[161]); -ZA[38]=ZR15(ZA[36])+ZR25(ZA[23])+ZA[21]+ZA[31]; -ZA[164]=ZA[153]+ZA[163]; -ZA[165]=ZA[163]+ZMa(ZA[159],ZA[156],ZA[162])+ZR30(ZA[162]); -ZA[166]=(ZCh(ZA[164],ZA[161],ZA[158])+ZA[155]+ZA[37]+0xd192e819U)+ZR26(ZA[164]); -ZA[39]=ZR15(ZA[37])+ZR25(ZA[24])+ZA[23]+ZA[32]; -ZA[167]=ZA[156]+ZA[166]; -ZA[168]=ZA[166]+ZMa(ZA[162],ZA[159],ZA[165])+ZR30(ZA[165]); -ZA[169]=(ZCh(ZA[167],ZA[164],ZA[161])+ZA[158]+ZA[38]+0xd6990624U)+ZR26(ZA[167]); -ZA[40]=ZR15(ZA[38])+ZA[33]+ZR25(ZA[26])+ZA[24]; -ZA[170]=ZA[159]+ZA[169]; -ZA[171]=ZA[169]+ZMa(ZA[165],ZA[162],ZA[168])+ZR30(ZA[168]); -ZA[172]=(ZCh(ZA[170],ZA[167],ZA[164])+ZA[161]+ZA[39]+0xf40e3585U)+ZR26(ZA[170]); -ZA[41]=ZR15(ZA[39])+ZA[34]+ZR25(ZA[25])+ZA[26]; -ZA[173]=ZA[162]+ZA[172]; -ZA[174]=ZA[172]+ZMa(ZA[168],ZA[165],ZA[171])+ZR30(ZA[171]); -ZA[175]=(ZCh(ZA[173],ZA[170],ZA[167])+ZA[164]+ZA[40]+0x106aa070U)+ZR26(ZA[173]); -ZA[42]=ZR15(ZA[40])+ZA[35]+ZR25(ZA[27])+ZA[25]; -ZA[176]=ZA[165]+ZA[175]; -ZA[177]=ZA[175]+ZMa(ZA[171],ZA[168],ZA[174])+ZR30(ZA[174]); -ZA[178]=(ZCh(ZA[176],ZA[173],ZA[170])+ZA[167]+ZA[41]+0x19a4c116U)+ZR26(ZA[176]); -ZA[43]=ZR15(ZA[41])+ZA[36]+ZR25(ZA[28])+ZA[27]; -ZA[179]=ZA[168]+ZA[178]; -ZA[180]=ZA[178]+ZMa(ZA[174],ZA[171],ZA[177])+ZR30(ZA[177]); -ZA[181]=(ZCh(ZA[179],ZA[176],ZA[173])+ZA[170]+ZA[42]+0x1e376c08U)+ZR26(ZA[179]); -ZA[44]=ZR15(ZA[42])+ZA[37]+ZR25(ZA[29])+ZA[28]; -ZA[182]=ZA[171]+ZA[181]; -ZA[183]=ZA[181]+ZMa(ZA[177],ZA[174],ZA[180])+ZR30(ZA[180]); -ZA[184]=(ZCh(ZA[182],ZA[179],ZA[176])+ZA[173]+ZA[43]+0x2748774cU)+ZR26(ZA[182]); -ZA[45]=ZR15(ZA[43])+ZA[38]+ZR25(ZA[30])+ZA[29]; -ZA[185]=ZA[174]+ZA[184]; -ZA[186]=ZA[184]+ZMa(ZA[180],ZA[177],ZA[183])+ZR30(ZA[183]); -ZA[187]=(ZCh(ZA[185],ZA[182],ZA[179])+ZA[176]+ZA[44]+0x34b0bcb5U)+ZR26(ZA[185]); -ZA[46]=ZR15(ZA[44])+ZA[39]+ZR25(ZA[31])+ZA[30]; -ZA[188]=ZA[177]+ZA[187]; -ZA[189]=ZA[187]+ZMa(ZA[183],ZA[180],ZA[186])+ZR30(ZA[186]); -ZA[190]=(ZCh(ZA[188],ZA[185],ZA[182])+ZA[179]+ZA[45]+0x391c0cb3U)+ZR26(ZA[188]); -ZA[47]=ZR15(ZA[45])+ZA[40]+ZR25(ZA[32])+ZA[31]; -ZA[191]=ZA[180]+ZA[190]; -ZA[192]=ZA[190]+ZMa(ZA[186],ZA[183],ZA[189])+ZR30(ZA[189]); -ZA[193]=(ZCh(ZA[191],ZA[188],ZA[185])+ZA[182]+ZA[46]+0x4ed8aa4aU)+ZR26(ZA[191]); -ZA[48]=ZR15(ZA[46])+ZA[41]+ZR25(ZA[33])+ZA[32]; -ZA[194]=ZA[183]+ZA[193]; -ZA[195]=ZA[193]+ZMa(ZA[189],ZA[186],ZA[192])+ZR30(ZA[192]); -ZA[196]=(ZCh(ZA[194],ZA[191],ZA[188])+ZA[185]+ZA[47]+0x5b9cca4fU)+ZR26(ZA[194]); -ZA[49]=ZR15(ZA[47])+ZA[42]+ZR25(ZA[34])+ZA[33]; -ZA[197]=ZA[186]+ZA[196]; -ZA[198]=ZA[196]+ZMa(ZA[192],ZA[189],ZA[195])+ZR30(ZA[195]); -ZA[199]=(ZCh(ZA[197],ZA[194],ZA[191])+ZA[188]+ZA[48]+0x682e6ff3U)+ZR26(ZA[197]); -ZA[50]=ZR15(ZA[48])+ZA[43]+ZR25(ZA[35])+ZA[34]; -ZA[200]=ZA[189]+ZA[199]; -ZA[201]=ZA[199]+ZMa(ZA[195],ZA[192],ZA[198])+ZR30(ZA[198]); -ZA[202]=(ZCh(ZA[200],ZA[197],ZA[194])+ZA[191]+ZA[49]+0x748f82eeU)+ZR26(ZA[200]); -ZA[51]=ZR15(ZA[49])+ZA[44]+ZR25(ZA[36])+ZA[35]; -ZA[203]=ZA[192]+ZA[202]; -ZA[204]=ZA[202]+ZMa(ZA[198],ZA[195],ZA[201])+ZR30(ZA[201]); -ZA[205]=(ZCh(ZA[203],ZA[200],ZA[197])+ZA[194]+ZA[50]+0x78a5636fU)+ZR26(ZA[203]); -ZA[52]=ZR15(ZA[50])+ZA[45]+ZR25(ZA[37])+ZA[36]; -ZA[206]=ZA[195]+ZA[205]; -ZA[207]=ZA[205]+ZMa(ZA[201],ZA[198],ZA[204])+ZR30(ZA[204]); -ZA[208]=(ZCh(ZA[206],ZA[203],ZA[200])+ZA[197]+ZA[51]+0x84c87814U)+ZR26(ZA[206]); -ZA[53]=ZR15(ZA[51])+ZA[46]+ZR25(ZA[38])+ZA[37]; -ZA[209]=ZA[198]+ZA[208]; -ZA[210]=ZA[208]+ZMa(ZA[204],ZA[201],ZA[207])+ZR30(ZA[207]); -ZA[211]=(ZCh(ZA[209],ZA[206],ZA[203])+ZA[200]+ZA[52]+0x8cc70208U)+ZR26(ZA[209]); -ZA[54]=ZR15(ZA[52])+ZA[47]+ZR25(ZA[39])+ZA[38]; -ZA[212]=ZA[201]+ZA[211]; -ZA[213]=ZA[211]+ZMa(ZA[207],ZA[204],ZA[210])+ZR30(ZA[210]); -ZA[214]=(ZCh(ZA[212],ZA[209],ZA[206])+ZA[203]+ZA[53]+0x90befffaU)+ZR26(ZA[212]); -ZA[215]=ZA[204]+ZA[214]; -ZA[216]=ZA[214]+ZMa(ZA[210],ZA[207],ZA[213])+ZR30(ZA[213]); -ZA[217]=(ZCh(ZA[215],ZA[212],ZA[209])+ZA[206]+ZA[54]+0xa4506cebU)+ZR26(ZA[215]); -ZA[219]=ZA[217]+ZMa(ZA[213],ZA[210],ZA[216])+ZR30(ZA[216]); -ZA[218]=ZA[207]+ZA[217]; -ZA[220]=(ZCh(ZA[218],ZA[215],ZA[212])+ZA[209]+ZR15(ZA[53])+ZA[48]+ZR25(ZA[40])+ZA[39]+0xbef9a3f7U)+ZR26(ZA[218]); -ZA[221]=ZA[210]+ZA[220]; -ZA[222]=ZA[220]+ZMa(ZA[216],ZA[213],ZA[219])+ZR30(ZA[219]); -ZA[223]=(ZCh(ZA[221],ZA[218],ZA[215])+ZA[212]+ZR15(ZA[54])+ZA[49]+ZR25(ZA[41])+ZA[40]+0xc67178f2U)+ZR26(ZA[221]); -ZA[225]=ZA[222]+state1; -ZA[224]=ZA[223]+ZMa(ZA[219],ZA[216],ZA[222])+ZR30(ZA[222])+state0; -ZA[235]=ZA[224]+0x98c7e2a2U; -ZA[238]=(ZCh(ZA[235],0x510e527fU,0x9b05688cU)+ZA[225]+0x90bb1e3cU)+ZR26(ZA[235]); -ZA[226]=ZA[219]+state2; -ZA[236]=ZA[224]+0xfc08884dU; -ZA[242]=ZA[238]+0x3c6ef372U; -ZA[243]=(ZCh(ZA[242],ZA[235],0x510e527fU)+ZA[226]+0x50c6645bU)+ZR26(ZA[242]); -ZA[227]=ZA[216]+state3; -ZA[239]=ZA[238]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[236])+ZR30(ZA[236]); -ZA[244]=ZA[243]+0xbb67ae85U; -ZA[246]=(ZCh(ZA[244],ZA[242],ZA[235])+ZA[227]+0x3ac42e24U)+ZR26(ZA[244]); -ZA[228]=ZA[213]+ZA[223]+state4; -ZA[247]=ZA[246]+0x6a09e667U; -ZA[245]=ZMa(ZA[236],0x6a09e667U,ZA[239])+ZR30(ZA[239])+ZA[243]; -ZA[229]=ZA[221]+state5; -ZA[249]=(ZCh(ZA[247],ZA[244],ZA[242])+ZA[228]+ZA[224]+0xd21ea4fdU)+ZR26(ZA[247]); -ZA[250]=ZA[236]+ZA[249]; -ZA[248]=ZA[246]+ZMa(ZA[239],ZA[236],ZA[245])+ZR30(ZA[245]); -ZA[230]=ZA[218]+state6; -ZA[253]=(ZCh(ZA[250],ZA[247],ZA[244])+ZA[242]+ZA[229]+0x59f111f1U)+ZR26(ZA[250]); -ZA[254]=ZA[239]+ZA[253]; -ZA[251]=ZA[249]+ZMa(ZA[245],ZA[239],ZA[248])+ZR30(ZA[248]); -ZA[231]=ZA[215]+state7; -ZA[256]=(ZCh(ZA[254],ZA[250],ZA[247])+ZA[244]+ZA[230]+0x923f82a4U)+ZR26(ZA[254]); -ZA[257]=ZA[245]+ZA[256]; -ZA[255]=ZA[253]+ZMa(ZA[248],ZA[245],ZA[251])+ZR30(ZA[251]); -ZA[260]=(ZCh(ZA[257],ZA[254],ZA[250])+ZA[247]+ZA[231]+0xab1c5ed5U)+ZR26(ZA[257]); -ZA[261]=ZA[248]+ZA[260]; -ZA[258]=ZMa(ZA[251],ZA[248],ZA[255])+ZR30(ZA[255])+ZA[256]; -ZA[263]=(ZCh(ZA[261],ZA[257],ZA[254])+ZA[250]+0x5807aa98U)+ZR26(ZA[261]); -ZA[264]=ZA[251]+ZA[263]; -ZA[262]=ZMa(ZA[255],ZA[251],ZA[258])+ZR30(ZA[258])+ZA[260]; -ZA[267]=(ZCh(ZA[264],ZA[261],ZA[257])+ZA[254]+0x12835b01U)+ZR26(ZA[264]); -ZA[268]=ZA[255]+ZA[267]; -ZA[265]=ZMa(ZA[258],ZA[255],ZA[262])+ZR30(ZA[262])+ZA[263]; -ZA[270]=(ZCh(ZA[268],ZA[264],ZA[261])+ZA[257]+0x243185beU)+ZR26(ZA[268]); -ZA[271]=ZA[258]+ZA[270]; -ZA[269]=ZMa(ZA[262],ZA[258],ZA[265])+ZR30(ZA[265])+ZA[267]; -ZA[275]=(ZCh(ZA[271],ZA[268],ZA[264])+ZA[261]+0x550c7dc3U)+ZR26(ZA[271]); -ZA[276]=ZA[262]+ZA[275]; -ZA[272]=ZMa(ZA[265],ZA[262],ZA[269])+ZR30(ZA[269])+ZA[270]; -ZA[278]=(ZCh(ZA[276],ZA[271],ZA[268])+ZA[264]+0x72be5d74U)+ZR26(ZA[276]); -ZA[279]=ZA[265]+ZA[278]; -ZA[277]=ZMa(ZA[269],ZA[265],ZA[272])+ZR30(ZA[272])+ZA[275]; -ZA[283]=(ZCh(ZA[279],ZA[276],ZA[271])+ZA[268]+0x80deb1feU)+ZR26(ZA[279]); -ZA[284]=ZA[269]+ZA[283]; -ZA[280]=ZA[278]+ZMa(ZA[272],ZA[269],ZA[277])+ZR30(ZA[277]); -ZA[286]=(ZCh(ZA[284],ZA[279],ZA[276])+ZA[271]+0x9bdc06a7U)+ZR26(ZA[284]); -ZA[237]=ZR25(ZA[225])+ZA[224]; -ZA[287]=ZA[272]+ZA[286]; -ZA[285]=ZA[283]+ZMa(ZA[277],ZA[272],ZA[280])+ZR30(ZA[280]); -ZA[289]=(ZCh(ZA[287],ZA[284],ZA[279])+ZA[276]+0xc19bf274U)+ZR26(ZA[287]); -ZA[232]=ZR25(ZA[226])+ZA[225]+0x00a00000U; -ZA[290]=ZA[277]+ZA[289]; -ZA[288]=ZA[286]+ZMa(ZA[280],ZA[277],ZA[285])+ZR30(ZA[285]); -ZA[292]=(ZCh(ZA[290],ZA[287],ZA[284])+ZA[279]+ZA[237]+0xe49b69c1U)+ZR26(ZA[290]); -ZA[293]=ZA[280]+ZA[292]; -ZA[291]=ZA[289]+ZMa(ZA[285],ZA[280],ZA[288])+ZR30(ZA[288]); -ZA[295]=(ZCh(ZA[293],ZA[290],ZA[287])+ZA[284]+ZA[232]+0xefbe4786U)+ZR26(ZA[293]); -ZA[240]=ZR15(ZA[237])+ZR25(ZA[227])+ZA[226]; -ZA[233]=ZR15(ZA[232])+ZA[227]+ZR25(ZA[228]); -ZA[296]=ZA[285]+ZA[295]; -ZA[294]=ZA[292]+ZMa(ZA[288],ZA[285],ZA[291])+ZR30(ZA[291]); -ZA[298]=(ZCh(ZA[296],ZA[293],ZA[290])+ZA[287]+0x0fc19dc6U+ZA[240])+ZR26(ZA[296]); -ZA[252]=ZR15(ZA[240])+ZR25(ZA[229])+ZA[228]; -ZA[299]=ZA[288]+ZA[298]; -ZA[297]=ZA[295]+ZMa(ZA[291],ZA[288],ZA[294])+ZR30(ZA[294]); -ZA[301]=(ZCh(ZA[299],ZA[296],ZA[293])+ZA[290]+ZA[233]+0x240ca1ccU)+ZR26(ZA[299]); -ZA[234]=ZR15(ZA[233])+ZR25(ZA[230])+ZA[229]; -ZA[302]=ZA[291]+ZA[301]; -ZA[300]=ZA[298]+ZMa(ZA[294],ZA[291],ZA[297])+ZR30(ZA[297]); -ZA[310]=(ZCh(ZA[302],ZA[299],ZA[296])+ZA[293]+ZA[252]+0x2de92c6fU)+ZR26(ZA[302]); -ZA[259]=ZR15(ZA[252])+ZA[230]+0x00000100U+ZR25(ZA[231]); -ZA[335]=ZA[294]+ZA[310]; -ZA[303]=ZA[301]+ZMa(ZA[297],ZA[294],ZA[300])+ZR30(ZA[300]); -ZA[337]=(ZCh(ZA[335],ZA[302],ZA[299])+ZA[296]+ZA[234]+0x4a7484aaU)+ZR26(ZA[335]); -ZA[241]=ZA[237]+ZR15(ZA[234])+ZA[231]+0x11002000U; -ZA[338]=ZA[297]+ZA[337]; -ZA[336]=ZMa(ZA[300],ZA[297],ZA[303])+ZR30(ZA[303])+ZA[310]; -ZA[340]=(ZCh(ZA[338],ZA[335],ZA[302])+ZA[299]+ZA[259]+0x5cb0a9dcU)+ZR26(ZA[338]); -ZA[266]=ZR15(ZA[259])+ZA[232]+0x80000000U; -ZA[341]=ZA[300]+ZA[340]; -ZA[339]=ZMa(ZA[303],ZA[300],ZA[336])+ZR30(ZA[336])+ZA[337]; -ZA[343]=(ZCh(ZA[341],ZA[338],ZA[335])+ZA[302]+ZA[241]+0x76f988daU)+ZR26(ZA[341]); -ZA[273]=ZR15(ZA[241])+ZA[240]; -ZA[344]=ZA[303]+ZA[343]; -ZA[342]=ZMa(ZA[336],ZA[303],ZA[339])+ZR30(ZA[339])+ZA[340]; -ZA[346]=(ZCh(ZA[344],ZA[341],ZA[338])+ZA[335]+ZA[266]+0x983e5152U)+ZR26(ZA[344]); -ZA[274]=ZR15(ZA[266])+ZA[233]; -ZA[347]=ZA[336]+ZA[346]; -ZA[345]=ZA[343]+ZMa(ZA[339],ZA[336],ZA[342])+ZR30(ZA[342]); -ZA[349]=(ZCh(ZA[347],ZA[344],ZA[341])+ZA[338]+ZA[273]+0xa831c66dU)+ZR26(ZA[347]); -ZA[281]=ZR15(ZA[273])+ZA[252]; -ZA[350]=ZA[339]+ZA[349]; -ZA[348]=ZA[346]+ZMa(ZA[342],ZA[339],ZA[345])+ZR30(ZA[345]); -ZA[352]=(ZCh(ZA[350],ZA[347],ZA[344])+ZA[341]+ZA[274]+0xb00327c8U)+ZR26(ZA[350]); -ZA[282]=ZR15(ZA[274])+ZA[234]; -ZA[353]=ZA[342]+ZA[352]; -ZA[351]=ZA[349]+ZMa(ZA[345],ZA[342],ZA[348])+ZR30(ZA[348]); -ZA[355]=(ZCh(ZA[353],ZA[350],ZA[347])+ZA[344]+ZA[281]+0xbf597fc7U)+ZR26(ZA[353]); -ZA[304]=ZR15(ZA[281])+ZA[259]; -ZA[356]=ZA[345]+ZA[355]; -ZA[354]=ZA[352]+ZMa(ZA[348],ZA[345],ZA[351])+ZR30(ZA[351]); -ZA[358]=(ZCh(ZA[356],ZA[353],ZA[350])+ZA[347]+ZA[282]+0xc6e00bf3U)+ZR26(ZA[356]); -ZA[305]=ZR15(ZA[282])+ZA[241]+0x00400022U; -ZA[359]=ZA[348]+ZA[358]; -ZA[357]=ZA[355]+ZMa(ZA[351],ZA[348],ZA[354])+ZR30(ZA[354]); -ZA[361]=(ZCh(ZA[359],ZA[356],ZA[353])+ZA[350]+ZA[304]+0xd5a79147U)+ZR26(ZA[359]); -ZA[306]=ZR15(ZA[304])+ZA[266]+ZR25(ZA[237])+0x00000100U; -ZA[362]=ZA[351]+ZA[361]; -ZA[360]=ZA[358]+ZMa(ZA[354],ZA[351],ZA[357])+ZR30(ZA[357]); -ZA[364]=(ZCh(ZA[362],ZA[359],ZA[356])+ZA[353]+ZA[305]+0x06ca6351U)+ZR26(ZA[362]); -ZA[307]=ZR15(ZA[305])+ZR25(ZA[232])+ZA[237]+ZA[273]; -ZA[365]=ZA[354]+ZA[364]; -ZA[363]=ZA[361]+ZMa(ZA[357],ZA[354],ZA[360])+ZR30(ZA[360]); -ZA[367]=(ZCh(ZA[365],ZA[362],ZA[359])+ZA[356]+ZA[306]+0x14292967U)+ZR26(ZA[365]); -ZA[308]=ZR15(ZA[306])+ZR25(ZA[240])+ZA[274]+ZA[232]; -ZA[368]=ZA[357]+ZA[367]; -ZA[366]=ZA[364]+ZMa(ZA[360],ZA[357],ZA[363])+ZR30(ZA[363]); -ZA[370]=(ZCh(ZA[368],ZA[365],ZA[362])+ZA[359]+ZA[307]+0x27b70a85U)+ZR26(ZA[368]); -ZA[309]=ZR15(ZA[307])+ZA[281]+ZR25(ZA[233])+ZA[240]; -ZA[371]=ZA[360]+ZA[370]; -ZA[369]=ZA[367]+ZMa(ZA[363],ZA[360],ZA[366])+ZR30(ZA[366]); -ZA[373]=(ZCh(ZA[371],ZA[368],ZA[365])+ZA[362]+ZA[308]+0x2e1b2138U)+ZR26(ZA[371]); -ZA[311]=ZR15(ZA[308])+ZA[282]+ZR25(ZA[252])+ZA[233]; -ZA[374]=ZA[363]+ZA[373]; -ZA[372]=ZA[370]+ZMa(ZA[366],ZA[363],ZA[369])+ZR30(ZA[369]); -ZA[376]=(ZCh(ZA[374],ZA[371],ZA[368])+ZA[365]+ZA[309]+0x4d2c6dfcU)+ZR26(ZA[374]); -ZA[312]=ZR15(ZA[309])+ZR25(ZA[234])+ZA[252]+ZA[304]; -ZA[377]=ZA[366]+ZA[376]; -ZA[375]=ZA[373]+ZMa(ZA[369],ZA[366],ZA[372])+ZR30(ZA[372]); -ZA[379]=(ZCh(ZA[377],ZA[374],ZA[371])+ZA[368]+ZA[311]+0x53380d13U)+ZR26(ZA[377]); -ZA[313]=ZR15(ZA[311])+ZA[305]+ZR25(ZA[259])+ZA[234]; -ZA[380]=ZA[369]+ZA[379]; -ZA[378]=ZA[376]+ZMa(ZA[372],ZA[369],ZA[375])+ZR30(ZA[375]); -ZA[382]=(ZCh(ZA[380],ZA[377],ZA[374])+ZA[371]+ZA[312]+0x650a7354U)+ZR26(ZA[380]); -ZA[314]=ZR15(ZA[312])+ZA[306]+ZR25(ZA[241])+ZA[259]; -ZA[383]=ZA[372]+ZA[382]; -ZA[381]=ZA[379]+ZMa(ZA[375],ZA[372],ZA[378])+ZR30(ZA[378]); -ZA[385]=(ZCh(ZA[383],ZA[380],ZA[377])+ZA[374]+ZA[313]+0x766a0abbU)+ZR26(ZA[383]); -ZA[315]=ZR15(ZA[313])+ZA[307]+ZR25(ZA[266])+ZA[241]; -ZA[386]=ZA[375]+ZA[385]; -ZA[384]=ZA[382]+ZMa(ZA[378],ZA[375],ZA[381])+ZR30(ZA[381]); -ZA[388]=(ZCh(ZA[386],ZA[383],ZA[380])+ZA[377]+ZA[314]+0x81c2c92eU)+ZR26(ZA[386]); -ZA[316]=ZR15(ZA[314])+ZA[308]+ZR25(ZA[273])+ZA[266]; -ZA[389]=ZA[378]+ZA[388]; -ZA[387]=ZA[385]+ZMa(ZA[381],ZA[378],ZA[384])+ZR30(ZA[384]); -ZA[391]=(ZCh(ZA[389],ZA[386],ZA[383])+ZA[380]+ZA[315]+0x92722c85U)+ZR26(ZA[389]); -ZA[317]=ZR15(ZA[315])+ZA[309]+ZR25(ZA[274])+ZA[273]; -ZA[392]=ZA[381]+ZA[391]; -ZA[390]=ZA[388]+ZMa(ZA[384],ZA[381],ZA[387])+ZR30(ZA[387]); -ZA[394]=(ZCh(ZA[392],ZA[389],ZA[386])+ZA[383]+ZA[316]+0xa2bfe8a1U)+ZR26(ZA[392]); -ZA[318]=ZR15(ZA[316])+ZA[311]+ZR25(ZA[281])+ZA[274]; -ZA[395]=ZA[384]+ZA[394]; -ZA[393]=ZA[391]+ZMa(ZA[387],ZA[384],ZA[390])+ZR30(ZA[390]); -ZA[397]=(ZCh(ZA[395],ZA[392],ZA[389])+ZA[386]+ZA[317]+0xa81a664bU)+ZR26(ZA[395]); -ZA[319]=ZR15(ZA[317])+ZA[312]+ZR25(ZA[282])+ZA[281]; -ZA[398]=ZA[387]+ZA[397]; -ZA[396]=ZA[394]+ZMa(ZA[390],ZA[387],ZA[393])+ZR30(ZA[393]); -ZA[400]=(ZCh(ZA[398],ZA[395],ZA[392])+ZA[389]+ZA[318]+0xc24b8b70U)+ZR26(ZA[398]); -ZA[320]=ZR15(ZA[318])+ZA[313]+ZR25(ZA[304])+ZA[282]; -ZA[401]=ZA[390]+ZA[400]; -ZA[399]=ZA[397]+ZMa(ZA[393],ZA[390],ZA[396])+ZR30(ZA[396]); -ZA[403]=(ZCh(ZA[401],ZA[398],ZA[395])+ZA[392]+ZA[319]+0xc76c51a3U)+ZR26(ZA[401]); -ZA[321]=ZR15(ZA[319])+ZA[314]+ZR25(ZA[305])+ZA[304]; -ZA[404]=ZA[393]+ZA[403]; -ZA[402]=ZA[400]+ZMa(ZA[396],ZA[393],ZA[399])+ZR30(ZA[399]); -ZA[406]=(ZCh(ZA[404],ZA[401],ZA[398])+ZA[395]+ZA[320]+0xd192e819U)+ZR26(ZA[404]); -ZA[322]=ZR15(ZA[320])+ZA[315]+ZR25(ZA[306])+ZA[305]; -ZA[407]=ZA[396]+ZA[406]; -ZA[405]=ZA[403]+ZMa(ZA[399],ZA[396],ZA[402])+ZR30(ZA[402]); -ZA[409]=(ZCh(ZA[407],ZA[404],ZA[401])+ZA[398]+ZA[321]+0xd6990624U)+ZR26(ZA[407]); -ZA[323]=ZR15(ZA[321])+ZA[316]+ZR25(ZA[307])+ZA[306]; -ZA[410]=ZA[399]+ZA[409]; -ZA[408]=ZA[406]+ZMa(ZA[402],ZA[399],ZA[405])+ZR30(ZA[405]); -ZA[412]=(ZCh(ZA[410],ZA[407],ZA[404])+ZA[401]+ZA[322]+0xf40e3585U)+ZR26(ZA[410]); -ZA[324]=ZR15(ZA[322])+ZA[317]+ZR25(ZA[308])+ZA[307]; -ZA[413]=ZA[402]+ZA[412]; -ZA[411]=ZA[409]+ZMa(ZA[405],ZA[402],ZA[408])+ZR30(ZA[408]); -ZA[415]=(ZCh(ZA[413],ZA[410],ZA[407])+ZA[404]+ZA[323]+0x106aa070U)+ZR26(ZA[413]); -ZA[325]=ZR15(ZA[323])+ZA[318]+ZR25(ZA[309])+ZA[308]; -ZA[416]=ZA[405]+ZA[415]; -ZA[414]=ZA[412]+ZMa(ZA[408],ZA[405],ZA[411])+ZR30(ZA[411]); -ZA[418]=(ZCh(ZA[416],ZA[413],ZA[410])+ZA[407]+ZA[324]+0x19a4c116U)+ZR26(ZA[416]); -ZA[326]=ZR15(ZA[324])+ZA[319]+ZR25(ZA[311])+ZA[309]; -ZA[419]=ZA[408]+ZA[418]; -ZA[417]=ZA[415]+ZMa(ZA[411],ZA[408],ZA[414])+ZR30(ZA[414]); -ZA[421]=(ZCh(ZA[419],ZA[416],ZA[413])+ZA[410]+ZA[325]+0x1e376c08U)+ZR26(ZA[419]); -ZA[327]=ZR15(ZA[325])+ZA[320]+ZR25(ZA[312])+ZA[311]; -ZA[422]=ZA[411]+ZA[421]; -ZA[420]=ZA[418]+ZMa(ZA[414],ZA[411],ZA[417])+ZR30(ZA[417]); -ZA[424]=(ZCh(ZA[422],ZA[419],ZA[416])+ZA[413]+ZA[326]+0x2748774cU)+ZR26(ZA[422]); -ZA[328]=ZR15(ZA[326])+ZA[321]+ZR25(ZA[313])+ZA[312]; -ZA[425]=ZA[414]+ZA[424]; -ZA[423]=ZA[421]+ZMa(ZA[417],ZA[414],ZA[420])+ZR30(ZA[420]); -ZA[427]=(ZCh(ZA[425],ZA[422],ZA[419])+ZA[416]+ZA[327]+0x34b0bcb5U)+ZR26(ZA[425]); -ZA[329]=ZR15(ZA[327])+ZA[322]+ZR25(ZA[314])+ZA[313]; -ZA[428]=ZA[417]+ZA[427]; -ZA[426]=ZA[424]+ZMa(ZA[420],ZA[417],ZA[423])+ZR30(ZA[423]); -ZA[430]=(ZCh(ZA[428],ZA[425],ZA[422])+ZA[419]+ZA[328]+0x391c0cb3U)+ZR26(ZA[428]); -ZA[330]=ZR15(ZA[328])+ZA[323]+ZR25(ZA[315])+ZA[314]; -ZA[431]=ZA[420]+ZA[430]; -ZA[429]=ZA[427]+ZMa(ZA[423],ZA[420],ZA[426])+ZR30(ZA[426]); -ZA[433]=(ZCh(ZA[431],ZA[428],ZA[425])+ZA[422]+ZA[329]+0x4ed8aa4aU)+ZR26(ZA[431]); -ZA[331]=ZR15(ZA[329])+ZA[324]+ZR25(ZA[316])+ZA[315]; -ZA[434]=ZA[423]+ZA[433]; -ZA[432]=ZA[430]+ZMa(ZA[426],ZA[423],ZA[429])+ZR30(ZA[429]); -ZA[436]=(ZCh(ZA[434],ZA[431],ZA[428])+ZA[425]+ZA[330]+0x5b9cca4fU)+ZR26(ZA[434]); -ZA[332]=ZR15(ZA[330])+ZA[325]+ZR25(ZA[317])+ZA[316]; -ZA[437]=ZA[426]+ZA[436]; -ZA[435]=ZA[433]+ZMa(ZA[429],ZA[426],ZA[432])+ZR30(ZA[432]); -ZA[439]=(ZCh(ZA[437],ZA[434],ZA[431])+ZA[428]+ZA[331]+0x682e6ff3U)+ZR26(ZA[437]); -ZA[333]=ZR15(ZA[331])+ZA[326]+ZR25(ZA[318])+ZA[317]; -ZA[440]=ZA[429]+ZA[439]; -ZA[438]=ZA[436]+ZMa(ZA[432],ZA[429],ZA[435])+ZR30(ZA[435]); -ZA[442]=(ZCh(ZA[440],ZA[437],ZA[434])+ZA[431]+ZA[332]+0x748f82eeU)+ZR26(ZA[440]); -ZA[334]=ZR15(ZA[332])+ZA[327]+ZR25(ZA[319])+ZA[318]; -ZA[443]=ZA[432]+ZA[442]; -ZA[441]=ZA[439]+ZMa(ZA[435],ZA[432],ZA[438])+ZR30(ZA[438]); -ZA[444]=(ZCh(ZA[443],ZA[440],ZA[437])+ZA[434]+ZA[435]+ZA[333]+0x78a5636fU)+ZR26(ZA[443]); -ZA[445]=(ZCh(ZA[444],ZA[443],ZA[440])+ZA[438]+ZA[437]+ZA[334]+0x84c87814U)+ZR26(ZA[444]); -ZA[446]=(ZCh(ZA[445],ZA[444],ZA[443])+ZA[441]+ZA[440]+ZR15(ZA[333])+ZA[328]+ZR25(ZA[320])+ZA[319]+0x8cc70208U)+ZR26(ZA[445]); -ZA[447]=(ZCh(ZA[446],ZA[445],ZA[444])+ZA[442]+ZMa(ZA[438],ZA[435],ZA[441])+ZR30(ZA[441])+ZA[443]+ZR15(ZA[334])+ZA[329]+ZR25(ZA[321])+ZA[320])+ZR26(ZA[446]); +ZA[12]=ZA[7]+ZMa(ZA[11],ZA[10],ZA[6])+ZR30(ZA[6]); +ZA[7]=ZA[2]+ZA[7]; +ZA[8]=(ZCh(ZA[7],ZA[5],ZA[4])+ZA[8]+ZA[3]+0x240ca1ccU)+ZR26(ZA[7]); +ZA[2]=ZR15(ZA[3]); +ZA[13]=ZA[8]+ZMa(ZA[6],ZA[11],ZA[12])+ZR30(ZA[12]); +ZA[10]=ZA[10]+ZA[8]; +ZA[4]=(ZCh(ZA[10],ZA[7],ZA[5])+ZA[4]+ZA[1]+0x2de92c6fU)+ZR26(ZA[10]); +ZA[8]=ZR15(ZA[1])+0x00000280U; +ZA[14]=ZA[4]+ZMa(ZA[12],ZA[6],ZA[13])+ZR30(ZA[13]); +ZA[4]=ZA[11]+ZA[4]; +ZA[5]=(ZCh(ZA[4],ZA[10],ZA[7])+ZA[5]+ZA[2]+0x4a7484aaU)+ZR26(ZA[4]); +ZA[11]=ZR15(ZA[2])+W16; +ZA[15]=ZA[5]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]); +ZA[5]=ZA[6]+ZA[5]; +ZA[6]=(ZCh(ZA[5],ZA[4],ZA[10])+ZA[7]+ZA[8]+0x5cb0a9dcU)+ZR26(ZA[5]); +ZA[7]=ZR15(ZA[8])+W17; +ZA[16]=ZA[6]+ZMa(ZA[14],ZA[13],ZA[15])+ZR30(ZA[15]); +ZA[6]=ZA[12]+ZA[6]; +ZA[10]=(ZCh(ZA[6],ZA[5],ZA[4])+ZA[10]+ZA[11]+0x76f988daU)+ZR26(ZA[6]); +ZA[12]=ZR15(ZA[11])+ZA[0]; +ZA[17]=ZA[10]+ZMa(ZA[15],ZA[14],ZA[16])+ZR30(ZA[16]); +ZA[10]=ZA[13]+ZA[10]; +ZA[13]=(ZCh(ZA[10],ZA[6],ZA[5])+ZA[4]+ZA[7]+0x983e5152U)+ZR26(ZA[10]); +ZA[4]=ZR15(ZA[7])+ZA[3]; +ZA[14]=ZA[14]+ZA[13]; +ZA[13]=ZA[13]+ZMa(ZA[16],ZA[15],ZA[17])+ZR30(ZA[17]); +ZA[5]=(ZCh(ZA[14],ZA[10],ZA[6])+ZA[5]+ZA[12]+0xa831c66dU)+ZR26(ZA[14]); +ZA[9]=ZR15(ZA[12])+ZA[1]; +ZA[18]=ZA[5]+ZMa(ZA[17],ZA[16],ZA[13])+ZR30(ZA[13]); +ZA[5]=ZA[15]+ZA[5]; +ZA[15]=(ZCh(ZA[5],ZA[14],ZA[10])+ZA[6]+ZA[4]+0xb00327c8U)+ZR26(ZA[5]); +ZA[6]=ZR15(ZA[4])+ZA[2]; +ZA[19]=ZA[15]+ZMa(ZA[13],ZA[17],ZA[18])+ZR30(ZA[18]); +ZA[15]=ZA[16]+ZA[15]; +ZA[16]=(ZCh(ZA[15],ZA[5],ZA[14])+ZA[10]+ZA[9]+0xbf597fc7U)+ZR26(ZA[15]); +ZA[10]=ZR15(ZA[9])+ZA[8]; +ZA[20]=ZA[16]+ZMa(ZA[18],ZA[13],ZA[19])+ZR30(ZA[19]); +ZA[16]=ZA[17]+ZA[16]; +ZA[14]=(ZCh(ZA[16],ZA[15],ZA[5])+ZA[14]+ZA[6]+0xc6e00bf3U)+ZR26(ZA[16]); +ZA[17]=ZR15(ZA[6])+ZA[11]+0x00A00055U; +ZA[21]=ZA[14]+ZMa(ZA[19],ZA[18],ZA[20])+ZR30(ZA[20]); +ZA[14]=ZA[13]+ZA[14]; +ZA[13]=(ZCh(ZA[14],ZA[16],ZA[15])+ZA[5]+ZA[10]+0xd5a79147U)+ZR26(ZA[14]); +ZA[5]=ZR15(ZA[10])+ZA[7]+W31; +ZA[22]=ZA[13]+ZMa(ZA[20],ZA[19],ZA[21])+ZR30(ZA[21]); +ZA[13]=ZA[18]+ZA[13]; +ZA[18]=(ZCh(ZA[13],ZA[14],ZA[16])+ZA[15]+ZA[17]+0x06ca6351U)+ZR26(ZA[13]); +ZA[15]=ZR15(ZA[17])+ZA[12]+W32; +ZA[23]=ZA[18]+ZMa(ZA[21],ZA[20],ZA[22])+ZR30(ZA[22]); +ZA[18]=ZA[19]+ZA[18]; +ZA[19]=(ZCh(ZA[18],ZA[13],ZA[14])+ZA[16]+ZA[5]+0x14292967U)+ZR26(ZA[18]); +ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+W17; +ZA[20]=ZA[20]+ZA[19]; +ZA[19]=ZA[19]+ZMa(ZA[22],ZA[21],ZA[23])+ZR30(ZA[23]); +ZA[14]=(ZCh(ZA[20],ZA[18],ZA[13])+ZA[14]+ZA[15]+0x27b70a85U)+ZR26(ZA[20]); +ZA[0]=ZR15(ZA[15])+ZR25(ZA[3])+ZA[0]+ZA[9]; +ZA[24]=ZA[14]+ZMa(ZA[23],ZA[22],ZA[19])+ZR30(ZA[19]); +ZA[14]=ZA[21]+ZA[14]; +ZA[21]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[13]+ZA[16]+0x2e1b2138U)+ZR26(ZA[14]); +ZA[3]=ZR15(ZA[16])+ZA[3]+ZR25(ZA[1])+ZA[6]; +ZA[22]=ZA[22]+ZA[21]; +ZA[21]=ZA[21]+ZMa(ZA[19],ZA[23],ZA[24])+ZR30(ZA[24]); +ZA[13]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x4d2c6dfcU)+ZR26(ZA[22]); +ZA[1]=ZR15(ZA[0])+ZR25(ZA[2])+ZA[1]+ZA[10]; +ZA[18]=ZA[13]+ZMa(ZA[24],ZA[19],ZA[21])+ZR30(ZA[21]); +ZA[13]=ZA[23]+ZA[13]; +ZA[20]=(ZCh(ZA[13],ZA[22],ZA[14])+ZA[20]+ZA[3]+0x53380d13U)+ZR26(ZA[13]); +ZA[2]=ZR15(ZA[3])+ZA[2]+ZR25(ZA[8])+ZA[17]; +ZA[23]=ZA[19]+ZA[20]; +ZA[20]=ZA[20]+ZMa(ZA[21],ZA[24],ZA[18])+ZR30(ZA[18]); +ZA[19]=(ZCh(ZA[23],ZA[13],ZA[22])+ZA[14]+ZA[1]+0x650a7354U)+ZR26(ZA[23]); +ZA[8]=ZR15(ZA[1])+ZR25(ZA[11])+ZA[8]+ZA[5]; +ZA[14]=ZA[19]+ZMa(ZA[18],ZA[21],ZA[20])+ZR30(ZA[20]); +ZA[19]=ZA[24]+ZA[19]; +ZA[22]=(ZCh(ZA[19],ZA[23],ZA[13])+ZA[22]+ZA[2]+0x766a0abbU)+ZR26(ZA[19]); +ZA[11]=ZR15(ZA[2])+ZA[11]+ZR25(ZA[7])+ZA[15]; +ZA[24]=ZA[21]+ZA[22]; +ZA[22]=ZA[22]+ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); +ZA[21]=(ZCh(ZA[24],ZA[19],ZA[23])+ZA[13]+ZA[8]+0x81c2c92eU)+ZR26(ZA[24]); +ZA[7]=ZR15(ZA[8])+ZR25(ZA[12])+ZA[7]+ZA[16]; +ZA[18]=ZA[18]+ZA[21]; +ZA[21]=ZA[21]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); +ZA[23]=(ZCh(ZA[18],ZA[24],ZA[19])+ZA[23]+ZA[11]+0x92722c85U)+ZR26(ZA[18]); +ZA[12]=ZR15(ZA[11])+ZR25(ZA[4])+ZA[12]+ZA[0]; +ZA[20]=ZA[20]+ZA[23]; +ZA[13]=ZA[23]+ZMa(ZA[22],ZA[14],ZA[21])+ZR30(ZA[21]); +ZA[23]=(ZCh(ZA[20],ZA[18],ZA[24])+ZA[19]+ZA[7]+0xa2bfe8a1U)+ZR26(ZA[20]); +ZA[4]=ZR15(ZA[7])+ZR25(ZA[9])+ZA[4]+ZA[3]; +ZA[14]=ZA[14]+ZA[23]; +ZA[23]=ZA[23]+ZMa(ZA[21],ZA[22],ZA[13])+ZR30(ZA[13]); +ZA[24]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[24]+ZA[12]+0xa81a664bU)+ZR26(ZA[14]); +ZA[9]=ZR15(ZA[12])+ZA[1]+ZR25(ZA[6])+ZA[9]; +ZA[19]=ZA[24]+ZMa(ZA[13],ZA[21],ZA[23])+ZR30(ZA[23]); +ZA[22]=ZA[22]+ZA[24]; +ZA[18]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[4]+0xc24b8b70U)+ZR26(ZA[22]); +ZA[6]=ZR15(ZA[4])+ZA[2]+ZR25(ZA[10])+ZA[6]; +ZA[24]=ZA[21]+ZA[18]; +ZA[18]=ZA[18]+ZMa(ZA[23],ZA[13],ZA[19])+ZR30(ZA[19]); +ZA[20]=(ZCh(ZA[24],ZA[22],ZA[14])+ZA[20]+ZA[9]+0xc76c51a3U)+ZR26(ZA[24]); +ZA[10]=ZR15(ZA[9])+ZR25(ZA[17])+ZA[10]+ZA[8]; +ZA[13]=ZA[13]+ZA[20]; +ZA[20]=ZA[20]+ZMa(ZA[19],ZA[23],ZA[18])+ZR30(ZA[18]); +ZA[14]=(ZCh(ZA[13],ZA[24],ZA[22])+ZA[14]+ZA[6]+0xd192e819U)+ZR26(ZA[13]); +ZA[17]=ZR15(ZA[6])+ZR25(ZA[5])+ZA[17]+ZA[11]; +ZA[21]=ZA[23]+ZA[14]; +ZA[14]=ZA[14]+ZMa(ZA[18],ZA[19],ZA[20])+ZR30(ZA[20]); +ZA[22]=(ZCh(ZA[21],ZA[13],ZA[24])+ZA[22]+ZA[10]+0xd6990624U)+ZR26(ZA[21]); +ZA[5]=ZR15(ZA[10])+ZA[7]+ZR25(ZA[15])+ZA[5]; +ZA[19]=ZA[19]+ZA[22]; +ZA[22]=ZA[22]+ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); +ZA[24]=(ZCh(ZA[19],ZA[21],ZA[13])+ZA[24]+ZA[17]+0xf40e3585U)+ZR26(ZA[19]); +ZA[15]=ZR15(ZA[17])+ZA[12]+ZR25(ZA[16])+ZA[15]; +ZA[18]=ZA[18]+ZA[24]; +ZA[23]=ZA[24]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); +ZA[13]=(ZCh(ZA[18],ZA[19],ZA[21])+ZA[13]+ZA[5]+0x106aa070U)+ZR26(ZA[18]); +ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+ZA[16]; +ZA[20]=ZA[20]+ZA[13]; +ZA[13]=ZA[13]+ZMa(ZA[22],ZA[14],ZA[23])+ZR30(ZA[23]); +ZA[21]=(ZCh(ZA[20],ZA[18],ZA[19])+ZA[21]+ZA[15]+0x19a4c116U)+ZR26(ZA[20]); +ZA[0]=ZR15(ZA[15])+ZA[9]+ZR25(ZA[3])+ZA[0]; +ZA[14]=ZA[14]+ZA[21]; +ZA[24]=ZA[21]+ZMa(ZA[23],ZA[22],ZA[13])+ZR30(ZA[13]); +ZA[19]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[19]+ZA[16]+0x1e376c08U)+ZR26(ZA[14]); +ZA[3]=ZR15(ZA[16])+ZA[6]+ZR25(ZA[1])+ZA[3]; +ZA[22]=ZA[22]+ZA[19]; +ZA[19]=ZA[19]+ZMa(ZA[13],ZA[23],ZA[24])+ZR30(ZA[24]); +ZA[18]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x2748774cU)+ZR26(ZA[22]); +ZA[1]=ZR15(ZA[0])+ZA[10]+ZR25(ZA[2])+ZA[1]; +ZA[23]=ZA[23]+ZA[18]; +ZA[21]=ZA[18]+ZMa(ZA[24],ZA[13],ZA[19])+ZR30(ZA[19]); +ZA[20]=(ZCh(ZA[23],ZA[22],ZA[14])+ZA[20]+ZA[3]+0x34b0bcb5U)+ZR26(ZA[23]); +ZA[2]=ZR15(ZA[3])+ZA[17]+ZR25(ZA[8])+ZA[2]; +ZA[13]=ZA[13]+ZA[20]; +ZA[20]=ZA[20]+ZMa(ZA[19],ZA[24],ZA[21])+ZR30(ZA[21]); +ZA[14]=(ZCh(ZA[13],ZA[23],ZA[22])+ZA[14]+ZA[1]+0x391c0cb3U)+ZR26(ZA[13]); +ZA[8]=ZR15(ZA[1])+ZA[5]+ZR25(ZA[11])+ZA[8]; +ZA[24]=ZA[24]+ZA[14]; +ZA[18]=ZA[14]+ZMa(ZA[21],ZA[19],ZA[20])+ZR30(ZA[20]); +ZA[22]=(ZCh(ZA[24],ZA[13],ZA[23])+ZA[22]+ZA[2]+0x4ed8aa4aU)+ZR26(ZA[24]); +ZA[11]=ZR15(ZA[2])+ZA[15]+ZR25(ZA[7])+ZA[11]; +ZA[19]=ZA[19]+ZA[22]; +ZA[22]=ZA[22]+ZMa(ZA[20],ZA[21],ZA[18])+ZR30(ZA[18]); +ZA[23]=(ZCh(ZA[19],ZA[24],ZA[13])+ZA[23]+ZA[8]+0x5b9cca4fU)+ZR26(ZA[19]); +ZA[7]=ZR15(ZA[8])+ZA[16]+ZR25(ZA[12])+ZA[7]; +ZA[21]=ZA[21]+ZA[23]; +ZA[23]=ZA[23]+ZMa(ZA[18],ZA[20],ZA[22])+ZR30(ZA[22]); +ZA[13]=(ZCh(ZA[21],ZA[19],ZA[24])+ZA[13]+ZA[11]+0x682e6ff3U)+ZR26(ZA[21]); +ZA[0]=ZR15(ZA[11])+ZA[0]+ZR25(ZA[4])+ZA[12]; +ZA[12]=ZA[20]+ZA[13]; +ZA[16]=ZA[13]+ZMa(ZA[22],ZA[18],ZA[23])+ZR30(ZA[23]); +ZA[20]=(ZCh(ZA[12],ZA[21],ZA[19])+ZA[24]+ZA[7]+0x748f82eeU)+ZR26(ZA[12]); +ZA[3]=ZR15(ZA[7])+ZA[3]+ZR25(ZA[9])+ZA[4]; +ZA[18]=ZA[18]+ZA[20]; +ZA[20]=ZA[20]+ZMa(ZA[23],ZA[22],ZA[16])+ZR30(ZA[16]); +ZA[19]=(ZCh(ZA[18],ZA[12],ZA[21])+ZA[19]+ZA[0]+0x78a5636fU)+ZR26(ZA[18]); +ZA[1]=ZR15(ZA[0])+ZA[1]+ZR25(ZA[6])+ZA[9]; +ZA[9]=ZA[22]+ZA[19]; +ZA[4]=ZA[19]+ZMa(ZA[16],ZA[23],ZA[20])+ZR30(ZA[20]); +ZA[0]=(ZCh(ZA[9],ZA[18],ZA[12])+ZA[21]+ZA[3]+0x84c87814U)+ZR26(ZA[9]); +ZA[2]=ZR15(ZA[3])+ZA[2]+ZR25(ZA[10])+ZA[6]; +ZA[6]=ZA[23]+ZA[0]; +ZA[0]=ZA[0]+ZMa(ZA[20],ZA[16],ZA[4])+ZR30(ZA[4]); +ZA[12]=(ZCh(ZA[6],ZA[9],ZA[18])+ZA[12]+ZA[1]+0x8cc70208U)+ZR26(ZA[6]); +ZA[8]=ZR15(ZA[1])+ZA[8]+ZR25(ZA[17])+ZA[10]; +ZA[16]=ZA[16]+ZA[12]; +ZA[10]=ZA[12]+ZMa(ZA[4],ZA[20],ZA[0])+ZR30(ZA[0]); +ZA[1]=(ZCh(ZA[16],ZA[6],ZA[9])+ZA[18]+ZA[2]+0x90befffaU)+ZR26(ZA[16]); +ZA[3]=ZA[20]+ZA[1]; +ZA[1]=ZA[1]+ZMa(ZA[0],ZA[4],ZA[10])+ZR30(ZA[10]); +ZA[9]=(ZCh(ZA[3],ZA[16],ZA[6])+ZA[9]+ZA[8]+0xa4506cebU)+ZR26(ZA[3]); +ZA[12]=ZA[9]+ZMa(ZA[10],ZA[0],ZA[1])+ZR30(ZA[1]); +ZA[4]=ZA[4]+ZA[9]; +ZA[6]=(ZCh(ZA[4],ZA[3],ZA[16])+ZA[6]+ZR15(ZA[2])+ZA[11]+ZR25(ZA[5])+ZA[17]+0xbef9a3f7U)+ZR26(ZA[4]); +ZA[17]=ZA[0]+ZA[6]; +ZA[9]=ZA[6]+ZMa(ZA[1],ZA[10],ZA[12])+ZR30(ZA[12]); +ZA[7]=(ZCh(ZA[17],ZA[4],ZA[3])+ZA[16]+ZR15(ZA[8])+ZA[7]+ZR25(ZA[15])+ZA[5]+0xc67178f2U)+ZR26(ZA[17]); +ZA[5]=ZA[9]+state1; +ZA[9]=ZA[7]+ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9])+state0; +ZA[15]=ZA[9]+0x98c7e2a2U; +ZA[0]=(ZCh(ZA[15],0x510e527fU,0x9b05688cU)+ZA[5]+0x90bb1e3cU)+ZR26(ZA[15]); +ZA[12]=ZA[12]+state2; +ZA[2]=ZA[9]+0xfc08884dU; +ZA[8]=ZA[0]+0x3c6ef372U; +ZA[11]=(ZCh(ZA[8],ZA[15],0x510e527fU)+ZA[12]+0x50c6645bU)+ZR26(ZA[8]); +ZA[1]=ZA[1]+state3; +ZA[0]=ZA[0]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[2])+ZR30(ZA[2]); +ZA[6]=ZA[11]+0xbb67ae85U; +ZA[15]=(ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U)+ZR26(ZA[6]); +ZA[10]=ZA[10]+ZA[7]+state4; +ZA[7]=ZA[15]+0x6a09e667U; +ZA[11]=ZMa(ZA[2],0x6a09e667U,ZA[0])+ZR30(ZA[0])+ZA[11]; +ZA[17]=ZA[17]+state5; +ZA[16]=(ZCh(ZA[7],ZA[6],ZA[8])+ZA[10]+ZA[9]+0xd21ea4fdU)+ZR26(ZA[7]); +ZA[24]=ZA[2]+ZA[16]; +ZA[2]=ZA[15]+ZMa(ZA[0],ZA[2],ZA[11])+ZR30(ZA[11]); +ZA[4]=ZA[4]+state6; +ZA[8]=(ZCh(ZA[24],ZA[7],ZA[6])+ZA[8]+ZA[17]+0x59f111f1U)+ZR26(ZA[24]); +ZA[15]=ZA[0]+ZA[8]; +ZA[16]=ZA[16]+ZMa(ZA[11],ZA[0],ZA[2])+ZR30(ZA[2]); +ZA[3]=ZA[3]+state7; +ZA[6]=(ZCh(ZA[15],ZA[24],ZA[7])+ZA[6]+ZA[4]+0x923f82a4U)+ZR26(ZA[15]); +ZA[0]=ZA[11]+ZA[6]; +ZA[8]=ZA[8]+ZMa(ZA[2],ZA[11],ZA[16])+ZR30(ZA[16]); +ZA[7]=(ZCh(ZA[0],ZA[15],ZA[24])+ZA[7]+ZA[3]+0xab1c5ed5U)+ZR26(ZA[0]); +ZA[11]=ZA[2]+ZA[7]; +ZA[2]=ZMa(ZA[16],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[6]; +ZA[24]=(ZCh(ZA[11],ZA[0],ZA[15])+ZA[24]+0x5807aa98U)+ZR26(ZA[11]); +ZA[6]=ZA[16]+ZA[24]; +ZA[7]=ZMa(ZA[8],ZA[16],ZA[2])+ZR30(ZA[2])+ZA[7]; +ZA[15]=(ZCh(ZA[6],ZA[11],ZA[0])+ZA[15]+0x12835b01U)+ZR26(ZA[6]); +ZA[16]=ZA[8]+ZA[15]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[24]; +ZA[0]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[0]+0x243185beU)+ZR26(ZA[16]); +ZA[14]=ZA[2]+ZA[0]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; +ZA[11]=(ZCh(ZA[14],ZA[16],ZA[6])+ZA[11]+0x550c7dc3U)+ZR26(ZA[14]); +ZA[15]=ZA[7]+ZA[11]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[0]; +ZA[6]=(ZCh(ZA[15],ZA[14],ZA[16])+ZA[6]+0x72be5d74U)+ZR26(ZA[15]); +ZA[0]=ZA[8]+ZA[6]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[11]; +ZA[16]=(ZCh(ZA[0],ZA[15],ZA[14])+ZA[16]+0x80deb1feU)+ZR26(ZA[0]); +ZA[11]=ZA[2]+ZA[16]; +ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[14]=(ZCh(ZA[11],ZA[0],ZA[15])+ZA[14]+0x9bdc06a7U)+ZR26(ZA[11]); +ZA[9]=ZR25(ZA[5])+ZA[9]; +ZA[6]=ZA[7]+ZA[14]; +ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[15]=(ZCh(ZA[6],ZA[11],ZA[0])+ZA[15]+0xc19bf274U)+ZR26(ZA[6]); +ZA[5]=ZR25(ZA[12])+ZA[5]+0x00a00000U; +ZA[16]=ZA[8]+ZA[15]; +ZA[8]=ZA[14]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[0]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[0]+ZA[9]+0xe49b69c1U)+ZR26(ZA[16]); +ZA[21]=ZA[2]+ZA[0]; +ZA[2]=ZA[15]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[11]=(ZCh(ZA[21],ZA[16],ZA[6])+ZA[11]+ZA[5]+0xefbe4786U)+ZR26(ZA[21]); +ZA[12]=ZR15(ZA[9])+ZR25(ZA[1])+ZA[12]; +ZA[1]=ZR15(ZA[5])+ZA[1]+ZR25(ZA[10]); +ZA[15]=ZA[7]+ZA[11]; +ZA[7]=ZA[0]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[6]=(ZCh(ZA[15],ZA[21],ZA[16])+ZA[6]+0x0fc19dc6U+ZA[12])+ZR26(ZA[15]); +ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[10]; +ZA[10]=ZA[8]+ZA[6]; +ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[16]=(ZCh(ZA[10],ZA[15],ZA[21])+ZA[16]+ZA[1]+0x240ca1ccU)+ZR26(ZA[10]); +ZA[17]=ZR15(ZA[1])+ZR25(ZA[4])+ZA[17]; +ZA[11]=ZA[2]+ZA[16]; +ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[21]=(ZCh(ZA[11],ZA[10],ZA[15])+ZA[21]+ZA[0]+0x2de92c6fU)+ZR26(ZA[11]); +ZA[4]=ZR15(ZA[0])+ZA[4]+0x00000100U+ZR25(ZA[3]); +ZA[6]=ZA[7]+ZA[21]; +ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[15]=(ZCh(ZA[6],ZA[11],ZA[10])+ZA[15]+ZA[17]+0x4a7484aaU)+ZR26(ZA[6]); +ZA[3]=ZA[9]+ZR15(ZA[17])+ZA[3]+0x11002000U; +ZA[16]=ZA[8]+ZA[15]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[21]; +ZA[10]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[10]+ZA[4]+0x5cb0a9dcU)+ZR26(ZA[16]); +ZA[13]=ZR15(ZA[4])+ZA[5]+0x80000000U; +ZA[22]=ZA[2]+ZA[10]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; +ZA[11]=(ZCh(ZA[22],ZA[16],ZA[6])+ZA[11]+ZA[3]+0x76f988daU)+ZR26(ZA[22]); +ZA[15]=ZR15(ZA[3])+ZA[12]; +ZA[18]=ZA[7]+ZA[11]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[10]; +ZA[6]=(ZCh(ZA[18],ZA[22],ZA[16])+ZA[6]+ZA[13]+0x983e5152U)+ZR26(ZA[18]); +ZA[10]=ZR15(ZA[13])+ZA[1]; +ZA[23]=ZA[8]+ZA[6]; +ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[16]=(ZCh(ZA[23],ZA[18],ZA[22])+ZA[16]+ZA[15]+0xa831c66dU)+ZR26(ZA[23]); +ZA[11]=ZR15(ZA[15])+ZA[0]; +ZA[24]=ZA[2]+ZA[16]; +ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[22]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[22]+ZA[10]+0xb00327c8U)+ZR26(ZA[24]); +ZA[6]=ZR15(ZA[10])+ZA[17]; +ZA[19]=ZA[7]+ZA[22]; +ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[11]+0xbf597fc7U)+ZR26(ZA[19]); +ZA[14]=ZR15(ZA[11])+ZA[4]; +ZA[20]=ZA[8]+ZA[18]; +ZA[8]=ZA[22]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[6]+0xc6e00bf3U)+ZR26(ZA[20]); +ZA[16]=ZR15(ZA[6])+ZA[3]+0x00400022U; +ZA[21]=ZA[2]+ZA[23]; +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[14]+0xd5a79147U)+ZR26(ZA[21]); +ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+0x00000100U; +ZA[18]=ZA[7]+ZA[24]; +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[16]+0x06ca6351U)+ZR26(ZA[18]); +ZA[9]=ZR15(ZA[16])+ZR25(ZA[5])+ZA[9]+ZA[15]; +ZA[23]=ZA[8]+ZA[19]; +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[22]+0x14292967U)+ZR26(ZA[23]); +ZA[5]=ZR15(ZA[22])+ZR25(ZA[12])+ZA[10]+ZA[5]; +ZA[24]=ZA[2]+ZA[20]; +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[9]+0x27b70a85U)+ZR26(ZA[24]); +ZA[12]=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1])+ZA[12]; +ZA[19]=ZA[7]+ZA[21]; +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[5]+0x2e1b2138U)+ZR26(ZA[19]); +ZA[1]=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0])+ZA[1]; +ZA[20]=ZA[8]+ZA[18]; +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[12]+0x4d2c6dfcU)+ZR26(ZA[20]); +ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[0]+ZA[14]; +ZA[21]=ZA[2]+ZA[23]; +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[1]+0x53380d13U)+ZR26(ZA[21]); +ZA[17]=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4])+ZA[17]; +ZA[18]=ZA[7]+ZA[24]; +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[0]+0x650a7354U)+ZR26(ZA[18]); +ZA[4]=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3])+ZA[4]; +ZA[23]=ZA[8]+ZA[19]; +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[17]+0x766a0abbU)+ZR26(ZA[23]); +ZA[3]=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13])+ZA[3]; +ZA[24]=ZA[2]+ZA[20]; +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[4]+0x81c2c92eU)+ZR26(ZA[24]); +ZA[13]=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15])+ZA[13]; +ZA[19]=ZA[7]+ZA[21]; +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[3]+0x92722c85U)+ZR26(ZA[19]); +ZA[15]=ZR15(ZA[3])+ZA[12]+ZR25(ZA[10])+ZA[15]; +ZA[20]=ZA[8]+ZA[18]; +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[13]+0xa2bfe8a1U)+ZR26(ZA[20]); +ZA[10]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; +ZA[21]=ZA[2]+ZA[23]; +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[15]+0xa81a664bU)+ZR26(ZA[21]); +ZA[11]=ZR15(ZA[15])+ZA[0]+ZR25(ZA[6])+ZA[11]; +ZA[18]=ZA[7]+ZA[24]; +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[10]+0xc24b8b70U)+ZR26(ZA[18]); +ZA[6]=ZR15(ZA[10])+ZA[17]+ZR25(ZA[14])+ZA[6]; +ZA[23]=ZA[8]+ZA[19]; +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[11]+0xc76c51a3U)+ZR26(ZA[23]); +ZA[14]=ZR15(ZA[11])+ZA[4]+ZR25(ZA[16])+ZA[14]; +ZA[24]=ZA[2]+ZA[20]; +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[6]+0xd192e819U)+ZR26(ZA[24]); +ZA[16]=ZR15(ZA[6])+ZA[3]+ZR25(ZA[22])+ZA[16]; +ZA[19]=ZA[7]+ZA[21]; +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[14]+0xd6990624U)+ZR26(ZA[19]); +ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+ZA[22]; +ZA[20]=ZA[8]+ZA[18]; +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[16]+0xf40e3585U)+ZR26(ZA[20]); +ZA[9]=ZR15(ZA[16])+ZA[15]+ZR25(ZA[5])+ZA[9]; +ZA[21]=ZA[2]+ZA[23]; +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[22]+0x106aa070U)+ZR26(ZA[21]); +ZA[5]=ZR15(ZA[22])+ZA[10]+ZR25(ZA[12])+ZA[5]; +ZA[18]=ZA[7]+ZA[24]; +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[9]+0x19a4c116U)+ZR26(ZA[18]); +ZA[12]=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1])+ZA[12]; +ZA[23]=ZA[8]+ZA[19]; +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[5]+0x1e376c08U)+ZR26(ZA[23]); +ZA[1]=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0])+ZA[1]; +ZA[24]=ZA[2]+ZA[20]; +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[12]+0x2748774cU)+ZR26(ZA[24]); +ZA[0]=ZR15(ZA[12])+ZA[14]+ZR25(ZA[17])+ZA[0]; +ZA[19]=ZA[7]+ZA[21]; +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[1]+0x34b0bcb5U)+ZR26(ZA[19]); +ZA[17]=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4])+ZA[17]; +ZA[16]=ZA[8]+ZA[18]; +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[23]=(ZCh(ZA[16],ZA[19],ZA[24])+ZA[23]+ZA[0]+0x391c0cb3U)+ZR26(ZA[16]); +ZA[4]=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3])+ZA[4]; +ZA[22]=ZA[2]+ZA[23]; +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[24]=(ZCh(ZA[22],ZA[16],ZA[19])+ZA[24]+ZA[17]+0x4ed8aa4aU)+ZR26(ZA[22]); +ZA[9]=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13])+ZA[3]; +ZA[3]=ZA[7]+ZA[24]; +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[19]=(ZCh(ZA[3],ZA[22],ZA[16])+ZA[19]+ZA[4]+0x5b9cca4fU)+ZR26(ZA[3]); +ZA[13]=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15])+ZA[13]; +ZA[4]=ZA[8]+ZA[19]; +ZA[5]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[16]=(ZCh(ZA[4],ZA[3],ZA[22])+ZA[16]+ZA[9]+0x682e6ff3U)+ZR26(ZA[4]); +ZA[12]=ZR15(ZA[9])+ZA[12]+ZR25(ZA[10])+ZA[15]; +ZA[15]=ZA[2]+ZA[16]; +ZA[9]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[5])+ZR30(ZA[5]); +ZA[22]=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[22]+ZA[13]+0x748f82eeU)+ZR26(ZA[15]); +ZA[13]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; +ZA[10]=ZA[7]+ZA[22]; +ZA[1]=ZA[16]+ZMa(ZA[5],ZA[7],ZA[9])+ZR30(ZA[9]); +ZA[3]=(ZCh(ZA[10],ZA[15],ZA[4])+ZA[3]+ZA[5]+ZA[12]+0x78a5636fU)+ZR26(ZA[10]); +ZA[4]=(ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[4]+ZA[13]+0x84c87814U)+ZR26(ZA[3]); +ZA[15]=(ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZA[15]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U)+ZR26(ZA[4]); +ZA[10]=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[22]+ZMa(ZA[9],ZA[5],ZA[1])+ZR30(ZA[1])+ZA[10]+ZR15(ZA[13])+ZA[17]+ZR25(ZA[14])+ZA[6])+ZR26(ZA[15]); #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS4) - bool result = any(ZA[447] == 0x136032EDU); + bool result = any(ZA[10] == 0x136032EDU); if (result) { - if (ZA[447].x == 0x136032EDU) + if (ZA[10].x == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[447].y == 0x136032EDU) + if (ZA[10].y == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; - if (ZA[447].z == 0x136032EDU) + if (ZA[10].z == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z; - if (ZA[447].w == 0x136032EDU) + if (ZA[10].w == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w; } #elif defined(VECTORS2) - bool result = any(ZA[447] == 0x136032EDU); + bool result = any(ZA[10] == 0x136032EDU); if (result) { - if (ZA[447].x == 0x136032EDU) + if (ZA[10].x == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[447].y == 0x136032EDU) + if (ZA[10].y == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; } #else - if (ZA[447] == 0x136032EDU) + if (ZA[10] == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce] = Znonce; #endif } From 70de5ba7f569cb90b73e3e41208fae5779a0cdde Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 27 Feb 2012 17:08:30 +1100 Subject: [PATCH 035/117] Convert additions to += in diablo kernel. --- diablo120222.cl | 496 ++++++++++++++++++++++++------------------------ 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 573887b2..06c36c98 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -69,449 +69,449 @@ ZA[3]=(ZCh(ZA[2],b1,c1)+d1)+ZR26(ZA[2]); ZA[8]=Znonce+PreVal4_T1; ZA[4]=ZA[3]+h1; ZA[5]=(ZCh(ZA[4],ZA[2],b1)+c1_plus_k5)+ZR26(ZA[4]); -ZA[3]=ZMa(f1,g1,ZA[8])+ZR30(ZA[8])+ZA[3]; +ZA[3]+=ZMa(f1,g1,ZA[8])+ZR30(ZA[8]); ZA[6]=ZA[5]+g1; ZA[2]=(ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6)+ZR26(ZA[6]); -ZA[5]=ZMa(ZA[8],f1,ZA[3])+ZR30(ZA[3])+ZA[5]; +ZA[5]+=ZMa(ZA[8],f1,ZA[3])+ZR30(ZA[3]); ZA[7]=ZA[2]+f1; -ZA[2]=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5])+ZA[2]; +ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); ZA[10]=Znonce+PreVal4_state0_k7+ZCh(ZA[7],ZA[6],ZA[4])+ZR26(ZA[7]); -ZA[8]=ZA[10]+ZA[8]; -ZA[10]=ZA[10]+ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); -ZA[4]=(ZCh(ZA[8],ZA[7],ZA[6])+ZA[4]+0xd807aa98U)+ZR26(ZA[8]); -ZA[3]=ZA[4]+ZA[3]; -ZA[4]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); -ZA[6]=(ZCh(ZA[3],ZA[8],ZA[7])+ZA[6]+0x12835b01U)+ZR26(ZA[3]); -ZA[5]=ZA[6]+ZA[5]; -ZA[6]=ZA[6]+ZMa(ZA[10],ZA[2],ZA[4])+ZR30(ZA[4]); -ZA[7]=(ZCh(ZA[5],ZA[3],ZA[8])+ZA[7]+0x243185beU)+ZR26(ZA[5]); -ZA[2]=ZA[7]+ZA[2]; -ZA[7]=ZA[7]+ZMa(ZA[4],ZA[10],ZA[6])+ZR30(ZA[6]); -ZA[8]=(ZCh(ZA[2],ZA[5],ZA[3])+ZA[8]+0x550c7dc3U)+ZR26(ZA[2]); -ZA[10]=ZA[8]+ZA[10]; -ZA[8]=ZA[8]+ZMa(ZA[6],ZA[4],ZA[7])+ZR30(ZA[7]); -ZA[3]=(ZCh(ZA[10],ZA[2],ZA[5])+ZA[3]+0x72be5d74U)+ZR26(ZA[10]); -ZA[4]=ZA[3]+ZA[4]; -ZA[3]=ZA[3]+ZMa(ZA[7],ZA[6],ZA[8])+ZR30(ZA[8]); -ZA[5]=(ZCh(ZA[4],ZA[10],ZA[2])+ZA[5]+0x80deb1feU)+ZR26(ZA[4]); -ZA[6]=ZA[6]+ZA[5]; -ZA[5]=ZA[5]+ZMa(ZA[8],ZA[7],ZA[3])+ZR30(ZA[3]); -ZA[2]=(ZCh(ZA[6],ZA[4],ZA[10])+ZA[2]+0x9bdc06a7U)+ZR26(ZA[6]); -ZA[7]=ZA[7]+ZA[2]; -ZA[2]=ZA[2]+ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); -ZA[10]=(ZCh(ZA[7],ZA[6],ZA[4])+ZA[10]+0xc19bf3f4U)+ZR26(ZA[7]); -ZA[8]=ZA[8]+ZA[10]; -ZA[10]=ZA[10]+ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); -ZA[4]=(ZCh(ZA[8],ZA[7],ZA[6])+ZA[4]+W16_plus_K16)+ZR26(ZA[8]); +ZA[8]+=ZA[10]; +ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); +ZA[4]+=(ZCh(ZA[8],ZA[7],ZA[6])+0xd807aa98U)+ZR26(ZA[8]); +ZA[3]+=ZA[4]; +ZA[4]+=ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); +ZA[6]+=(ZCh(ZA[3],ZA[8],ZA[7])+0x12835b01U)+ZR26(ZA[3]); +ZA[5]+=ZA[6]; +ZA[6]+=ZMa(ZA[10],ZA[2],ZA[4])+ZR30(ZA[4]); +ZA[7]+=(ZCh(ZA[5],ZA[3],ZA[8])+0x243185beU)+ZR26(ZA[5]); +ZA[2]+=ZA[7]; +ZA[7]+=ZMa(ZA[4],ZA[10],ZA[6])+ZR30(ZA[6]); +ZA[8]+=(ZCh(ZA[2],ZA[5],ZA[3])+0x550c7dc3U)+ZR26(ZA[2]); +ZA[10]+=ZA[8]; +ZA[8]+=ZMa(ZA[6],ZA[4],ZA[7])+ZR30(ZA[7]); +ZA[3]+=(ZCh(ZA[10],ZA[2],ZA[5])+0x72be5d74U)+ZR26(ZA[10]); +ZA[4]+=ZA[3]; +ZA[3]+=ZMa(ZA[7],ZA[6],ZA[8])+ZR30(ZA[8]); +ZA[5]+=(ZCh(ZA[4],ZA[10],ZA[2])+0x80deb1feU)+ZR26(ZA[4]); +ZA[6]+=ZA[5]; +ZA[5]+=ZMa(ZA[8],ZA[7],ZA[3])+ZR30(ZA[3]); +ZA[2]+=(ZCh(ZA[6],ZA[4],ZA[10])+0x9bdc06a7U)+ZR26(ZA[6]); +ZA[7]+=ZA[2]; +ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); +ZA[10]+=(ZCh(ZA[7],ZA[6],ZA[4])+0xc19bf3f4U)+ZR26(ZA[7]); +ZA[8]+=ZA[10]; +ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); +ZA[4]+=(ZCh(ZA[8],ZA[7],ZA[6])+W16_plus_K16)+ZR26(ZA[8]); ZA[0]=ZR25(Znonce)+W18; ZA[11]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); -ZA[4]=ZA[3]+ZA[4]; -ZA[6]=(ZCh(ZA[4],ZA[8],ZA[7])+ZA[6]+W17_plus_K17)+ZR26(ZA[4]); -ZA[5]=ZA[5]+ZA[6]; -ZA[6]=ZA[6]+ZMa(ZA[10],ZA[2],ZA[11])+ZR30(ZA[11]); +ZA[4]+=ZA[3]; +ZA[6]+=(ZCh(ZA[4],ZA[8],ZA[7])+W17_plus_K17)+ZR26(ZA[4]); +ZA[5]+=ZA[6]; +ZA[6]+=ZMa(ZA[10],ZA[2],ZA[11])+ZR30(ZA[11]); ZA[3]=Znonce+W19; -ZA[7]=(ZCh(ZA[5],ZA[4],ZA[8])+ZA[7]+ZA[0]+0x0fc19dc6U)+ZR26(ZA[5]); +ZA[7]+=(ZCh(ZA[5],ZA[4],ZA[8])+ZA[0]+0x0fc19dc6U)+ZR26(ZA[5]); ZA[1]=ZR15(ZA[0])+0x80000000U; ZA[12]=ZA[7]+ZMa(ZA[11],ZA[10],ZA[6])+ZR30(ZA[6]); -ZA[7]=ZA[2]+ZA[7]; -ZA[8]=(ZCh(ZA[7],ZA[5],ZA[4])+ZA[8]+ZA[3]+0x240ca1ccU)+ZR26(ZA[7]); +ZA[7]+=ZA[2]; +ZA[8]+=(ZCh(ZA[7],ZA[5],ZA[4])+ZA[3]+0x240ca1ccU)+ZR26(ZA[7]); ZA[2]=ZR15(ZA[3]); ZA[13]=ZA[8]+ZMa(ZA[6],ZA[11],ZA[12])+ZR30(ZA[12]); -ZA[10]=ZA[10]+ZA[8]; -ZA[4]=(ZCh(ZA[10],ZA[7],ZA[5])+ZA[4]+ZA[1]+0x2de92c6fU)+ZR26(ZA[10]); +ZA[10]+=ZA[8]; +ZA[4]+=(ZCh(ZA[10],ZA[7],ZA[5])+ZA[1]+0x2de92c6fU)+ZR26(ZA[10]); ZA[8]=ZR15(ZA[1])+0x00000280U; ZA[14]=ZA[4]+ZMa(ZA[12],ZA[6],ZA[13])+ZR30(ZA[13]); -ZA[4]=ZA[11]+ZA[4]; -ZA[5]=(ZCh(ZA[4],ZA[10],ZA[7])+ZA[5]+ZA[2]+0x4a7484aaU)+ZR26(ZA[4]); +ZA[4]+=ZA[11]; +ZA[5]+=(ZCh(ZA[4],ZA[10],ZA[7])+ZA[2]+0x4a7484aaU)+ZR26(ZA[4]); ZA[11]=ZR15(ZA[2])+W16; ZA[15]=ZA[5]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]); -ZA[5]=ZA[6]+ZA[5]; +ZA[5]+=ZA[6]; ZA[6]=(ZCh(ZA[5],ZA[4],ZA[10])+ZA[7]+ZA[8]+0x5cb0a9dcU)+ZR26(ZA[5]); ZA[7]=ZR15(ZA[8])+W17; ZA[16]=ZA[6]+ZMa(ZA[14],ZA[13],ZA[15])+ZR30(ZA[15]); -ZA[6]=ZA[12]+ZA[6]; -ZA[10]=(ZCh(ZA[6],ZA[5],ZA[4])+ZA[10]+ZA[11]+0x76f988daU)+ZR26(ZA[6]); +ZA[6]+=ZA[12]; +ZA[10]+=(ZCh(ZA[6],ZA[5],ZA[4])+ZA[11]+0x76f988daU)+ZR26(ZA[6]); ZA[12]=ZR15(ZA[11])+ZA[0]; ZA[17]=ZA[10]+ZMa(ZA[15],ZA[14],ZA[16])+ZR30(ZA[16]); -ZA[10]=ZA[13]+ZA[10]; +ZA[10]+=ZA[13]; ZA[13]=(ZCh(ZA[10],ZA[6],ZA[5])+ZA[4]+ZA[7]+0x983e5152U)+ZR26(ZA[10]); ZA[4]=ZR15(ZA[7])+ZA[3]; -ZA[14]=ZA[14]+ZA[13]; -ZA[13]=ZA[13]+ZMa(ZA[16],ZA[15],ZA[17])+ZR30(ZA[17]); -ZA[5]=(ZCh(ZA[14],ZA[10],ZA[6])+ZA[5]+ZA[12]+0xa831c66dU)+ZR26(ZA[14]); +ZA[14]+=ZA[13]; +ZA[13]+=ZMa(ZA[16],ZA[15],ZA[17])+ZR30(ZA[17]); +ZA[5]+=(ZCh(ZA[14],ZA[10],ZA[6])+ZA[12]+0xa831c66dU)+ZR26(ZA[14]); ZA[9]=ZR15(ZA[12])+ZA[1]; ZA[18]=ZA[5]+ZMa(ZA[17],ZA[16],ZA[13])+ZR30(ZA[13]); -ZA[5]=ZA[15]+ZA[5]; +ZA[5]+=ZA[15]; ZA[15]=(ZCh(ZA[5],ZA[14],ZA[10])+ZA[6]+ZA[4]+0xb00327c8U)+ZR26(ZA[5]); ZA[6]=ZR15(ZA[4])+ZA[2]; ZA[19]=ZA[15]+ZMa(ZA[13],ZA[17],ZA[18])+ZR30(ZA[18]); -ZA[15]=ZA[16]+ZA[15]; +ZA[15]+=ZA[16]; ZA[16]=(ZCh(ZA[15],ZA[5],ZA[14])+ZA[10]+ZA[9]+0xbf597fc7U)+ZR26(ZA[15]); ZA[10]=ZR15(ZA[9])+ZA[8]; ZA[20]=ZA[16]+ZMa(ZA[18],ZA[13],ZA[19])+ZR30(ZA[19]); -ZA[16]=ZA[17]+ZA[16]; -ZA[14]=(ZCh(ZA[16],ZA[15],ZA[5])+ZA[14]+ZA[6]+0xc6e00bf3U)+ZR26(ZA[16]); +ZA[16]+=ZA[17]; +ZA[14]+=(ZCh(ZA[16],ZA[15],ZA[5])+ZA[6]+0xc6e00bf3U)+ZR26(ZA[16]); ZA[17]=ZR15(ZA[6])+ZA[11]+0x00A00055U; ZA[21]=ZA[14]+ZMa(ZA[19],ZA[18],ZA[20])+ZR30(ZA[20]); -ZA[14]=ZA[13]+ZA[14]; +ZA[14]+=ZA[13]; ZA[13]=(ZCh(ZA[14],ZA[16],ZA[15])+ZA[5]+ZA[10]+0xd5a79147U)+ZR26(ZA[14]); ZA[5]=ZR15(ZA[10])+ZA[7]+W31; ZA[22]=ZA[13]+ZMa(ZA[20],ZA[19],ZA[21])+ZR30(ZA[21]); -ZA[13]=ZA[18]+ZA[13]; +ZA[13]+=ZA[18]; ZA[18]=(ZCh(ZA[13],ZA[14],ZA[16])+ZA[15]+ZA[17]+0x06ca6351U)+ZR26(ZA[13]); ZA[15]=ZR15(ZA[17])+ZA[12]+W32; ZA[23]=ZA[18]+ZMa(ZA[21],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[18]=ZA[19]+ZA[18]; +ZA[18]+=ZA[19]; ZA[19]=(ZCh(ZA[18],ZA[13],ZA[14])+ZA[16]+ZA[5]+0x14292967U)+ZR26(ZA[18]); ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+W17; -ZA[20]=ZA[20]+ZA[19]; -ZA[19]=ZA[19]+ZMa(ZA[22],ZA[21],ZA[23])+ZR30(ZA[23]); -ZA[14]=(ZCh(ZA[20],ZA[18],ZA[13])+ZA[14]+ZA[15]+0x27b70a85U)+ZR26(ZA[20]); -ZA[0]=ZR15(ZA[15])+ZR25(ZA[3])+ZA[0]+ZA[9]; +ZA[20]+=ZA[19]; +ZA[19]+=ZMa(ZA[22],ZA[21],ZA[23])+ZR30(ZA[23]); +ZA[14]+=(ZCh(ZA[20],ZA[18],ZA[13])+ZA[15]+0x27b70a85U)+ZR26(ZA[20]); +ZA[0]+=ZR15(ZA[15])+ZR25(ZA[3])+ZA[9]; ZA[24]=ZA[14]+ZMa(ZA[23],ZA[22],ZA[19])+ZR30(ZA[19]); -ZA[14]=ZA[21]+ZA[14]; +ZA[14]+=ZA[21]; ZA[21]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[13]+ZA[16]+0x2e1b2138U)+ZR26(ZA[14]); -ZA[3]=ZR15(ZA[16])+ZA[3]+ZR25(ZA[1])+ZA[6]; -ZA[22]=ZA[22]+ZA[21]; -ZA[21]=ZA[21]+ZMa(ZA[19],ZA[23],ZA[24])+ZR30(ZA[24]); +ZA[3]+=ZR15(ZA[16])+ZR25(ZA[1])+ZA[6]; +ZA[22]+=ZA[21]; +ZA[21]+=ZMa(ZA[19],ZA[23],ZA[24])+ZR30(ZA[24]); ZA[13]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x4d2c6dfcU)+ZR26(ZA[22]); -ZA[1]=ZR15(ZA[0])+ZR25(ZA[2])+ZA[1]+ZA[10]; +ZA[1]+=ZR15(ZA[0])+ZR25(ZA[2])+ZA[10]; ZA[18]=ZA[13]+ZMa(ZA[24],ZA[19],ZA[21])+ZR30(ZA[21]); -ZA[13]=ZA[23]+ZA[13]; -ZA[20]=(ZCh(ZA[13],ZA[22],ZA[14])+ZA[20]+ZA[3]+0x53380d13U)+ZR26(ZA[13]); -ZA[2]=ZR15(ZA[3])+ZA[2]+ZR25(ZA[8])+ZA[17]; +ZA[13]+=ZA[23]; +ZA[20]+=(ZCh(ZA[13],ZA[22],ZA[14])+ZA[3]+0x53380d13U)+ZR26(ZA[13]); +ZA[2]+=ZR15(ZA[3])+ZR25(ZA[8])+ZA[17]; ZA[23]=ZA[19]+ZA[20]; -ZA[20]=ZA[20]+ZMa(ZA[21],ZA[24],ZA[18])+ZR30(ZA[18]); +ZA[20]+=ZMa(ZA[21],ZA[24],ZA[18])+ZR30(ZA[18]); ZA[19]=(ZCh(ZA[23],ZA[13],ZA[22])+ZA[14]+ZA[1]+0x650a7354U)+ZR26(ZA[23]); -ZA[8]=ZR15(ZA[1])+ZR25(ZA[11])+ZA[8]+ZA[5]; +ZA[8]+=ZR15(ZA[1])+ZR25(ZA[11])+ZA[5]; ZA[14]=ZA[19]+ZMa(ZA[18],ZA[21],ZA[20])+ZR30(ZA[20]); -ZA[19]=ZA[24]+ZA[19]; -ZA[22]=(ZCh(ZA[19],ZA[23],ZA[13])+ZA[22]+ZA[2]+0x766a0abbU)+ZR26(ZA[19]); -ZA[11]=ZR15(ZA[2])+ZA[11]+ZR25(ZA[7])+ZA[15]; +ZA[19]+=ZA[24]; +ZA[22]+=(ZCh(ZA[19],ZA[23],ZA[13])+ZA[2]+0x766a0abbU)+ZR26(ZA[19]); +ZA[11]+=ZR15(ZA[2])+ZR25(ZA[7])+ZA[15]; ZA[24]=ZA[21]+ZA[22]; -ZA[22]=ZA[22]+ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); +ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); ZA[21]=(ZCh(ZA[24],ZA[19],ZA[23])+ZA[13]+ZA[8]+0x81c2c92eU)+ZR26(ZA[24]); -ZA[7]=ZR15(ZA[8])+ZR25(ZA[12])+ZA[7]+ZA[16]; -ZA[18]=ZA[18]+ZA[21]; -ZA[21]=ZA[21]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[23]=(ZCh(ZA[18],ZA[24],ZA[19])+ZA[23]+ZA[11]+0x92722c85U)+ZR26(ZA[18]); -ZA[12]=ZR15(ZA[11])+ZR25(ZA[4])+ZA[12]+ZA[0]; -ZA[20]=ZA[20]+ZA[23]; +ZA[7]+=ZR15(ZA[8])+ZR25(ZA[12])+ZA[16]; +ZA[18]+=ZA[21]; +ZA[21]+=ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); +ZA[23]+=(ZCh(ZA[18],ZA[24],ZA[19])+ZA[11]+0x92722c85U)+ZR26(ZA[18]); +ZA[12]+=ZR15(ZA[11])+ZR25(ZA[4])+ZA[0]; +ZA[20]+=ZA[23]; ZA[13]=ZA[23]+ZMa(ZA[22],ZA[14],ZA[21])+ZR30(ZA[21]); ZA[23]=(ZCh(ZA[20],ZA[18],ZA[24])+ZA[19]+ZA[7]+0xa2bfe8a1U)+ZR26(ZA[20]); -ZA[4]=ZR15(ZA[7])+ZR25(ZA[9])+ZA[4]+ZA[3]; -ZA[14]=ZA[14]+ZA[23]; -ZA[23]=ZA[23]+ZMa(ZA[21],ZA[22],ZA[13])+ZR30(ZA[13]); -ZA[24]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[24]+ZA[12]+0xa81a664bU)+ZR26(ZA[14]); -ZA[9]=ZR15(ZA[12])+ZA[1]+ZR25(ZA[6])+ZA[9]; +ZA[4]+=ZR15(ZA[7])+ZR25(ZA[9])+ZA[3]; +ZA[14]+=ZA[23]; +ZA[23]+=ZMa(ZA[21],ZA[22],ZA[13])+ZR30(ZA[13]); +ZA[24]+=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[12]+0xa81a664bU)+ZR26(ZA[14]); +ZA[9]+=ZR15(ZA[12])+ZA[1]+ZR25(ZA[6]); ZA[19]=ZA[24]+ZMa(ZA[13],ZA[21],ZA[23])+ZR30(ZA[23]); -ZA[22]=ZA[22]+ZA[24]; -ZA[18]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[4]+0xc24b8b70U)+ZR26(ZA[22]); -ZA[6]=ZR15(ZA[4])+ZA[2]+ZR25(ZA[10])+ZA[6]; +ZA[22]+=ZA[24]; +ZA[18]+=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[4]+0xc24b8b70U)+ZR26(ZA[22]); +ZA[6]+=ZR15(ZA[4])+ZA[2]+ZR25(ZA[10]); ZA[24]=ZA[21]+ZA[18]; -ZA[18]=ZA[18]+ZMa(ZA[23],ZA[13],ZA[19])+ZR30(ZA[19]); -ZA[20]=(ZCh(ZA[24],ZA[22],ZA[14])+ZA[20]+ZA[9]+0xc76c51a3U)+ZR26(ZA[24]); -ZA[10]=ZR15(ZA[9])+ZR25(ZA[17])+ZA[10]+ZA[8]; -ZA[13]=ZA[13]+ZA[20]; -ZA[20]=ZA[20]+ZMa(ZA[19],ZA[23],ZA[18])+ZR30(ZA[18]); -ZA[14]=(ZCh(ZA[13],ZA[24],ZA[22])+ZA[14]+ZA[6]+0xd192e819U)+ZR26(ZA[13]); -ZA[17]=ZR15(ZA[6])+ZR25(ZA[5])+ZA[17]+ZA[11]; +ZA[18]+=ZMa(ZA[23],ZA[13],ZA[19])+ZR30(ZA[19]); +ZA[20]+=(ZCh(ZA[24],ZA[22],ZA[14])+ZA[9]+0xc76c51a3U)+ZR26(ZA[24]); +ZA[10]+=ZR15(ZA[9])+ZR25(ZA[17])+ZA[8]; +ZA[13]+=ZA[20]; +ZA[20]+=ZMa(ZA[19],ZA[23],ZA[18])+ZR30(ZA[18]); +ZA[14]+=(ZCh(ZA[13],ZA[24],ZA[22])+ZA[6]+0xd192e819U)+ZR26(ZA[13]); +ZA[17]+=ZR15(ZA[6])+ZR25(ZA[5])+ZA[11]; ZA[21]=ZA[23]+ZA[14]; -ZA[14]=ZA[14]+ZMa(ZA[18],ZA[19],ZA[20])+ZR30(ZA[20]); -ZA[22]=(ZCh(ZA[21],ZA[13],ZA[24])+ZA[22]+ZA[10]+0xd6990624U)+ZR26(ZA[21]); -ZA[5]=ZR15(ZA[10])+ZA[7]+ZR25(ZA[15])+ZA[5]; -ZA[19]=ZA[19]+ZA[22]; -ZA[22]=ZA[22]+ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); -ZA[24]=(ZCh(ZA[19],ZA[21],ZA[13])+ZA[24]+ZA[17]+0xf40e3585U)+ZR26(ZA[19]); -ZA[15]=ZR15(ZA[17])+ZA[12]+ZR25(ZA[16])+ZA[15]; -ZA[18]=ZA[18]+ZA[24]; +ZA[14]+=ZMa(ZA[18],ZA[19],ZA[20])+ZR30(ZA[20]); +ZA[22]+=(ZCh(ZA[21],ZA[13],ZA[24])+ZA[10]+0xd6990624U)+ZR26(ZA[21]); +ZA[5]+=ZR15(ZA[10])+ZA[7]+ZR25(ZA[15]); +ZA[19]+=ZA[22]; +ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); +ZA[24]+=(ZCh(ZA[19],ZA[21],ZA[13])+ZA[17]+0xf40e3585U)+ZR26(ZA[19]); +ZA[15]+=ZR15(ZA[17])+ZA[12]+ZR25(ZA[16]); +ZA[18]+=ZA[24]; ZA[23]=ZA[24]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[13]=(ZCh(ZA[18],ZA[19],ZA[21])+ZA[13]+ZA[5]+0x106aa070U)+ZR26(ZA[18]); -ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+ZA[16]; -ZA[20]=ZA[20]+ZA[13]; -ZA[13]=ZA[13]+ZMa(ZA[22],ZA[14],ZA[23])+ZR30(ZA[23]); -ZA[21]=(ZCh(ZA[20],ZA[18],ZA[19])+ZA[21]+ZA[15]+0x19a4c116U)+ZR26(ZA[20]); -ZA[0]=ZR15(ZA[15])+ZA[9]+ZR25(ZA[3])+ZA[0]; -ZA[14]=ZA[14]+ZA[21]; +ZA[13]+=(ZCh(ZA[18],ZA[19],ZA[21])+ZA[5]+0x106aa070U)+ZR26(ZA[18]); +ZA[16]+=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0]); +ZA[20]+=ZA[13]; +ZA[13]+=ZMa(ZA[22],ZA[14],ZA[23])+ZR30(ZA[23]); +ZA[21]+=(ZCh(ZA[20],ZA[18],ZA[19])+ZA[15]+0x19a4c116U)+ZR26(ZA[20]); +ZA[0]+=ZR15(ZA[15])+ZA[9]+ZR25(ZA[3]); +ZA[14]+=ZA[21]; ZA[24]=ZA[21]+ZMa(ZA[23],ZA[22],ZA[13])+ZR30(ZA[13]); -ZA[19]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[19]+ZA[16]+0x1e376c08U)+ZR26(ZA[14]); -ZA[3]=ZR15(ZA[16])+ZA[6]+ZR25(ZA[1])+ZA[3]; -ZA[22]=ZA[22]+ZA[19]; -ZA[19]=ZA[19]+ZMa(ZA[13],ZA[23],ZA[24])+ZR30(ZA[24]); -ZA[18]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x2748774cU)+ZR26(ZA[22]); -ZA[1]=ZR15(ZA[0])+ZA[10]+ZR25(ZA[2])+ZA[1]; -ZA[23]=ZA[23]+ZA[18]; +ZA[19]+=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[16]+0x1e376c08U)+ZR26(ZA[14]); +ZA[3]+=ZR15(ZA[16])+ZA[6]+ZR25(ZA[1]); +ZA[22]+=ZA[19]; +ZA[19]+=ZMa(ZA[13],ZA[23],ZA[24])+ZR30(ZA[24]); +ZA[18]+=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[0]+0x2748774cU)+ZR26(ZA[22]); +ZA[1]+=ZR15(ZA[0])+ZA[10]+ZR25(ZA[2]); +ZA[23]+=ZA[18]; ZA[21]=ZA[18]+ZMa(ZA[24],ZA[13],ZA[19])+ZR30(ZA[19]); -ZA[20]=(ZCh(ZA[23],ZA[22],ZA[14])+ZA[20]+ZA[3]+0x34b0bcb5U)+ZR26(ZA[23]); -ZA[2]=ZR15(ZA[3])+ZA[17]+ZR25(ZA[8])+ZA[2]; -ZA[13]=ZA[13]+ZA[20]; -ZA[20]=ZA[20]+ZMa(ZA[19],ZA[24],ZA[21])+ZR30(ZA[21]); -ZA[14]=(ZCh(ZA[13],ZA[23],ZA[22])+ZA[14]+ZA[1]+0x391c0cb3U)+ZR26(ZA[13]); -ZA[8]=ZR15(ZA[1])+ZA[5]+ZR25(ZA[11])+ZA[8]; -ZA[24]=ZA[24]+ZA[14]; +ZA[20]+=(ZCh(ZA[23],ZA[22],ZA[14])+ZA[3]+0x34b0bcb5U)+ZR26(ZA[23]); +ZA[2]+=ZR15(ZA[3])+ZA[17]+ZR25(ZA[8]); +ZA[13]+=ZA[20]; +ZA[20]+=ZMa(ZA[19],ZA[24],ZA[21])+ZR30(ZA[21]); +ZA[14]+=(ZCh(ZA[13],ZA[23],ZA[22])+ZA[1]+0x391c0cb3U)+ZR26(ZA[13]); +ZA[8]+=ZR15(ZA[1])+ZA[5]+ZR25(ZA[11]); +ZA[24]+=ZA[14]; ZA[18]=ZA[14]+ZMa(ZA[21],ZA[19],ZA[20])+ZR30(ZA[20]); -ZA[22]=(ZCh(ZA[24],ZA[13],ZA[23])+ZA[22]+ZA[2]+0x4ed8aa4aU)+ZR26(ZA[24]); -ZA[11]=ZR15(ZA[2])+ZA[15]+ZR25(ZA[7])+ZA[11]; -ZA[19]=ZA[19]+ZA[22]; -ZA[22]=ZA[22]+ZMa(ZA[20],ZA[21],ZA[18])+ZR30(ZA[18]); -ZA[23]=(ZCh(ZA[19],ZA[24],ZA[13])+ZA[23]+ZA[8]+0x5b9cca4fU)+ZR26(ZA[19]); -ZA[7]=ZR15(ZA[8])+ZA[16]+ZR25(ZA[12])+ZA[7]; -ZA[21]=ZA[21]+ZA[23]; -ZA[23]=ZA[23]+ZMa(ZA[18],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[13]=(ZCh(ZA[21],ZA[19],ZA[24])+ZA[13]+ZA[11]+0x682e6ff3U)+ZR26(ZA[21]); -ZA[0]=ZR15(ZA[11])+ZA[0]+ZR25(ZA[4])+ZA[12]; +ZA[22]+=(ZCh(ZA[24],ZA[13],ZA[23])+ZA[2]+0x4ed8aa4aU)+ZR26(ZA[24]); +ZA[11]+=ZR15(ZA[2])+ZA[15]+ZR25(ZA[7]); +ZA[19]+=ZA[22]; +ZA[22]+=ZMa(ZA[20],ZA[21],ZA[18])+ZR30(ZA[18]); +ZA[23]+=(ZCh(ZA[19],ZA[24],ZA[13])+ZA[8]+0x5b9cca4fU)+ZR26(ZA[19]); +ZA[7]+=ZR15(ZA[8])+ZA[16]+ZR25(ZA[12]); +ZA[21]+=ZA[23]; +ZA[23]+=ZMa(ZA[18],ZA[20],ZA[22])+ZR30(ZA[22]); +ZA[13]+=(ZCh(ZA[21],ZA[19],ZA[24])+ZA[11]+0x682e6ff3U)+ZR26(ZA[21]); +ZA[0]+=ZR15(ZA[11])+ZR25(ZA[4])+ZA[12]; ZA[12]=ZA[20]+ZA[13]; ZA[16]=ZA[13]+ZMa(ZA[22],ZA[18],ZA[23])+ZR30(ZA[23]); ZA[20]=(ZCh(ZA[12],ZA[21],ZA[19])+ZA[24]+ZA[7]+0x748f82eeU)+ZR26(ZA[12]); -ZA[3]=ZR15(ZA[7])+ZA[3]+ZR25(ZA[9])+ZA[4]; -ZA[18]=ZA[18]+ZA[20]; -ZA[20]=ZA[20]+ZMa(ZA[23],ZA[22],ZA[16])+ZR30(ZA[16]); -ZA[19]=(ZCh(ZA[18],ZA[12],ZA[21])+ZA[19]+ZA[0]+0x78a5636fU)+ZR26(ZA[18]); -ZA[1]=ZR15(ZA[0])+ZA[1]+ZR25(ZA[6])+ZA[9]; +ZA[3]+=ZR15(ZA[7])+ZR25(ZA[9])+ZA[4]; +ZA[18]+=ZA[20]; +ZA[20]+=ZMa(ZA[23],ZA[22],ZA[16])+ZR30(ZA[16]); +ZA[19]+=(ZCh(ZA[18],ZA[12],ZA[21])+ZA[0]+0x78a5636fU)+ZR26(ZA[18]); +ZA[1]+=ZR15(ZA[0])+ZR25(ZA[6])+ZA[9]; ZA[9]=ZA[22]+ZA[19]; ZA[4]=ZA[19]+ZMa(ZA[16],ZA[23],ZA[20])+ZR30(ZA[20]); ZA[0]=(ZCh(ZA[9],ZA[18],ZA[12])+ZA[21]+ZA[3]+0x84c87814U)+ZR26(ZA[9]); -ZA[2]=ZR15(ZA[3])+ZA[2]+ZR25(ZA[10])+ZA[6]; +ZA[2]+=ZR15(ZA[3])+ZR25(ZA[10])+ZA[6]; ZA[6]=ZA[23]+ZA[0]; -ZA[0]=ZA[0]+ZMa(ZA[20],ZA[16],ZA[4])+ZR30(ZA[4]); -ZA[12]=(ZCh(ZA[6],ZA[9],ZA[18])+ZA[12]+ZA[1]+0x8cc70208U)+ZR26(ZA[6]); -ZA[8]=ZR15(ZA[1])+ZA[8]+ZR25(ZA[17])+ZA[10]; -ZA[16]=ZA[16]+ZA[12]; +ZA[0]+=ZMa(ZA[20],ZA[16],ZA[4])+ZR30(ZA[4]); +ZA[12]+=(ZCh(ZA[6],ZA[9],ZA[18])+ZA[1]+0x8cc70208U)+ZR26(ZA[6]); +ZA[8]+=ZR15(ZA[1])+ZR25(ZA[17])+ZA[10]; +ZA[16]+=ZA[12]; ZA[10]=ZA[12]+ZMa(ZA[4],ZA[20],ZA[0])+ZR30(ZA[0]); ZA[1]=(ZCh(ZA[16],ZA[6],ZA[9])+ZA[18]+ZA[2]+0x90befffaU)+ZR26(ZA[16]); ZA[3]=ZA[20]+ZA[1]; -ZA[1]=ZA[1]+ZMa(ZA[0],ZA[4],ZA[10])+ZR30(ZA[10]); -ZA[9]=(ZCh(ZA[3],ZA[16],ZA[6])+ZA[9]+ZA[8]+0xa4506cebU)+ZR26(ZA[3]); +ZA[1]+=ZMa(ZA[0],ZA[4],ZA[10])+ZR30(ZA[10]); +ZA[9]+=(ZCh(ZA[3],ZA[16],ZA[6])+ZA[8]+0xa4506cebU)+ZR26(ZA[3]); ZA[12]=ZA[9]+ZMa(ZA[10],ZA[0],ZA[1])+ZR30(ZA[1]); -ZA[4]=ZA[4]+ZA[9]; -ZA[6]=(ZCh(ZA[4],ZA[3],ZA[16])+ZA[6]+ZR15(ZA[2])+ZA[11]+ZR25(ZA[5])+ZA[17]+0xbef9a3f7U)+ZR26(ZA[4]); +ZA[4]+=ZA[9]; +ZA[6]+=(ZCh(ZA[4],ZA[3],ZA[16])+ZR15(ZA[2])+ZA[11]+ZR25(ZA[5])+ZA[17]+0xbef9a3f7U)+ZR26(ZA[4]); ZA[17]=ZA[0]+ZA[6]; ZA[9]=ZA[6]+ZMa(ZA[1],ZA[10],ZA[12])+ZR30(ZA[12]); -ZA[7]=(ZCh(ZA[17],ZA[4],ZA[3])+ZA[16]+ZR15(ZA[8])+ZA[7]+ZR25(ZA[15])+ZA[5]+0xc67178f2U)+ZR26(ZA[17]); +ZA[7]+=(ZCh(ZA[17],ZA[4],ZA[3])+ZA[16]+ZR15(ZA[8])+ZR25(ZA[15])+ZA[5]+0xc67178f2U)+ZR26(ZA[17]); ZA[5]=ZA[9]+state1; ZA[9]=ZA[7]+ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9])+state0; ZA[15]=ZA[9]+0x98c7e2a2U; ZA[0]=(ZCh(ZA[15],0x510e527fU,0x9b05688cU)+ZA[5]+0x90bb1e3cU)+ZR26(ZA[15]); -ZA[12]=ZA[12]+state2; +ZA[12]+=state2; ZA[2]=ZA[9]+0xfc08884dU; ZA[8]=ZA[0]+0x3c6ef372U; ZA[11]=(ZCh(ZA[8],ZA[15],0x510e527fU)+ZA[12]+0x50c6645bU)+ZR26(ZA[8]); -ZA[1]=ZA[1]+state3; -ZA[0]=ZA[0]+ZMa(0x6a09e667U,0xbb67ae85U,ZA[2])+ZR30(ZA[2]); +ZA[1]+=state3; +ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2])+ZR30(ZA[2]); ZA[6]=ZA[11]+0xbb67ae85U; ZA[15]=(ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U)+ZR26(ZA[6]); -ZA[10]=ZA[10]+ZA[7]+state4; +ZA[10]+=ZA[7]+state4; ZA[7]=ZA[15]+0x6a09e667U; -ZA[11]=ZMa(ZA[2],0x6a09e667U,ZA[0])+ZR30(ZA[0])+ZA[11]; -ZA[17]=ZA[17]+state5; +ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0])+ZR30(ZA[0]); +ZA[17]+=state5; ZA[16]=(ZCh(ZA[7],ZA[6],ZA[8])+ZA[10]+ZA[9]+0xd21ea4fdU)+ZR26(ZA[7]); ZA[24]=ZA[2]+ZA[16]; ZA[2]=ZA[15]+ZMa(ZA[0],ZA[2],ZA[11])+ZR30(ZA[11]); -ZA[4]=ZA[4]+state6; -ZA[8]=(ZCh(ZA[24],ZA[7],ZA[6])+ZA[8]+ZA[17]+0x59f111f1U)+ZR26(ZA[24]); +ZA[4]+=state6; +ZA[8]+=(ZCh(ZA[24],ZA[7],ZA[6])+ZA[17]+0x59f111f1U)+ZR26(ZA[24]); ZA[15]=ZA[0]+ZA[8]; -ZA[16]=ZA[16]+ZMa(ZA[11],ZA[0],ZA[2])+ZR30(ZA[2]); -ZA[3]=ZA[3]+state7; -ZA[6]=(ZCh(ZA[15],ZA[24],ZA[7])+ZA[6]+ZA[4]+0x923f82a4U)+ZR26(ZA[15]); +ZA[16]+=ZMa(ZA[11],ZA[0],ZA[2])+ZR30(ZA[2]); +ZA[3]+=state7; +ZA[6]+=(ZCh(ZA[15],ZA[24],ZA[7])+ZA[4]+0x923f82a4U)+ZR26(ZA[15]); ZA[0]=ZA[11]+ZA[6]; -ZA[8]=ZA[8]+ZMa(ZA[2],ZA[11],ZA[16])+ZR30(ZA[16]); -ZA[7]=(ZCh(ZA[0],ZA[15],ZA[24])+ZA[7]+ZA[3]+0xab1c5ed5U)+ZR26(ZA[0]); +ZA[8]+=ZMa(ZA[2],ZA[11],ZA[16])+ZR30(ZA[16]); +ZA[7]+=(ZCh(ZA[0],ZA[15],ZA[24])+ZA[3]+0xab1c5ed5U)+ZR26(ZA[0]); ZA[11]=ZA[2]+ZA[7]; ZA[2]=ZMa(ZA[16],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[6]; -ZA[24]=(ZCh(ZA[11],ZA[0],ZA[15])+ZA[24]+0x5807aa98U)+ZR26(ZA[11]); +ZA[24]+=(ZCh(ZA[11],ZA[0],ZA[15])+0x5807aa98U)+ZR26(ZA[11]); ZA[6]=ZA[16]+ZA[24]; -ZA[7]=ZMa(ZA[8],ZA[16],ZA[2])+ZR30(ZA[2])+ZA[7]; -ZA[15]=(ZCh(ZA[6],ZA[11],ZA[0])+ZA[15]+0x12835b01U)+ZR26(ZA[6]); +ZA[7]+=ZMa(ZA[8],ZA[16],ZA[2])+ZR30(ZA[2]); +ZA[15]+=(ZCh(ZA[6],ZA[11],ZA[0])+0x12835b01U)+ZR26(ZA[6]); ZA[16]=ZA[8]+ZA[15]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[24]; -ZA[0]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[0]+0x243185beU)+ZR26(ZA[16]); +ZA[0]+=(ZCh(ZA[16],ZA[6],ZA[11])+0x243185beU)+ZR26(ZA[16]); ZA[14]=ZA[2]+ZA[0]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; -ZA[11]=(ZCh(ZA[14],ZA[16],ZA[6])+ZA[11]+0x550c7dc3U)+ZR26(ZA[14]); +ZA[11]+=(ZCh(ZA[14],ZA[16],ZA[6])+0x550c7dc3U)+ZR26(ZA[14]); ZA[15]=ZA[7]+ZA[11]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[0]; -ZA[6]=(ZCh(ZA[15],ZA[14],ZA[16])+ZA[6]+0x72be5d74U)+ZR26(ZA[15]); +ZA[6]+=(ZCh(ZA[15],ZA[14],ZA[16])+0x72be5d74U)+ZR26(ZA[15]); ZA[0]=ZA[8]+ZA[6]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[11]; -ZA[16]=(ZCh(ZA[0],ZA[15],ZA[14])+ZA[16]+0x80deb1feU)+ZR26(ZA[0]); +ZA[16]+=(ZCh(ZA[0],ZA[15],ZA[14])+0x80deb1feU)+ZR26(ZA[0]); ZA[11]=ZA[2]+ZA[16]; ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[14]=(ZCh(ZA[11],ZA[0],ZA[15])+ZA[14]+0x9bdc06a7U)+ZR26(ZA[11]); -ZA[9]=ZR25(ZA[5])+ZA[9]; +ZA[14]+=(ZCh(ZA[11],ZA[0],ZA[15])+0x9bdc06a7U)+ZR26(ZA[11]); +ZA[9]+=ZR25(ZA[5]); ZA[6]=ZA[7]+ZA[14]; ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[15]=(ZCh(ZA[6],ZA[11],ZA[0])+ZA[15]+0xc19bf274U)+ZR26(ZA[6]); -ZA[5]=ZR25(ZA[12])+ZA[5]+0x00a00000U; +ZA[15]+=(ZCh(ZA[6],ZA[11],ZA[0])+0xc19bf274U)+ZR26(ZA[6]); +ZA[5]+=ZR25(ZA[12])+0x00a00000U; ZA[16]=ZA[8]+ZA[15]; ZA[8]=ZA[14]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[0]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[0]+ZA[9]+0xe49b69c1U)+ZR26(ZA[16]); +ZA[0]+=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[9]+0xe49b69c1U)+ZR26(ZA[16]); ZA[21]=ZA[2]+ZA[0]; ZA[2]=ZA[15]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[11]=(ZCh(ZA[21],ZA[16],ZA[6])+ZA[11]+ZA[5]+0xefbe4786U)+ZR26(ZA[21]); -ZA[12]=ZR15(ZA[9])+ZR25(ZA[1])+ZA[12]; -ZA[1]=ZR15(ZA[5])+ZA[1]+ZR25(ZA[10]); +ZA[11]+=(ZCh(ZA[21],ZA[16],ZA[6])+ZA[5]+0xefbe4786U)+ZR26(ZA[21]); +ZA[12]+=ZR15(ZA[9])+ZR25(ZA[1]); +ZA[1]+=ZR15(ZA[5])+ZR25(ZA[10]); ZA[15]=ZA[7]+ZA[11]; ZA[7]=ZA[0]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[6]=(ZCh(ZA[15],ZA[21],ZA[16])+ZA[6]+0x0fc19dc6U+ZA[12])+ZR26(ZA[15]); +ZA[6]+=(ZCh(ZA[15],ZA[21],ZA[16])+0x0fc19dc6U+ZA[12])+ZR26(ZA[15]); ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[10]; ZA[10]=ZA[8]+ZA[6]; ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]=(ZCh(ZA[10],ZA[15],ZA[21])+ZA[16]+ZA[1]+0x240ca1ccU)+ZR26(ZA[10]); -ZA[17]=ZR15(ZA[1])+ZR25(ZA[4])+ZA[17]; +ZA[16]+=(ZCh(ZA[10],ZA[15],ZA[21])+ZA[1]+0x240ca1ccU)+ZR26(ZA[10]); +ZA[17]+=ZR15(ZA[1])+ZR25(ZA[4]); ZA[11]=ZA[2]+ZA[16]; ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]=(ZCh(ZA[11],ZA[10],ZA[15])+ZA[21]+ZA[0]+0x2de92c6fU)+ZR26(ZA[11]); -ZA[4]=ZR15(ZA[0])+ZA[4]+0x00000100U+ZR25(ZA[3]); +ZA[21]+=(ZCh(ZA[11],ZA[10],ZA[15])+ZA[0]+0x2de92c6fU)+ZR26(ZA[11]); +ZA[4]+=ZR15(ZA[0])+0x00000100U+ZR25(ZA[3]); ZA[6]=ZA[7]+ZA[21]; ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[15]=(ZCh(ZA[6],ZA[11],ZA[10])+ZA[15]+ZA[17]+0x4a7484aaU)+ZR26(ZA[6]); -ZA[3]=ZA[9]+ZR15(ZA[17])+ZA[3]+0x11002000U; +ZA[15]+=(ZCh(ZA[6],ZA[11],ZA[10])+ZA[17]+0x4a7484aaU)+ZR26(ZA[6]); +ZA[3]+=ZA[9]+ZR15(ZA[17])+0x11002000U; ZA[16]=ZA[8]+ZA[15]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[21]; -ZA[10]=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[10]+ZA[4]+0x5cb0a9dcU)+ZR26(ZA[16]); +ZA[10]+=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[4]+0x5cb0a9dcU)+ZR26(ZA[16]); ZA[13]=ZR15(ZA[4])+ZA[5]+0x80000000U; ZA[22]=ZA[2]+ZA[10]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; -ZA[11]=(ZCh(ZA[22],ZA[16],ZA[6])+ZA[11]+ZA[3]+0x76f988daU)+ZR26(ZA[22]); +ZA[11]+=(ZCh(ZA[22],ZA[16],ZA[6])+ZA[3]+0x76f988daU)+ZR26(ZA[22]); ZA[15]=ZR15(ZA[3])+ZA[12]; ZA[18]=ZA[7]+ZA[11]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[10]; -ZA[6]=(ZCh(ZA[18],ZA[22],ZA[16])+ZA[6]+ZA[13]+0x983e5152U)+ZR26(ZA[18]); +ZA[6]+=(ZCh(ZA[18],ZA[22],ZA[16])+ZA[13]+0x983e5152U)+ZR26(ZA[18]); ZA[10]=ZR15(ZA[13])+ZA[1]; ZA[23]=ZA[8]+ZA[6]; ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]=(ZCh(ZA[23],ZA[18],ZA[22])+ZA[16]+ZA[15]+0xa831c66dU)+ZR26(ZA[23]); +ZA[16]+=(ZCh(ZA[23],ZA[18],ZA[22])+ZA[15]+0xa831c66dU)+ZR26(ZA[23]); ZA[11]=ZR15(ZA[15])+ZA[0]; ZA[24]=ZA[2]+ZA[16]; ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[22]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[22]+ZA[10]+0xb00327c8U)+ZR26(ZA[24]); +ZA[22]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[10]+0xb00327c8U)+ZR26(ZA[24]); ZA[6]=ZR15(ZA[10])+ZA[17]; ZA[19]=ZA[7]+ZA[22]; ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[11]+0xbf597fc7U)+ZR26(ZA[19]); +ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[11]+0xbf597fc7U)+ZR26(ZA[19]); ZA[14]=ZR15(ZA[11])+ZA[4]; ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[22]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[6]+0xc6e00bf3U)+ZR26(ZA[20]); +ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[6]+0xc6e00bf3U)+ZR26(ZA[20]); ZA[16]=ZR15(ZA[6])+ZA[3]+0x00400022U; ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[14]+0xd5a79147U)+ZR26(ZA[21]); +ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[14]+0xd5a79147U)+ZR26(ZA[21]); ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+0x00000100U; ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[16]+0x06ca6351U)+ZR26(ZA[18]); -ZA[9]=ZR15(ZA[16])+ZR25(ZA[5])+ZA[9]+ZA[15]; +ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[16]+0x06ca6351U)+ZR26(ZA[18]); +ZA[9]+=ZR15(ZA[16])+ZR25(ZA[5])+ZA[15]; ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[22]+0x14292967U)+ZR26(ZA[23]); -ZA[5]=ZR15(ZA[22])+ZR25(ZA[12])+ZA[10]+ZA[5]; +ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[22]+0x14292967U)+ZR26(ZA[23]); +ZA[5]+=ZR15(ZA[22])+ZR25(ZA[12])+ZA[10]; ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[9]+0x27b70a85U)+ZR26(ZA[24]); -ZA[12]=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1])+ZA[12]; +ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[9]+0x27b70a85U)+ZR26(ZA[24]); +ZA[12]+=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[5]+0x2e1b2138U)+ZR26(ZA[19]); -ZA[1]=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0])+ZA[1]; +ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[5]+0x2e1b2138U)+ZR26(ZA[19]); +ZA[1]+=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0]); ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[12]+0x4d2c6dfcU)+ZR26(ZA[20]); -ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[0]+ZA[14]; +ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[12]+0x4d2c6dfcU)+ZR26(ZA[20]); +ZA[0]+=ZR15(ZA[12])+ZR25(ZA[17])+ZA[14]; ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[1]+0x53380d13U)+ZR26(ZA[21]); -ZA[17]=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4])+ZA[17]; +ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[1]+0x53380d13U)+ZR26(ZA[21]); +ZA[17]+=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4]); ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[0]+0x650a7354U)+ZR26(ZA[18]); -ZA[4]=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3])+ZA[4]; +ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[0]+0x650a7354U)+ZR26(ZA[18]); +ZA[4]+=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3]); ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[17]+0x766a0abbU)+ZR26(ZA[23]); -ZA[3]=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13])+ZA[3]; +ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[17]+0x766a0abbU)+ZR26(ZA[23]); +ZA[3]+=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13]); ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[4]+0x81c2c92eU)+ZR26(ZA[24]); -ZA[13]=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15])+ZA[13]; +ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[4]+0x81c2c92eU)+ZR26(ZA[24]); +ZA[13]+=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[3]+0x92722c85U)+ZR26(ZA[19]); -ZA[15]=ZR15(ZA[3])+ZA[12]+ZR25(ZA[10])+ZA[15]; +ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[3]+0x92722c85U)+ZR26(ZA[19]); +ZA[15]+=ZR15(ZA[3])+ZA[12]+ZR25(ZA[10]); ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[13]+0xa2bfe8a1U)+ZR26(ZA[20]); -ZA[10]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; +ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[13]+0xa2bfe8a1U)+ZR26(ZA[20]); +ZA[10]+=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11]); ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[15]+0xa81a664bU)+ZR26(ZA[21]); -ZA[11]=ZR15(ZA[15])+ZA[0]+ZR25(ZA[6])+ZA[11]; +ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[15]+0xa81a664bU)+ZR26(ZA[21]); +ZA[11]+=ZR15(ZA[15])+ZA[0]+ZR25(ZA[6]); ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[10]+0xc24b8b70U)+ZR26(ZA[18]); -ZA[6]=ZR15(ZA[10])+ZA[17]+ZR25(ZA[14])+ZA[6]; +ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[10]+0xc24b8b70U)+ZR26(ZA[18]); +ZA[6]+=ZR15(ZA[10])+ZA[17]+ZR25(ZA[14]); ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[11]+0xc76c51a3U)+ZR26(ZA[23]); -ZA[14]=ZR15(ZA[11])+ZA[4]+ZR25(ZA[16])+ZA[14]; +ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[11]+0xc76c51a3U)+ZR26(ZA[23]); +ZA[14]+=ZR15(ZA[11])+ZA[4]+ZR25(ZA[16]); ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[6]+0xd192e819U)+ZR26(ZA[24]); -ZA[16]=ZR15(ZA[6])+ZA[3]+ZR25(ZA[22])+ZA[16]; +ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[6]+0xd192e819U)+ZR26(ZA[24]); +ZA[16]+=ZR15(ZA[6])+ZA[3]+ZR25(ZA[22]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[14]+0xd6990624U)+ZR26(ZA[19]); -ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+ZA[22]; +ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[14]+0xd6990624U)+ZR26(ZA[19]); +ZA[22]+=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9]); ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[23]+ZA[16]+0xf40e3585U)+ZR26(ZA[20]); -ZA[9]=ZR15(ZA[16])+ZA[15]+ZR25(ZA[5])+ZA[9]; +ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[16]+0xf40e3585U)+ZR26(ZA[20]); +ZA[9]+=ZR15(ZA[16])+ZA[15]+ZR25(ZA[5]); ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[24]+ZA[22]+0x106aa070U)+ZR26(ZA[21]); -ZA[5]=ZR15(ZA[22])+ZA[10]+ZR25(ZA[12])+ZA[5]; +ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[22]+0x106aa070U)+ZR26(ZA[21]); +ZA[5]+=ZR15(ZA[22])+ZA[10]+ZR25(ZA[12]); ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[19]+ZA[9]+0x19a4c116U)+ZR26(ZA[18]); -ZA[12]=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1])+ZA[12]; +ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[9]+0x19a4c116U)+ZR26(ZA[18]); +ZA[12]+=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1]); ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[20]+ZA[5]+0x1e376c08U)+ZR26(ZA[23]); -ZA[1]=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0])+ZA[1]; +ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[5]+0x1e376c08U)+ZR26(ZA[23]); +ZA[1]+=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0]); ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[21]+ZA[12]+0x2748774cU)+ZR26(ZA[24]); -ZA[0]=ZR15(ZA[12])+ZA[14]+ZR25(ZA[17])+ZA[0]; +ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[12]+0x2748774cU)+ZR26(ZA[24]); +ZA[0]+=ZR15(ZA[12])+ZA[14]+ZR25(ZA[17]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[18]+ZA[1]+0x34b0bcb5U)+ZR26(ZA[19]); -ZA[17]=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4])+ZA[17]; +ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[1]+0x34b0bcb5U)+ZR26(ZA[19]); +ZA[17]+=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4]); ZA[16]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]=(ZCh(ZA[16],ZA[19],ZA[24])+ZA[23]+ZA[0]+0x391c0cb3U)+ZR26(ZA[16]); -ZA[4]=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3])+ZA[4]; +ZA[23]+=(ZCh(ZA[16],ZA[19],ZA[24])+ZA[0]+0x391c0cb3U)+ZR26(ZA[16]); +ZA[4]+=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3]); ZA[22]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]=(ZCh(ZA[22],ZA[16],ZA[19])+ZA[24]+ZA[17]+0x4ed8aa4aU)+ZR26(ZA[22]); -ZA[9]=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13])+ZA[3]; +ZA[24]+=(ZCh(ZA[22],ZA[16],ZA[19])+ZA[17]+0x4ed8aa4aU)+ZR26(ZA[22]); +ZA[9]+=ZR15(ZA[17])+ZR25(ZA[13])+ZA[3]; ZA[3]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]=(ZCh(ZA[3],ZA[22],ZA[16])+ZA[19]+ZA[4]+0x5b9cca4fU)+ZR26(ZA[3]); -ZA[13]=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15])+ZA[13]; +ZA[19]+=(ZCh(ZA[3],ZA[22],ZA[16])+ZA[4]+0x5b9cca4fU)+ZR26(ZA[3]); +ZA[13]+=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15]); ZA[4]=ZA[8]+ZA[19]; ZA[5]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]=(ZCh(ZA[4],ZA[3],ZA[22])+ZA[16]+ZA[9]+0x682e6ff3U)+ZR26(ZA[4]); -ZA[12]=ZR15(ZA[9])+ZA[12]+ZR25(ZA[10])+ZA[15]; +ZA[16]+=(ZCh(ZA[4],ZA[3],ZA[22])+ZA[9]+0x682e6ff3U)+ZR26(ZA[4]); +ZA[12]+=ZR15(ZA[9])+ZR25(ZA[10])+ZA[15]; ZA[15]=ZA[2]+ZA[16]; ZA[9]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[5])+ZR30(ZA[5]); -ZA[22]=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[22]+ZA[13]+0x748f82eeU)+ZR26(ZA[15]); +ZA[22]+=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[13]+0x748f82eeU)+ZR26(ZA[15]); ZA[13]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; ZA[10]=ZA[7]+ZA[22]; ZA[1]=ZA[16]+ZMa(ZA[5],ZA[7],ZA[9])+ZR30(ZA[9]); -ZA[3]=(ZCh(ZA[10],ZA[15],ZA[4])+ZA[3]+ZA[5]+ZA[12]+0x78a5636fU)+ZR26(ZA[10]); -ZA[4]=(ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[4]+ZA[13]+0x84c87814U)+ZR26(ZA[3]); -ZA[15]=(ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZA[15]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U)+ZR26(ZA[4]); -ZA[10]=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[22]+ZMa(ZA[9],ZA[5],ZA[1])+ZR30(ZA[1])+ZA[10]+ZR15(ZA[13])+ZA[17]+ZR25(ZA[14])+ZA[6])+ZR26(ZA[15]); +ZA[3]+=(ZCh(ZA[10],ZA[15],ZA[4])+ZA[5]+ZA[12]+0x78a5636fU)+ZR26(ZA[10]); +ZA[4]+=(ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[13]+0x84c87814U)+ZR26(ZA[3]); +ZA[15]+=(ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U)+ZR26(ZA[4]); +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]); #define FOUND (0x80) #define NFLAG (0x7F) From 40b18d5d01d35f0e95f52239d9c1d79186450c79 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 27 Feb 2012 20:57:30 +1100 Subject: [PATCH 036/117] Use the unrolled option for no vectors return code. --- diablo120222.cl | 29 +++++++++++++++++------------ poclbm120222.cl | 35 +++++++++++------------------------ 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 06c36c98..0035a474 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -511,35 +511,40 @@ ZA[1]=ZA[16]+ZMa(ZA[5],ZA[7],ZA[9])+ZR30(ZA[9]); ZA[3]+=(ZCh(ZA[10],ZA[15],ZA[4])+ZA[5]+ZA[12]+0x78a5636fU)+ZR26(ZA[10]); ZA[4]+=(ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[13]+0x84c87814U)+ZR26(ZA[3]); ZA[15]+=(ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U)+ZR26(ZA[4]); -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]); + + #define FOUND (0x80) #define NFLAG (0x7F) -#if defined(VECTORS4) - bool result = any(ZA[10] == 0x136032EDU); +#if defined(VECTORS2) || defined(VECTORS4) +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; + bool result = any(!ZA[10]); if (result) { - if (ZA[10].x == 0x136032EDU) + if (!ZA[10].x) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[10].y == 0x136032EDU) + if (!ZA[10].y) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; - if (ZA[10].z == 0x136032EDU) +#if defined(VECTORS4) + if (!ZA[10].z) output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z; - if (ZA[10].w == 0x136032EDU) + if (!ZA[10].w) output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w; +#endif } #elif defined(VECTORS2) - bool result = any(ZA[10] == 0x136032EDU); + bool result = any(!ZA[10]); if (result) { - if (ZA[10].x == 0x136032EDU) + if (!ZA[10].x) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[10].y == 0x136032EDU) + if (!ZA[10].y) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; } #else - if (ZA[10] == 0x136032EDU) - output[FOUND] = output[NFLAG & Znonce] = Znonce; + if (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) + output[FOUND] = output[NFLAG & Znonce] = Znonce; #endif } diff --git a/poclbm120222.cl b/poclbm120222.cl index 03e9d5d6..a40f18be 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -1245,31 +1245,18 @@ Vals[4]+=Vals[0]; #define NFLAG (0x7F) #if defined(VECTORS2) || defined(VECTORS4) - bool result = any((Vals[7]+ - Ma(Vals[2],Vals[0],Vals[1])+ - (rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22))+ - W[12]+ - (rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U))+ - W[5]+ - (rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U))+ - Vals[3]+ - (rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25))+ - ch(Vals[4],Vals[5],Vals[6])- - 0x136032edU) == 0); + Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); + Vals[7]+=W[12]; + Vals[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); + Vals[7]+=W[5]; + Vals[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); + Vals[7]+=Vals[3]; + Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); + Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); + Vals[7] ^= 0x136032edU; + bool result = any(!Vals[7]); if (result) { - // Repeating this seems crazy but it's faster than setting the - // Vals[7] variable on all non-matches. - Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); - Vals[7]+=W[12]; - Vals[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); - Vals[7]+=W[5]; - Vals[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); - Vals[7]+=Vals[3]; - Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); - Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); - Vals[7] ^= 0x136032edU; - if (!Vals[7].x) output[FOUND] = output[NFLAG & nonce.x] = nonce.x; if (!Vals[7].y) From 9901c668c09ce5800c24e99c26ea6f17a1b37292 Mon Sep 17 00:00:00 2001 From: ckolivas Date: Wed, 29 Feb 2012 11:14:55 +1100 Subject: [PATCH 037/117] Remove unnecessary braces from diablo kernel. --- diablo120222.cl | 236 ++++++++++++++++++++++++------------------------ 1 file changed, 118 insertions(+), 118 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 0035a474..90e212ff 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -65,452 +65,452 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( const z Znonce = base + (uint)(get_global_id(0)); ZA[2]=Znonce+PreVal4_state0; -ZA[3]=(ZCh(ZA[2],b1,c1)+d1)+ZR26(ZA[2]); +ZA[3]=ZCh(ZA[2],b1,c1)+d1+ZR26(ZA[2]); ZA[8]=Znonce+PreVal4_T1; ZA[4]=ZA[3]+h1; -ZA[5]=(ZCh(ZA[4],ZA[2],b1)+c1_plus_k5)+ZR26(ZA[4]); +ZA[5]=ZCh(ZA[4],ZA[2],b1)+c1_plus_k5+ZR26(ZA[4]); ZA[3]+=ZMa(f1,g1,ZA[8])+ZR30(ZA[8]); ZA[6]=ZA[5]+g1; -ZA[2]=(ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6)+ZR26(ZA[6]); +ZA[2]=ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6+ZR26(ZA[6]); ZA[5]+=ZMa(ZA[8],f1,ZA[3])+ZR30(ZA[3]); ZA[7]=ZA[2]+f1; ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); ZA[10]=Znonce+PreVal4_state0_k7+ZCh(ZA[7],ZA[6],ZA[4])+ZR26(ZA[7]); ZA[8]+=ZA[10]; ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); -ZA[4]+=(ZCh(ZA[8],ZA[7],ZA[6])+0xd807aa98U)+ZR26(ZA[8]); +ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6])+0xd807aa98U+ZR26(ZA[8]); ZA[3]+=ZA[4]; ZA[4]+=ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); -ZA[6]+=(ZCh(ZA[3],ZA[8],ZA[7])+0x12835b01U)+ZR26(ZA[3]); +ZA[6]+=ZCh(ZA[3],ZA[8],ZA[7])+0x12835b01U+ZR26(ZA[3]); ZA[5]+=ZA[6]; ZA[6]+=ZMa(ZA[10],ZA[2],ZA[4])+ZR30(ZA[4]); -ZA[7]+=(ZCh(ZA[5],ZA[3],ZA[8])+0x243185beU)+ZR26(ZA[5]); +ZA[7]+=ZCh(ZA[5],ZA[3],ZA[8])+0x243185beU+ZR26(ZA[5]); ZA[2]+=ZA[7]; ZA[7]+=ZMa(ZA[4],ZA[10],ZA[6])+ZR30(ZA[6]); -ZA[8]+=(ZCh(ZA[2],ZA[5],ZA[3])+0x550c7dc3U)+ZR26(ZA[2]); +ZA[8]+=ZCh(ZA[2],ZA[5],ZA[3])+0x550c7dc3U+ZR26(ZA[2]); ZA[10]+=ZA[8]; ZA[8]+=ZMa(ZA[6],ZA[4],ZA[7])+ZR30(ZA[7]); -ZA[3]+=(ZCh(ZA[10],ZA[2],ZA[5])+0x72be5d74U)+ZR26(ZA[10]); +ZA[3]+=ZCh(ZA[10],ZA[2],ZA[5])+0x72be5d74U+ZR26(ZA[10]); ZA[4]+=ZA[3]; ZA[3]+=ZMa(ZA[7],ZA[6],ZA[8])+ZR30(ZA[8]); -ZA[5]+=(ZCh(ZA[4],ZA[10],ZA[2])+0x80deb1feU)+ZR26(ZA[4]); +ZA[5]+=ZCh(ZA[4],ZA[10],ZA[2])+0x80deb1feU+ZR26(ZA[4]); ZA[6]+=ZA[5]; ZA[5]+=ZMa(ZA[8],ZA[7],ZA[3])+ZR30(ZA[3]); -ZA[2]+=(ZCh(ZA[6],ZA[4],ZA[10])+0x9bdc06a7U)+ZR26(ZA[6]); +ZA[2]+=ZCh(ZA[6],ZA[4],ZA[10])+0x9bdc06a7U+ZR26(ZA[6]); ZA[7]+=ZA[2]; ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); -ZA[10]+=(ZCh(ZA[7],ZA[6],ZA[4])+0xc19bf3f4U)+ZR26(ZA[7]); +ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4])+0xc19bf3f4U+ZR26(ZA[7]); ZA[8]+=ZA[10]; ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); -ZA[4]+=(ZCh(ZA[8],ZA[7],ZA[6])+W16_plus_K16)+ZR26(ZA[8]); +ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6])+W16_plus_K16+ZR26(ZA[8]); ZA[0]=ZR25(Znonce)+W18; ZA[11]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); ZA[4]+=ZA[3]; -ZA[6]+=(ZCh(ZA[4],ZA[8],ZA[7])+W17_plus_K17)+ZR26(ZA[4]); +ZA[6]+=ZCh(ZA[4],ZA[8],ZA[7])+W17_plus_K17+ZR26(ZA[4]); ZA[5]+=ZA[6]; ZA[6]+=ZMa(ZA[10],ZA[2],ZA[11])+ZR30(ZA[11]); ZA[3]=Znonce+W19; -ZA[7]+=(ZCh(ZA[5],ZA[4],ZA[8])+ZA[0]+0x0fc19dc6U)+ZR26(ZA[5]); +ZA[7]+=ZCh(ZA[5],ZA[4],ZA[8])+ZA[0]+0x0fc19dc6U+ZR26(ZA[5]); ZA[1]=ZR15(ZA[0])+0x80000000U; ZA[12]=ZA[7]+ZMa(ZA[11],ZA[10],ZA[6])+ZR30(ZA[6]); ZA[7]+=ZA[2]; -ZA[8]+=(ZCh(ZA[7],ZA[5],ZA[4])+ZA[3]+0x240ca1ccU)+ZR26(ZA[7]); +ZA[8]+=ZCh(ZA[7],ZA[5],ZA[4])+ZA[3]+0x240ca1ccU+ZR26(ZA[7]); ZA[2]=ZR15(ZA[3]); ZA[13]=ZA[8]+ZMa(ZA[6],ZA[11],ZA[12])+ZR30(ZA[12]); ZA[10]+=ZA[8]; -ZA[4]+=(ZCh(ZA[10],ZA[7],ZA[5])+ZA[1]+0x2de92c6fU)+ZR26(ZA[10]); +ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5])+ZA[1]+0x2de92c6fU+ZR26(ZA[10]); ZA[8]=ZR15(ZA[1])+0x00000280U; ZA[14]=ZA[4]+ZMa(ZA[12],ZA[6],ZA[13])+ZR30(ZA[13]); ZA[4]+=ZA[11]; -ZA[5]+=(ZCh(ZA[4],ZA[10],ZA[7])+ZA[2]+0x4a7484aaU)+ZR26(ZA[4]); +ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7])+ZA[2]+0x4a7484aaU+ZR26(ZA[4]); ZA[11]=ZR15(ZA[2])+W16; ZA[15]=ZA[5]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]); ZA[5]+=ZA[6]; -ZA[6]=(ZCh(ZA[5],ZA[4],ZA[10])+ZA[7]+ZA[8]+0x5cb0a9dcU)+ZR26(ZA[5]); +ZA[6]=ZCh(ZA[5],ZA[4],ZA[10])+ZA[7]+ZA[8]+0x5cb0a9dcU+ZR26(ZA[5]); ZA[7]=ZR15(ZA[8])+W17; ZA[16]=ZA[6]+ZMa(ZA[14],ZA[13],ZA[15])+ZR30(ZA[15]); ZA[6]+=ZA[12]; -ZA[10]+=(ZCh(ZA[6],ZA[5],ZA[4])+ZA[11]+0x76f988daU)+ZR26(ZA[6]); +ZA[10]+=ZCh(ZA[6],ZA[5],ZA[4])+ZA[11]+0x76f988daU+ZR26(ZA[6]); ZA[12]=ZR15(ZA[11])+ZA[0]; ZA[17]=ZA[10]+ZMa(ZA[15],ZA[14],ZA[16])+ZR30(ZA[16]); ZA[10]+=ZA[13]; -ZA[13]=(ZCh(ZA[10],ZA[6],ZA[5])+ZA[4]+ZA[7]+0x983e5152U)+ZR26(ZA[10]); +ZA[13]=ZCh(ZA[10],ZA[6],ZA[5])+ZA[4]+ZA[7]+0x983e5152U+ZR26(ZA[10]); ZA[4]=ZR15(ZA[7])+ZA[3]; ZA[14]+=ZA[13]; ZA[13]+=ZMa(ZA[16],ZA[15],ZA[17])+ZR30(ZA[17]); -ZA[5]+=(ZCh(ZA[14],ZA[10],ZA[6])+ZA[12]+0xa831c66dU)+ZR26(ZA[14]); +ZA[5]+=ZCh(ZA[14],ZA[10],ZA[6])+ZA[12]+0xa831c66dU+ZR26(ZA[14]); ZA[9]=ZR15(ZA[12])+ZA[1]; ZA[18]=ZA[5]+ZMa(ZA[17],ZA[16],ZA[13])+ZR30(ZA[13]); ZA[5]+=ZA[15]; -ZA[15]=(ZCh(ZA[5],ZA[14],ZA[10])+ZA[6]+ZA[4]+0xb00327c8U)+ZR26(ZA[5]); +ZA[15]=ZCh(ZA[5],ZA[14],ZA[10])+ZA[6]+ZA[4]+0xb00327c8U+ZR26(ZA[5]); ZA[6]=ZR15(ZA[4])+ZA[2]; ZA[19]=ZA[15]+ZMa(ZA[13],ZA[17],ZA[18])+ZR30(ZA[18]); ZA[15]+=ZA[16]; -ZA[16]=(ZCh(ZA[15],ZA[5],ZA[14])+ZA[10]+ZA[9]+0xbf597fc7U)+ZR26(ZA[15]); +ZA[16]=ZCh(ZA[15],ZA[5],ZA[14])+ZA[10]+ZA[9]+0xbf597fc7U+ZR26(ZA[15]); ZA[10]=ZR15(ZA[9])+ZA[8]; ZA[20]=ZA[16]+ZMa(ZA[18],ZA[13],ZA[19])+ZR30(ZA[19]); ZA[16]+=ZA[17]; -ZA[14]+=(ZCh(ZA[16],ZA[15],ZA[5])+ZA[6]+0xc6e00bf3U)+ZR26(ZA[16]); +ZA[14]+=ZCh(ZA[16],ZA[15],ZA[5])+ZA[6]+0xc6e00bf3U+ZR26(ZA[16]); ZA[17]=ZR15(ZA[6])+ZA[11]+0x00A00055U; ZA[21]=ZA[14]+ZMa(ZA[19],ZA[18],ZA[20])+ZR30(ZA[20]); ZA[14]+=ZA[13]; -ZA[13]=(ZCh(ZA[14],ZA[16],ZA[15])+ZA[5]+ZA[10]+0xd5a79147U)+ZR26(ZA[14]); +ZA[13]=ZCh(ZA[14],ZA[16],ZA[15])+ZA[5]+ZA[10]+0xd5a79147U+ZR26(ZA[14]); ZA[5]=ZR15(ZA[10])+ZA[7]+W31; ZA[22]=ZA[13]+ZMa(ZA[20],ZA[19],ZA[21])+ZR30(ZA[21]); ZA[13]+=ZA[18]; -ZA[18]=(ZCh(ZA[13],ZA[14],ZA[16])+ZA[15]+ZA[17]+0x06ca6351U)+ZR26(ZA[13]); +ZA[18]=ZCh(ZA[13],ZA[14],ZA[16])+ZA[15]+ZA[17]+0x06ca6351U+ZR26(ZA[13]); ZA[15]=ZR15(ZA[17])+ZA[12]+W32; ZA[23]=ZA[18]+ZMa(ZA[21],ZA[20],ZA[22])+ZR30(ZA[22]); ZA[18]+=ZA[19]; -ZA[19]=(ZCh(ZA[18],ZA[13],ZA[14])+ZA[16]+ZA[5]+0x14292967U)+ZR26(ZA[18]); +ZA[19]=ZCh(ZA[18],ZA[13],ZA[14])+ZA[16]+ZA[5]+0x14292967U+ZR26(ZA[18]); ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+W17; ZA[20]+=ZA[19]; ZA[19]+=ZMa(ZA[22],ZA[21],ZA[23])+ZR30(ZA[23]); -ZA[14]+=(ZCh(ZA[20],ZA[18],ZA[13])+ZA[15]+0x27b70a85U)+ZR26(ZA[20]); +ZA[14]+=ZCh(ZA[20],ZA[18],ZA[13])+ZA[15]+0x27b70a85U+ZR26(ZA[20]); ZA[0]+=ZR15(ZA[15])+ZR25(ZA[3])+ZA[9]; ZA[24]=ZA[14]+ZMa(ZA[23],ZA[22],ZA[19])+ZR30(ZA[19]); ZA[14]+=ZA[21]; -ZA[21]=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[13]+ZA[16]+0x2e1b2138U)+ZR26(ZA[14]); +ZA[21]=ZCh(ZA[14],ZA[20],ZA[18])+ZA[13]+ZA[16]+0x2e1b2138U+ZR26(ZA[14]); ZA[3]+=ZR15(ZA[16])+ZR25(ZA[1])+ZA[6]; ZA[22]+=ZA[21]; ZA[21]+=ZMa(ZA[19],ZA[23],ZA[24])+ZR30(ZA[24]); -ZA[13]=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x4d2c6dfcU)+ZR26(ZA[22]); +ZA[13]=ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x4d2c6dfcU+ZR26(ZA[22]); ZA[1]+=ZR15(ZA[0])+ZR25(ZA[2])+ZA[10]; ZA[18]=ZA[13]+ZMa(ZA[24],ZA[19],ZA[21])+ZR30(ZA[21]); ZA[13]+=ZA[23]; -ZA[20]+=(ZCh(ZA[13],ZA[22],ZA[14])+ZA[3]+0x53380d13U)+ZR26(ZA[13]); +ZA[20]+=ZCh(ZA[13],ZA[22],ZA[14])+ZA[3]+0x53380d13U+ZR26(ZA[13]); ZA[2]+=ZR15(ZA[3])+ZR25(ZA[8])+ZA[17]; ZA[23]=ZA[19]+ZA[20]; ZA[20]+=ZMa(ZA[21],ZA[24],ZA[18])+ZR30(ZA[18]); -ZA[19]=(ZCh(ZA[23],ZA[13],ZA[22])+ZA[14]+ZA[1]+0x650a7354U)+ZR26(ZA[23]); +ZA[19]=ZCh(ZA[23],ZA[13],ZA[22])+ZA[14]+ZA[1]+0x650a7354U+ZR26(ZA[23]); ZA[8]+=ZR15(ZA[1])+ZR25(ZA[11])+ZA[5]; ZA[14]=ZA[19]+ZMa(ZA[18],ZA[21],ZA[20])+ZR30(ZA[20]); ZA[19]+=ZA[24]; -ZA[22]+=(ZCh(ZA[19],ZA[23],ZA[13])+ZA[2]+0x766a0abbU)+ZR26(ZA[19]); +ZA[22]+=ZCh(ZA[19],ZA[23],ZA[13])+ZA[2]+0x766a0abbU+ZR26(ZA[19]); ZA[11]+=ZR15(ZA[2])+ZR25(ZA[7])+ZA[15]; ZA[24]=ZA[21]+ZA[22]; ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); -ZA[21]=(ZCh(ZA[24],ZA[19],ZA[23])+ZA[13]+ZA[8]+0x81c2c92eU)+ZR26(ZA[24]); +ZA[21]=ZCh(ZA[24],ZA[19],ZA[23])+ZA[13]+ZA[8]+0x81c2c92eU+ZR26(ZA[24]); ZA[7]+=ZR15(ZA[8])+ZR25(ZA[12])+ZA[16]; ZA[18]+=ZA[21]; ZA[21]+=ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[23]+=(ZCh(ZA[18],ZA[24],ZA[19])+ZA[11]+0x92722c85U)+ZR26(ZA[18]); +ZA[23]+=ZCh(ZA[18],ZA[24],ZA[19])+ZA[11]+0x92722c85U+ZR26(ZA[18]); ZA[12]+=ZR15(ZA[11])+ZR25(ZA[4])+ZA[0]; ZA[20]+=ZA[23]; ZA[13]=ZA[23]+ZMa(ZA[22],ZA[14],ZA[21])+ZR30(ZA[21]); -ZA[23]=(ZCh(ZA[20],ZA[18],ZA[24])+ZA[19]+ZA[7]+0xa2bfe8a1U)+ZR26(ZA[20]); +ZA[23]=ZCh(ZA[20],ZA[18],ZA[24])+ZA[19]+ZA[7]+0xa2bfe8a1U+ZR26(ZA[20]); ZA[4]+=ZR15(ZA[7])+ZR25(ZA[9])+ZA[3]; ZA[14]+=ZA[23]; ZA[23]+=ZMa(ZA[21],ZA[22],ZA[13])+ZR30(ZA[13]); -ZA[24]+=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[12]+0xa81a664bU)+ZR26(ZA[14]); +ZA[24]+=ZCh(ZA[14],ZA[20],ZA[18])+ZA[12]+0xa81a664bU+ZR26(ZA[14]); ZA[9]+=ZR15(ZA[12])+ZA[1]+ZR25(ZA[6]); ZA[19]=ZA[24]+ZMa(ZA[13],ZA[21],ZA[23])+ZR30(ZA[23]); ZA[22]+=ZA[24]; -ZA[18]+=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[4]+0xc24b8b70U)+ZR26(ZA[22]); +ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20])+ZA[4]+0xc24b8b70U+ZR26(ZA[22]); ZA[6]+=ZR15(ZA[4])+ZA[2]+ZR25(ZA[10]); ZA[24]=ZA[21]+ZA[18]; ZA[18]+=ZMa(ZA[23],ZA[13],ZA[19])+ZR30(ZA[19]); -ZA[20]+=(ZCh(ZA[24],ZA[22],ZA[14])+ZA[9]+0xc76c51a3U)+ZR26(ZA[24]); +ZA[20]+=ZCh(ZA[24],ZA[22],ZA[14])+ZA[9]+0xc76c51a3U+ZR26(ZA[24]); ZA[10]+=ZR15(ZA[9])+ZR25(ZA[17])+ZA[8]; ZA[13]+=ZA[20]; ZA[20]+=ZMa(ZA[19],ZA[23],ZA[18])+ZR30(ZA[18]); -ZA[14]+=(ZCh(ZA[13],ZA[24],ZA[22])+ZA[6]+0xd192e819U)+ZR26(ZA[13]); +ZA[14]+=ZCh(ZA[13],ZA[24],ZA[22])+ZA[6]+0xd192e819U+ZR26(ZA[13]); ZA[17]+=ZR15(ZA[6])+ZR25(ZA[5])+ZA[11]; ZA[21]=ZA[23]+ZA[14]; ZA[14]+=ZMa(ZA[18],ZA[19],ZA[20])+ZR30(ZA[20]); -ZA[22]+=(ZCh(ZA[21],ZA[13],ZA[24])+ZA[10]+0xd6990624U)+ZR26(ZA[21]); +ZA[22]+=ZCh(ZA[21],ZA[13],ZA[24])+ZA[10]+0xd6990624U+ZR26(ZA[21]); ZA[5]+=ZR15(ZA[10])+ZA[7]+ZR25(ZA[15]); ZA[19]+=ZA[22]; ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); -ZA[24]+=(ZCh(ZA[19],ZA[21],ZA[13])+ZA[17]+0xf40e3585U)+ZR26(ZA[19]); +ZA[24]+=ZCh(ZA[19],ZA[21],ZA[13])+ZA[17]+0xf40e3585U+ZR26(ZA[19]); ZA[15]+=ZR15(ZA[17])+ZA[12]+ZR25(ZA[16]); ZA[18]+=ZA[24]; ZA[23]=ZA[24]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[13]+=(ZCh(ZA[18],ZA[19],ZA[21])+ZA[5]+0x106aa070U)+ZR26(ZA[18]); +ZA[13]+=ZCh(ZA[18],ZA[19],ZA[21])+ZA[5]+0x106aa070U+ZR26(ZA[18]); ZA[16]+=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0]); ZA[20]+=ZA[13]; ZA[13]+=ZMa(ZA[22],ZA[14],ZA[23])+ZR30(ZA[23]); -ZA[21]+=(ZCh(ZA[20],ZA[18],ZA[19])+ZA[15]+0x19a4c116U)+ZR26(ZA[20]); +ZA[21]+=ZCh(ZA[20],ZA[18],ZA[19])+ZA[15]+0x19a4c116U+ZR26(ZA[20]); ZA[0]+=ZR15(ZA[15])+ZA[9]+ZR25(ZA[3]); ZA[14]+=ZA[21]; ZA[24]=ZA[21]+ZMa(ZA[23],ZA[22],ZA[13])+ZR30(ZA[13]); -ZA[19]+=(ZCh(ZA[14],ZA[20],ZA[18])+ZA[16]+0x1e376c08U)+ZR26(ZA[14]); +ZA[19]+=ZCh(ZA[14],ZA[20],ZA[18])+ZA[16]+0x1e376c08U+ZR26(ZA[14]); ZA[3]+=ZR15(ZA[16])+ZA[6]+ZR25(ZA[1]); ZA[22]+=ZA[19]; ZA[19]+=ZMa(ZA[13],ZA[23],ZA[24])+ZR30(ZA[24]); -ZA[18]+=(ZCh(ZA[22],ZA[14],ZA[20])+ZA[0]+0x2748774cU)+ZR26(ZA[22]); +ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20])+ZA[0]+0x2748774cU+ZR26(ZA[22]); ZA[1]+=ZR15(ZA[0])+ZA[10]+ZR25(ZA[2]); ZA[23]+=ZA[18]; ZA[21]=ZA[18]+ZMa(ZA[24],ZA[13],ZA[19])+ZR30(ZA[19]); -ZA[20]+=(ZCh(ZA[23],ZA[22],ZA[14])+ZA[3]+0x34b0bcb5U)+ZR26(ZA[23]); +ZA[20]+=ZCh(ZA[23],ZA[22],ZA[14])+ZA[3]+0x34b0bcb5U+ZR26(ZA[23]); ZA[2]+=ZR15(ZA[3])+ZA[17]+ZR25(ZA[8]); ZA[13]+=ZA[20]; ZA[20]+=ZMa(ZA[19],ZA[24],ZA[21])+ZR30(ZA[21]); -ZA[14]+=(ZCh(ZA[13],ZA[23],ZA[22])+ZA[1]+0x391c0cb3U)+ZR26(ZA[13]); +ZA[14]+=ZCh(ZA[13],ZA[23],ZA[22])+ZA[1]+0x391c0cb3U+ZR26(ZA[13]); ZA[8]+=ZR15(ZA[1])+ZA[5]+ZR25(ZA[11]); ZA[24]+=ZA[14]; ZA[18]=ZA[14]+ZMa(ZA[21],ZA[19],ZA[20])+ZR30(ZA[20]); -ZA[22]+=(ZCh(ZA[24],ZA[13],ZA[23])+ZA[2]+0x4ed8aa4aU)+ZR26(ZA[24]); +ZA[22]+=ZCh(ZA[24],ZA[13],ZA[23])+ZA[2]+0x4ed8aa4aU+ZR26(ZA[24]); ZA[11]+=ZR15(ZA[2])+ZA[15]+ZR25(ZA[7]); ZA[19]+=ZA[22]; ZA[22]+=ZMa(ZA[20],ZA[21],ZA[18])+ZR30(ZA[18]); -ZA[23]+=(ZCh(ZA[19],ZA[24],ZA[13])+ZA[8]+0x5b9cca4fU)+ZR26(ZA[19]); +ZA[23]+=ZCh(ZA[19],ZA[24],ZA[13])+ZA[8]+0x5b9cca4fU+ZR26(ZA[19]); ZA[7]+=ZR15(ZA[8])+ZA[16]+ZR25(ZA[12]); ZA[21]+=ZA[23]; ZA[23]+=ZMa(ZA[18],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[13]+=(ZCh(ZA[21],ZA[19],ZA[24])+ZA[11]+0x682e6ff3U)+ZR26(ZA[21]); +ZA[13]+=ZCh(ZA[21],ZA[19],ZA[24])+ZA[11]+0x682e6ff3U+ZR26(ZA[21]); ZA[0]+=ZR15(ZA[11])+ZR25(ZA[4])+ZA[12]; ZA[12]=ZA[20]+ZA[13]; ZA[16]=ZA[13]+ZMa(ZA[22],ZA[18],ZA[23])+ZR30(ZA[23]); -ZA[20]=(ZCh(ZA[12],ZA[21],ZA[19])+ZA[24]+ZA[7]+0x748f82eeU)+ZR26(ZA[12]); +ZA[20]=ZCh(ZA[12],ZA[21],ZA[19])+ZA[24]+ZA[7]+0x748f82eeU+ZR26(ZA[12]); ZA[3]+=ZR15(ZA[7])+ZR25(ZA[9])+ZA[4]; ZA[18]+=ZA[20]; ZA[20]+=ZMa(ZA[23],ZA[22],ZA[16])+ZR30(ZA[16]); -ZA[19]+=(ZCh(ZA[18],ZA[12],ZA[21])+ZA[0]+0x78a5636fU)+ZR26(ZA[18]); +ZA[19]+=ZCh(ZA[18],ZA[12],ZA[21])+ZA[0]+0x78a5636fU+ZR26(ZA[18]); ZA[1]+=ZR15(ZA[0])+ZR25(ZA[6])+ZA[9]; ZA[9]=ZA[22]+ZA[19]; ZA[4]=ZA[19]+ZMa(ZA[16],ZA[23],ZA[20])+ZR30(ZA[20]); -ZA[0]=(ZCh(ZA[9],ZA[18],ZA[12])+ZA[21]+ZA[3]+0x84c87814U)+ZR26(ZA[9]); +ZA[0]=ZCh(ZA[9],ZA[18],ZA[12])+ZA[21]+ZA[3]+0x84c87814U+ZR26(ZA[9]); ZA[2]+=ZR15(ZA[3])+ZR25(ZA[10])+ZA[6]; ZA[6]=ZA[23]+ZA[0]; ZA[0]+=ZMa(ZA[20],ZA[16],ZA[4])+ZR30(ZA[4]); -ZA[12]+=(ZCh(ZA[6],ZA[9],ZA[18])+ZA[1]+0x8cc70208U)+ZR26(ZA[6]); +ZA[12]+=ZCh(ZA[6],ZA[9],ZA[18])+ZA[1]+0x8cc70208U+ZR26(ZA[6]); ZA[8]+=ZR15(ZA[1])+ZR25(ZA[17])+ZA[10]; ZA[16]+=ZA[12]; ZA[10]=ZA[12]+ZMa(ZA[4],ZA[20],ZA[0])+ZR30(ZA[0]); -ZA[1]=(ZCh(ZA[16],ZA[6],ZA[9])+ZA[18]+ZA[2]+0x90befffaU)+ZR26(ZA[16]); +ZA[1]=ZCh(ZA[16],ZA[6],ZA[9])+ZA[18]+ZA[2]+0x90befffaU+ZR26(ZA[16]); ZA[3]=ZA[20]+ZA[1]; ZA[1]+=ZMa(ZA[0],ZA[4],ZA[10])+ZR30(ZA[10]); -ZA[9]+=(ZCh(ZA[3],ZA[16],ZA[6])+ZA[8]+0xa4506cebU)+ZR26(ZA[3]); +ZA[9]+=ZCh(ZA[3],ZA[16],ZA[6])+ZA[8]+0xa4506cebU+ZR26(ZA[3]); ZA[12]=ZA[9]+ZMa(ZA[10],ZA[0],ZA[1])+ZR30(ZA[1]); ZA[4]+=ZA[9]; -ZA[6]+=(ZCh(ZA[4],ZA[3],ZA[16])+ZR15(ZA[2])+ZA[11]+ZR25(ZA[5])+ZA[17]+0xbef9a3f7U)+ZR26(ZA[4]); +ZA[6]+=ZCh(ZA[4],ZA[3],ZA[16])+ZR15(ZA[2])+ZA[11]+ZR25(ZA[5])+ZA[17]+0xbef9a3f7U+ZR26(ZA[4]); ZA[17]=ZA[0]+ZA[6]; ZA[9]=ZA[6]+ZMa(ZA[1],ZA[10],ZA[12])+ZR30(ZA[12]); -ZA[7]+=(ZCh(ZA[17],ZA[4],ZA[3])+ZA[16]+ZR15(ZA[8])+ZR25(ZA[15])+ZA[5]+0xc67178f2U)+ZR26(ZA[17]); +ZA[7]+=ZCh(ZA[17],ZA[4],ZA[3])+ZA[16]+ZR15(ZA[8])+ZR25(ZA[15])+ZA[5]+0xc67178f2U+ZR26(ZA[17]); ZA[5]=ZA[9]+state1; ZA[9]=ZA[7]+ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9])+state0; ZA[15]=ZA[9]+0x98c7e2a2U; -ZA[0]=(ZCh(ZA[15],0x510e527fU,0x9b05688cU)+ZA[5]+0x90bb1e3cU)+ZR26(ZA[15]); +ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU)+ZA[5]+0x90bb1e3cU+ZR26(ZA[15]); ZA[12]+=state2; ZA[2]=ZA[9]+0xfc08884dU; ZA[8]=ZA[0]+0x3c6ef372U; -ZA[11]=(ZCh(ZA[8],ZA[15],0x510e527fU)+ZA[12]+0x50c6645bU)+ZR26(ZA[8]); +ZA[11]=ZCh(ZA[8],ZA[15],0x510e527fU)+ZA[12]+0x50c6645bU+ZR26(ZA[8]); ZA[1]+=state3; ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2])+ZR30(ZA[2]); ZA[6]=ZA[11]+0xbb67ae85U; -ZA[15]=(ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U)+ZR26(ZA[6]); +ZA[15]=ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U+ZR26(ZA[6]); ZA[10]+=ZA[7]+state4; ZA[7]=ZA[15]+0x6a09e667U; ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0])+ZR30(ZA[0]); ZA[17]+=state5; -ZA[16]=(ZCh(ZA[7],ZA[6],ZA[8])+ZA[10]+ZA[9]+0xd21ea4fdU)+ZR26(ZA[7]); +ZA[16]=ZCh(ZA[7],ZA[6],ZA[8])+ZA[10]+ZA[9]+0xd21ea4fdU+ZR26(ZA[7]); ZA[24]=ZA[2]+ZA[16]; ZA[2]=ZA[15]+ZMa(ZA[0],ZA[2],ZA[11])+ZR30(ZA[11]); ZA[4]+=state6; -ZA[8]+=(ZCh(ZA[24],ZA[7],ZA[6])+ZA[17]+0x59f111f1U)+ZR26(ZA[24]); +ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6])+ZA[17]+0x59f111f1U+ZR26(ZA[24]); ZA[15]=ZA[0]+ZA[8]; ZA[16]+=ZMa(ZA[11],ZA[0],ZA[2])+ZR30(ZA[2]); ZA[3]+=state7; -ZA[6]+=(ZCh(ZA[15],ZA[24],ZA[7])+ZA[4]+0x923f82a4U)+ZR26(ZA[15]); +ZA[6]+=ZCh(ZA[15],ZA[24],ZA[7])+ZA[4]+0x923f82a4U+ZR26(ZA[15]); ZA[0]=ZA[11]+ZA[6]; ZA[8]+=ZMa(ZA[2],ZA[11],ZA[16])+ZR30(ZA[16]); -ZA[7]+=(ZCh(ZA[0],ZA[15],ZA[24])+ZA[3]+0xab1c5ed5U)+ZR26(ZA[0]); +ZA[7]+=ZCh(ZA[0],ZA[15],ZA[24])+ZA[3]+0xab1c5ed5U+ZR26(ZA[0]); ZA[11]=ZA[2]+ZA[7]; ZA[2]=ZMa(ZA[16],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[6]; -ZA[24]+=(ZCh(ZA[11],ZA[0],ZA[15])+0x5807aa98U)+ZR26(ZA[11]); +ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15])+0x5807aa98U+ZR26(ZA[11]); ZA[6]=ZA[16]+ZA[24]; ZA[7]+=ZMa(ZA[8],ZA[16],ZA[2])+ZR30(ZA[2]); -ZA[15]+=(ZCh(ZA[6],ZA[11],ZA[0])+0x12835b01U)+ZR26(ZA[6]); +ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0])+0x12835b01U+ZR26(ZA[6]); ZA[16]=ZA[8]+ZA[15]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[24]; -ZA[0]+=(ZCh(ZA[16],ZA[6],ZA[11])+0x243185beU)+ZR26(ZA[16]); +ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11])+0x243185beU+ZR26(ZA[16]); ZA[14]=ZA[2]+ZA[0]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; -ZA[11]+=(ZCh(ZA[14],ZA[16],ZA[6])+0x550c7dc3U)+ZR26(ZA[14]); +ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6])+0x550c7dc3U+ZR26(ZA[14]); ZA[15]=ZA[7]+ZA[11]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[0]; -ZA[6]+=(ZCh(ZA[15],ZA[14],ZA[16])+0x72be5d74U)+ZR26(ZA[15]); +ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16])+0x72be5d74U+ZR26(ZA[15]); ZA[0]=ZA[8]+ZA[6]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[11]; -ZA[16]+=(ZCh(ZA[0],ZA[15],ZA[14])+0x80deb1feU)+ZR26(ZA[0]); +ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14])+0x80deb1feU+ZR26(ZA[0]); ZA[11]=ZA[2]+ZA[16]; ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[14]+=(ZCh(ZA[11],ZA[0],ZA[15])+0x9bdc06a7U)+ZR26(ZA[11]); +ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15])+0x9bdc06a7U+ZR26(ZA[11]); ZA[9]+=ZR25(ZA[5]); ZA[6]=ZA[7]+ZA[14]; ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[15]+=(ZCh(ZA[6],ZA[11],ZA[0])+0xc19bf274U)+ZR26(ZA[6]); +ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0])+0xc19bf274U+ZR26(ZA[6]); ZA[5]+=ZR25(ZA[12])+0x00a00000U; ZA[16]=ZA[8]+ZA[15]; ZA[8]=ZA[14]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[0]+=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[9]+0xe49b69c1U)+ZR26(ZA[16]); +ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11])+ZA[9]+0xe49b69c1U+ZR26(ZA[16]); ZA[21]=ZA[2]+ZA[0]; ZA[2]=ZA[15]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[11]+=(ZCh(ZA[21],ZA[16],ZA[6])+ZA[5]+0xefbe4786U)+ZR26(ZA[21]); +ZA[11]+=ZCh(ZA[21],ZA[16],ZA[6])+ZA[5]+0xefbe4786U+ZR26(ZA[21]); ZA[12]+=ZR15(ZA[9])+ZR25(ZA[1]); ZA[1]+=ZR15(ZA[5])+ZR25(ZA[10]); ZA[15]=ZA[7]+ZA[11]; ZA[7]=ZA[0]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[6]+=(ZCh(ZA[15],ZA[21],ZA[16])+0x0fc19dc6U+ZA[12])+ZR26(ZA[15]); +ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16])+0x0fc19dc6U+ZA[12]+ZR26(ZA[15]); ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[10]; ZA[10]=ZA[8]+ZA[6]; ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]+=(ZCh(ZA[10],ZA[15],ZA[21])+ZA[1]+0x240ca1ccU)+ZR26(ZA[10]); +ZA[16]+=ZCh(ZA[10],ZA[15],ZA[21])+ZA[1]+0x240ca1ccU+ZR26(ZA[10]); ZA[17]+=ZR15(ZA[1])+ZR25(ZA[4]); ZA[11]=ZA[2]+ZA[16]; ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=(ZCh(ZA[11],ZA[10],ZA[15])+ZA[0]+0x2de92c6fU)+ZR26(ZA[11]); +ZA[21]+=ZCh(ZA[11],ZA[10],ZA[15])+ZA[0]+0x2de92c6fU+ZR26(ZA[11]); ZA[4]+=ZR15(ZA[0])+0x00000100U+ZR25(ZA[3]); ZA[6]=ZA[7]+ZA[21]; ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[15]+=(ZCh(ZA[6],ZA[11],ZA[10])+ZA[17]+0x4a7484aaU)+ZR26(ZA[6]); +ZA[15]+=ZCh(ZA[6],ZA[11],ZA[10])+ZA[17]+0x4a7484aaU+ZR26(ZA[6]); ZA[3]+=ZA[9]+ZR15(ZA[17])+0x11002000U; ZA[16]=ZA[8]+ZA[15]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[21]; -ZA[10]+=(ZCh(ZA[16],ZA[6],ZA[11])+ZA[4]+0x5cb0a9dcU)+ZR26(ZA[16]); +ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11])+ZA[4]+0x5cb0a9dcU+ZR26(ZA[16]); ZA[13]=ZR15(ZA[4])+ZA[5]+0x80000000U; ZA[22]=ZA[2]+ZA[10]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; -ZA[11]+=(ZCh(ZA[22],ZA[16],ZA[6])+ZA[3]+0x76f988daU)+ZR26(ZA[22]); +ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6])+ZA[3]+0x76f988daU+ZR26(ZA[22]); ZA[15]=ZR15(ZA[3])+ZA[12]; ZA[18]=ZA[7]+ZA[11]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[10]; -ZA[6]+=(ZCh(ZA[18],ZA[22],ZA[16])+ZA[13]+0x983e5152U)+ZR26(ZA[18]); +ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16])+ZA[13]+0x983e5152U+ZR26(ZA[18]); ZA[10]=ZR15(ZA[13])+ZA[1]; ZA[23]=ZA[8]+ZA[6]; ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]+=(ZCh(ZA[23],ZA[18],ZA[22])+ZA[15]+0xa831c66dU)+ZR26(ZA[23]); +ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22])+ZA[15]+0xa831c66dU+ZR26(ZA[23]); ZA[11]=ZR15(ZA[15])+ZA[0]; ZA[24]=ZA[2]+ZA[16]; ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[22]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[10]+0xb00327c8U)+ZR26(ZA[24]); +ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[10]+0xb00327c8U+ZR26(ZA[24]); ZA[6]=ZR15(ZA[10])+ZA[17]; ZA[19]=ZA[7]+ZA[22]; ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[11]+0xbf597fc7U)+ZR26(ZA[19]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[11]+0xbf597fc7U+ZR26(ZA[19]); ZA[14]=ZR15(ZA[11])+ZA[4]; ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[22]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[6]+0xc6e00bf3U)+ZR26(ZA[20]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[6]+0xc6e00bf3U+ZR26(ZA[20]); ZA[16]=ZR15(ZA[6])+ZA[3]+0x00400022U; ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[14]+0xd5a79147U)+ZR26(ZA[21]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[14]+0xd5a79147U+ZR26(ZA[21]); ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+0x00000100U; ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[16]+0x06ca6351U)+ZR26(ZA[18]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[16]+0x06ca6351U+ZR26(ZA[18]); ZA[9]+=ZR15(ZA[16])+ZR25(ZA[5])+ZA[15]; ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[22]+0x14292967U)+ZR26(ZA[23]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[22]+0x14292967U+ZR26(ZA[23]); ZA[5]+=ZR15(ZA[22])+ZR25(ZA[12])+ZA[10]; ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[9]+0x27b70a85U)+ZR26(ZA[24]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[9]+0x27b70a85U+ZR26(ZA[24]); ZA[12]+=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[5]+0x2e1b2138U)+ZR26(ZA[19]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[5]+0x2e1b2138U+ZR26(ZA[19]); ZA[1]+=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0]); ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[12]+0x4d2c6dfcU)+ZR26(ZA[20]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[12]+0x4d2c6dfcU+ZR26(ZA[20]); ZA[0]+=ZR15(ZA[12])+ZR25(ZA[17])+ZA[14]; ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[1]+0x53380d13U)+ZR26(ZA[21]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[1]+0x53380d13U+ZR26(ZA[21]); ZA[17]+=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4]); ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[0]+0x650a7354U)+ZR26(ZA[18]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[0]+0x650a7354U+ZR26(ZA[18]); ZA[4]+=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3]); ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[17]+0x766a0abbU)+ZR26(ZA[23]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[17]+0x766a0abbU+ZR26(ZA[23]); ZA[3]+=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13]); ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[4]+0x81c2c92eU)+ZR26(ZA[24]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[4]+0x81c2c92eU+ZR26(ZA[24]); ZA[13]+=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[3]+0x92722c85U)+ZR26(ZA[19]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[3]+0x92722c85U+ZR26(ZA[19]); ZA[15]+=ZR15(ZA[3])+ZA[12]+ZR25(ZA[10]); ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[13]+0xa2bfe8a1U)+ZR26(ZA[20]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[13]+0xa2bfe8a1U+ZR26(ZA[20]); ZA[10]+=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11]); ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[15]+0xa81a664bU)+ZR26(ZA[21]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[15]+0xa81a664bU+ZR26(ZA[21]); ZA[11]+=ZR15(ZA[15])+ZA[0]+ZR25(ZA[6]); ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[10]+0xc24b8b70U)+ZR26(ZA[18]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[10]+0xc24b8b70U+ZR26(ZA[18]); ZA[6]+=ZR15(ZA[10])+ZA[17]+ZR25(ZA[14]); ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[11]+0xc76c51a3U)+ZR26(ZA[23]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[11]+0xc76c51a3U+ZR26(ZA[23]); ZA[14]+=ZR15(ZA[11])+ZA[4]+ZR25(ZA[16]); ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[6]+0xd192e819U)+ZR26(ZA[24]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[6]+0xd192e819U+ZR26(ZA[24]); ZA[16]+=ZR15(ZA[6])+ZA[3]+ZR25(ZA[22]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[14]+0xd6990624U)+ZR26(ZA[19]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[14]+0xd6990624U+ZR26(ZA[19]); ZA[22]+=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9]); ZA[20]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=(ZCh(ZA[20],ZA[19],ZA[24])+ZA[16]+0xf40e3585U)+ZR26(ZA[20]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[16]+0xf40e3585U+ZR26(ZA[20]); ZA[9]+=ZR15(ZA[16])+ZA[15]+ZR25(ZA[5]); ZA[21]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=(ZCh(ZA[21],ZA[20],ZA[19])+ZA[22]+0x106aa070U)+ZR26(ZA[21]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[22]+0x106aa070U+ZR26(ZA[21]); ZA[5]+=ZR15(ZA[22])+ZA[10]+ZR25(ZA[12]); ZA[18]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=(ZCh(ZA[18],ZA[21],ZA[20])+ZA[9]+0x19a4c116U)+ZR26(ZA[18]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[9]+0x19a4c116U+ZR26(ZA[18]); ZA[12]+=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1]); ZA[23]=ZA[8]+ZA[19]; ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=(ZCh(ZA[23],ZA[18],ZA[21])+ZA[5]+0x1e376c08U)+ZR26(ZA[23]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[5]+0x1e376c08U+ZR26(ZA[23]); ZA[1]+=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0]); ZA[24]=ZA[2]+ZA[20]; ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=(ZCh(ZA[24],ZA[23],ZA[18])+ZA[12]+0x2748774cU)+ZR26(ZA[24]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[12]+0x2748774cU+ZR26(ZA[24]); ZA[0]+=ZR15(ZA[12])+ZA[14]+ZR25(ZA[17]); ZA[19]=ZA[7]+ZA[21]; ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=(ZCh(ZA[19],ZA[24],ZA[23])+ZA[1]+0x34b0bcb5U)+ZR26(ZA[19]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[1]+0x34b0bcb5U+ZR26(ZA[19]); ZA[17]+=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4]); ZA[16]=ZA[8]+ZA[18]; ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=(ZCh(ZA[16],ZA[19],ZA[24])+ZA[0]+0x391c0cb3U)+ZR26(ZA[16]); +ZA[23]+=ZCh(ZA[16],ZA[19],ZA[24])+ZA[0]+0x391c0cb3U+ZR26(ZA[16]); ZA[4]+=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3]); ZA[22]=ZA[2]+ZA[23]; ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=(ZCh(ZA[22],ZA[16],ZA[19])+ZA[17]+0x4ed8aa4aU)+ZR26(ZA[22]); +ZA[24]+=ZCh(ZA[22],ZA[16],ZA[19])+ZA[17]+0x4ed8aa4aU+ZR26(ZA[22]); ZA[9]+=ZR15(ZA[17])+ZR25(ZA[13])+ZA[3]; ZA[3]=ZA[7]+ZA[24]; ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=(ZCh(ZA[3],ZA[22],ZA[16])+ZA[4]+0x5b9cca4fU)+ZR26(ZA[3]); +ZA[19]+=ZCh(ZA[3],ZA[22],ZA[16])+ZA[4]+0x5b9cca4fU+ZR26(ZA[3]); ZA[13]+=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15]); ZA[4]=ZA[8]+ZA[19]; ZA[5]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]+=(ZCh(ZA[4],ZA[3],ZA[22])+ZA[9]+0x682e6ff3U)+ZR26(ZA[4]); +ZA[16]+=ZCh(ZA[4],ZA[3],ZA[22])+ZA[9]+0x682e6ff3U+ZR26(ZA[4]); ZA[12]+=ZR15(ZA[9])+ZR25(ZA[10])+ZA[15]; ZA[15]=ZA[2]+ZA[16]; ZA[9]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[5])+ZR30(ZA[5]); -ZA[22]+=(ZCh(ZA[15],ZA[4],ZA[3])+ZA[13]+0x748f82eeU)+ZR26(ZA[15]); +ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3])+ZA[13]+0x748f82eeU+ZR26(ZA[15]); ZA[13]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; ZA[10]=ZA[7]+ZA[22]; ZA[1]=ZA[16]+ZMa(ZA[5],ZA[7],ZA[9])+ZR30(ZA[9]); -ZA[3]+=(ZCh(ZA[10],ZA[15],ZA[4])+ZA[5]+ZA[12]+0x78a5636fU)+ZR26(ZA[10]); -ZA[4]+=(ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[13]+0x84c87814U)+ZR26(ZA[3]); -ZA[15]+=(ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U)+ZR26(ZA[4]); +ZA[3]+=ZCh(ZA[10],ZA[15],ZA[4])+ZA[5]+ZA[12]+0x78a5636fU+ZR26(ZA[10]); +ZA[4]+=ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[13]+0x84c87814U+ZR26(ZA[3]); +ZA[15]+=ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U+ZR26(ZA[4]); From c8bd0e469c2bf39b80849341970098ddf6dd8e9b Mon Sep 17 00:00:00 2001 From: ckolivas Date: Wed, 29 Feb 2012 11:46:28 +1100 Subject: [PATCH 038/117] Split addition lines without functions. --- diablo120222.cl | 1575 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 1179 insertions(+), 396 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 90e212ff..7a3e217f 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -63,456 +63,1239 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( z ZA[25]; const z Znonce = base + (uint)(get_global_id(0)); - -ZA[2]=Znonce+PreVal4_state0; -ZA[3]=ZCh(ZA[2],b1,c1)+d1+ZR26(ZA[2]); -ZA[8]=Znonce+PreVal4_T1; -ZA[4]=ZA[3]+h1; -ZA[5]=ZCh(ZA[4],ZA[2],b1)+c1_plus_k5+ZR26(ZA[4]); -ZA[3]+=ZMa(f1,g1,ZA[8])+ZR30(ZA[8]); -ZA[6]=ZA[5]+g1; -ZA[2]=ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6+ZR26(ZA[6]); -ZA[5]+=ZMa(ZA[8],f1,ZA[3])+ZR30(ZA[3]); -ZA[7]=ZA[2]+f1; -ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); -ZA[10]=Znonce+PreVal4_state0_k7+ZCh(ZA[7],ZA[6],ZA[4])+ZR26(ZA[7]); +ZA[2]=Znonce; +ZA[2]+=PreVal4_state0; +ZA[3]=ZCh(ZA[2],b1,c1); +ZA[3]+=d1; +ZA[3]+=ZR26(ZA[2]); +ZA[8]=Znonce; +ZA[8]+=PreVal4_T1; +ZA[4]=ZA[3]; +ZA[4]+=h1; +ZA[5]=ZCh(ZA[4],ZA[2],b1); +ZA[5]+=c1_plus_k5; +ZA[5]+=ZR26(ZA[4]); +ZA[3]+=ZMa(f1,g1,ZA[8]); +ZA[3]+=ZR30(ZA[8]); +ZA[6]=ZA[5]; +ZA[6]+=g1; +ZA[2]=ZCh(ZA[6],ZA[4],ZA[2]); +ZA[2]+=b1_plus_k6; +ZA[2]+=ZR26(ZA[6]); +ZA[5]+=ZMa(ZA[8],f1,ZA[3]); +ZA[5]+=ZR30(ZA[3]); +ZA[7]=ZA[2]; +ZA[7]+=f1; +ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5]); +ZA[2]+=ZR30(ZA[5]); +ZA[10]=Znonce; +ZA[10]+=PreVal4_state0_k7; +ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4]); +ZA[10]+=ZR26(ZA[7]); ZA[8]+=ZA[10]; -ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); -ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6])+0xd807aa98U+ZR26(ZA[8]); +ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2]); +ZA[10]+=ZR30(ZA[2]); +ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6]); +ZA[4]+=0xd807aa98U; +ZA[4]+=ZR26(ZA[8]); ZA[3]+=ZA[4]; -ZA[4]+=ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); -ZA[6]+=ZCh(ZA[3],ZA[8],ZA[7])+0x12835b01U+ZR26(ZA[3]); +ZA[4]+=ZMa(ZA[2],ZA[5],ZA[10]); +ZA[4]+=ZR30(ZA[10]); +ZA[6]+=ZCh(ZA[3],ZA[8],ZA[7]); +ZA[6]+=0x12835b01U; +ZA[6]+=ZR26(ZA[3]); ZA[5]+=ZA[6]; -ZA[6]+=ZMa(ZA[10],ZA[2],ZA[4])+ZR30(ZA[4]); -ZA[7]+=ZCh(ZA[5],ZA[3],ZA[8])+0x243185beU+ZR26(ZA[5]); +ZA[6]+=ZMa(ZA[10],ZA[2],ZA[4]); +ZA[6]+=ZR30(ZA[4]); +ZA[7]+=ZCh(ZA[5],ZA[3],ZA[8]); +ZA[7]+=0x243185beU; +ZA[7]+=ZR26(ZA[5]); ZA[2]+=ZA[7]; -ZA[7]+=ZMa(ZA[4],ZA[10],ZA[6])+ZR30(ZA[6]); -ZA[8]+=ZCh(ZA[2],ZA[5],ZA[3])+0x550c7dc3U+ZR26(ZA[2]); +ZA[7]+=ZMa(ZA[4],ZA[10],ZA[6]); +ZA[7]+=ZR30(ZA[6]); +ZA[8]+=ZCh(ZA[2],ZA[5],ZA[3]); +ZA[8]+=0x550c7dc3U; +ZA[8]+=ZR26(ZA[2]); ZA[10]+=ZA[8]; -ZA[8]+=ZMa(ZA[6],ZA[4],ZA[7])+ZR30(ZA[7]); -ZA[3]+=ZCh(ZA[10],ZA[2],ZA[5])+0x72be5d74U+ZR26(ZA[10]); +ZA[8]+=ZMa(ZA[6],ZA[4],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[3]+=ZCh(ZA[10],ZA[2],ZA[5]); +ZA[3]+=0x72be5d74U; +ZA[3]+=ZR26(ZA[10]); ZA[4]+=ZA[3]; -ZA[3]+=ZMa(ZA[7],ZA[6],ZA[8])+ZR30(ZA[8]); -ZA[5]+=ZCh(ZA[4],ZA[10],ZA[2])+0x80deb1feU+ZR26(ZA[4]); +ZA[3]+=ZMa(ZA[7],ZA[6],ZA[8]); +ZA[3]+=ZR30(ZA[8]); +ZA[5]+=ZCh(ZA[4],ZA[10],ZA[2]); +ZA[5]+=0x80deb1feU; +ZA[5]+=ZR26(ZA[4]); ZA[6]+=ZA[5]; -ZA[5]+=ZMa(ZA[8],ZA[7],ZA[3])+ZR30(ZA[3]); -ZA[2]+=ZCh(ZA[6],ZA[4],ZA[10])+0x9bdc06a7U+ZR26(ZA[6]); +ZA[5]+=ZMa(ZA[8],ZA[7],ZA[3]); +ZA[5]+=ZR30(ZA[3]); +ZA[2]+=ZCh(ZA[6],ZA[4],ZA[10]); +ZA[2]+=0x9bdc06a7U; +ZA[2]+=ZR26(ZA[6]); ZA[7]+=ZA[2]; -ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5])+ZR30(ZA[5]); -ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4])+0xc19bf3f4U+ZR26(ZA[7]); +ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5]); +ZA[2]+=ZR30(ZA[5]); +ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4]); +ZA[10]+=0xc19bf3f4U; +ZA[10]+=ZR26(ZA[7]); ZA[8]+=ZA[10]; -ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2])+ZR30(ZA[2]); -ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6])+W16_plus_K16+ZR26(ZA[8]); -ZA[0]=ZR25(Znonce)+W18; -ZA[11]=ZA[4]+ZMa(ZA[2],ZA[5],ZA[10])+ZR30(ZA[10]); +ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2]); +ZA[10]+=ZR30(ZA[2]); +ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6]); +ZA[4]+=W16_plus_K16; +ZA[4]+=ZR26(ZA[8]); +ZA[0]=ZR25(Znonce); +ZA[0]+=W18; +ZA[11]=ZA[4]; +ZA[11]+=ZMa(ZA[2],ZA[5],ZA[10]); +ZA[11]+=ZR30(ZA[10]); ZA[4]+=ZA[3]; -ZA[6]+=ZCh(ZA[4],ZA[8],ZA[7])+W17_plus_K17+ZR26(ZA[4]); +ZA[6]+=ZCh(ZA[4],ZA[8],ZA[7]); +ZA[6]+=W17_plus_K17; +ZA[6]+=ZR26(ZA[4]); ZA[5]+=ZA[6]; -ZA[6]+=ZMa(ZA[10],ZA[2],ZA[11])+ZR30(ZA[11]); -ZA[3]=Znonce+W19; -ZA[7]+=ZCh(ZA[5],ZA[4],ZA[8])+ZA[0]+0x0fc19dc6U+ZR26(ZA[5]); -ZA[1]=ZR15(ZA[0])+0x80000000U; -ZA[12]=ZA[7]+ZMa(ZA[11],ZA[10],ZA[6])+ZR30(ZA[6]); +ZA[6]+=ZMa(ZA[10],ZA[2],ZA[11]); +ZA[6]+=ZR30(ZA[11]); +ZA[3]=Znonce; +ZA[3]+=W19; +ZA[7]+=ZCh(ZA[5],ZA[4],ZA[8]); +ZA[7]+=ZA[0]; +ZA[7]+=0x0fc19dc6U; +ZA[7]+=ZR26(ZA[5]); +ZA[1]=ZR15(ZA[0]); +ZA[1]+=0x80000000U; +ZA[12]=ZA[7]; +ZA[12]+=ZMa(ZA[11],ZA[10],ZA[6]); +ZA[12]+=ZR30(ZA[6]); ZA[7]+=ZA[2]; -ZA[8]+=ZCh(ZA[7],ZA[5],ZA[4])+ZA[3]+0x240ca1ccU+ZR26(ZA[7]); +ZA[8]+=ZCh(ZA[7],ZA[5],ZA[4]); +ZA[8]+=ZA[3]; +ZA[8]+=0x240ca1ccU; +ZA[8]+=ZR26(ZA[7]); ZA[2]=ZR15(ZA[3]); -ZA[13]=ZA[8]+ZMa(ZA[6],ZA[11],ZA[12])+ZR30(ZA[12]); +ZA[13]=ZA[8]; +ZA[13]+=ZMa(ZA[6],ZA[11],ZA[12]); +ZA[13]+=ZR30(ZA[12]); ZA[10]+=ZA[8]; -ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5])+ZA[1]+0x2de92c6fU+ZR26(ZA[10]); -ZA[8]=ZR15(ZA[1])+0x00000280U; -ZA[14]=ZA[4]+ZMa(ZA[12],ZA[6],ZA[13])+ZR30(ZA[13]); +ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]); +ZA[4]+=ZA[1]; +ZA[4]+=0x2de92c6fU; +ZA[4]+=ZR26(ZA[10]); +ZA[8]=ZR15(ZA[1]); +ZA[8]+=0x00000280U; +ZA[14]=ZA[4]; +ZA[14]+=ZMa(ZA[12],ZA[6],ZA[13]); +ZA[14]+=ZR30(ZA[13]); ZA[4]+=ZA[11]; -ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7])+ZA[2]+0x4a7484aaU+ZR26(ZA[4]); -ZA[11]=ZR15(ZA[2])+W16; -ZA[15]=ZA[5]+ZMa(ZA[13],ZA[12],ZA[14])+ZR30(ZA[14]); +ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7]); +ZA[5]+=ZA[2]; +ZA[5]+=0x4a7484aaU; +ZA[5]+=ZR26(ZA[4]); +ZA[11]=ZR15(ZA[2]); +ZA[11]+=W16; +ZA[15]=ZA[5]; +ZA[15]+=ZMa(ZA[13],ZA[12],ZA[14]); +ZA[15]+=ZR30(ZA[14]); ZA[5]+=ZA[6]; -ZA[6]=ZCh(ZA[5],ZA[4],ZA[10])+ZA[7]+ZA[8]+0x5cb0a9dcU+ZR26(ZA[5]); -ZA[7]=ZR15(ZA[8])+W17; -ZA[16]=ZA[6]+ZMa(ZA[14],ZA[13],ZA[15])+ZR30(ZA[15]); +ZA[6]=ZCh(ZA[5],ZA[4],ZA[10]); +ZA[6]+=ZA[7]; +ZA[6]+=ZA[8]; +ZA[6]+=0x5cb0a9dcU; +ZA[6]+=ZR26(ZA[5]); +ZA[7]=ZR15(ZA[8]); +ZA[7]+=W17; +ZA[16]=ZA[6]; +ZA[16]+=ZMa(ZA[14],ZA[13],ZA[15]); +ZA[16]+=ZR30(ZA[15]); ZA[6]+=ZA[12]; -ZA[10]+=ZCh(ZA[6],ZA[5],ZA[4])+ZA[11]+0x76f988daU+ZR26(ZA[6]); -ZA[12]=ZR15(ZA[11])+ZA[0]; -ZA[17]=ZA[10]+ZMa(ZA[15],ZA[14],ZA[16])+ZR30(ZA[16]); +ZA[10]+=ZCh(ZA[6],ZA[5],ZA[4]); +ZA[10]+=ZA[11]; +ZA[10]+=0x76f988daU; +ZA[10]+=ZR26(ZA[6]); +ZA[12]=ZR15(ZA[11]); +ZA[12]+=ZA[0]; +ZA[17]=ZA[10]; +ZA[17]+=ZMa(ZA[15],ZA[14],ZA[16]); +ZA[17]+=ZR30(ZA[16]); ZA[10]+=ZA[13]; -ZA[13]=ZCh(ZA[10],ZA[6],ZA[5])+ZA[4]+ZA[7]+0x983e5152U+ZR26(ZA[10]); -ZA[4]=ZR15(ZA[7])+ZA[3]; +ZA[13]=ZCh(ZA[10],ZA[6],ZA[5]); +ZA[13]+=ZA[4]; +ZA[13]+=ZA[7]; +ZA[13]+=0x983e5152U; +ZA[13]+=ZR26(ZA[10]); +ZA[4]=ZR15(ZA[7]); +ZA[4]+=ZA[3]; ZA[14]+=ZA[13]; -ZA[13]+=ZMa(ZA[16],ZA[15],ZA[17])+ZR30(ZA[17]); -ZA[5]+=ZCh(ZA[14],ZA[10],ZA[6])+ZA[12]+0xa831c66dU+ZR26(ZA[14]); -ZA[9]=ZR15(ZA[12])+ZA[1]; -ZA[18]=ZA[5]+ZMa(ZA[17],ZA[16],ZA[13])+ZR30(ZA[13]); +ZA[13]+=ZMa(ZA[16],ZA[15],ZA[17]); +ZA[13]+=ZR30(ZA[17]); +ZA[5]+=ZCh(ZA[14],ZA[10],ZA[6]); +ZA[5]+=ZA[12]; +ZA[5]+=0xa831c66dU; +ZA[5]+=ZR26(ZA[14]); +ZA[9]=ZR15(ZA[12]); +ZA[9]+=ZA[1]; +ZA[18]=ZA[5]; +ZA[18]+=ZMa(ZA[17],ZA[16],ZA[13]); +ZA[18]+=ZR30(ZA[13]); ZA[5]+=ZA[15]; -ZA[15]=ZCh(ZA[5],ZA[14],ZA[10])+ZA[6]+ZA[4]+0xb00327c8U+ZR26(ZA[5]); -ZA[6]=ZR15(ZA[4])+ZA[2]; -ZA[19]=ZA[15]+ZMa(ZA[13],ZA[17],ZA[18])+ZR30(ZA[18]); +ZA[15]=ZCh(ZA[5],ZA[14],ZA[10]); +ZA[15]+=ZA[6]; +ZA[15]+=ZA[4]; +ZA[15]+=0xb00327c8U; +ZA[15]+=ZR26(ZA[5]); +ZA[6]=ZR15(ZA[4]); +ZA[6]+=ZA[2]; +ZA[19]=ZA[15]; +ZA[19]+=ZMa(ZA[13],ZA[17],ZA[18]); +ZA[19]+=ZR30(ZA[18]); ZA[15]+=ZA[16]; -ZA[16]=ZCh(ZA[15],ZA[5],ZA[14])+ZA[10]+ZA[9]+0xbf597fc7U+ZR26(ZA[15]); -ZA[10]=ZR15(ZA[9])+ZA[8]; -ZA[20]=ZA[16]+ZMa(ZA[18],ZA[13],ZA[19])+ZR30(ZA[19]); +ZA[16]=ZCh(ZA[15],ZA[5],ZA[14]); +ZA[16]+=ZA[10]; +ZA[16]+=ZA[9]; +ZA[16]+=0xbf597fc7U; +ZA[16]+=ZR26(ZA[15]); +ZA[10]=ZR15(ZA[9]); +ZA[10]+=ZA[8]; +ZA[20]=ZA[16]; +ZA[20]+=ZMa(ZA[18],ZA[13],ZA[19]); +ZA[20]+=ZR30(ZA[19]); ZA[16]+=ZA[17]; -ZA[14]+=ZCh(ZA[16],ZA[15],ZA[5])+ZA[6]+0xc6e00bf3U+ZR26(ZA[16]); -ZA[17]=ZR15(ZA[6])+ZA[11]+0x00A00055U; -ZA[21]=ZA[14]+ZMa(ZA[19],ZA[18],ZA[20])+ZR30(ZA[20]); +ZA[14]+=ZCh(ZA[16],ZA[15],ZA[5]); +ZA[14]+=ZA[6]; +ZA[14]+=0xc6e00bf3U; +ZA[14]+=ZR26(ZA[16]); +ZA[17]=ZR15(ZA[6]); +ZA[17]+=ZA[11]; +ZA[17]+=0x00A00055U; +ZA[21]=ZA[14]; +ZA[21]+=ZMa(ZA[19],ZA[18],ZA[20]); +ZA[21]+=ZR30(ZA[20]); ZA[14]+=ZA[13]; -ZA[13]=ZCh(ZA[14],ZA[16],ZA[15])+ZA[5]+ZA[10]+0xd5a79147U+ZR26(ZA[14]); -ZA[5]=ZR15(ZA[10])+ZA[7]+W31; -ZA[22]=ZA[13]+ZMa(ZA[20],ZA[19],ZA[21])+ZR30(ZA[21]); +ZA[13]=ZCh(ZA[14],ZA[16],ZA[15]); +ZA[13]+=ZA[5]; +ZA[13]+=ZA[10]; +ZA[13]+=0xd5a79147U; +ZA[13]+=ZR26(ZA[14]); +ZA[5]=ZR15(ZA[10]); +ZA[5]+=ZA[7]; +ZA[5]+=W31; +ZA[22]=ZA[13]; +ZA[22]+=ZMa(ZA[20],ZA[19],ZA[21]); +ZA[22]+=ZR30(ZA[21]); ZA[13]+=ZA[18]; -ZA[18]=ZCh(ZA[13],ZA[14],ZA[16])+ZA[15]+ZA[17]+0x06ca6351U+ZR26(ZA[13]); -ZA[15]=ZR15(ZA[17])+ZA[12]+W32; -ZA[23]=ZA[18]+ZMa(ZA[21],ZA[20],ZA[22])+ZR30(ZA[22]); +ZA[18]=ZCh(ZA[13],ZA[14],ZA[16]); +ZA[18]+=ZA[15]; +ZA[18]+=ZA[17]; +ZA[18]+=0x06ca6351U; +ZA[18]+=ZR26(ZA[13]); +ZA[15]=ZR15(ZA[17]); +ZA[15]+=ZA[12]; +ZA[15]+=W32; +ZA[23]=ZA[18]; +ZA[23]+=ZMa(ZA[21],ZA[20],ZA[22]); +ZA[23]+=ZR30(ZA[22]); ZA[18]+=ZA[19]; -ZA[19]=ZCh(ZA[18],ZA[13],ZA[14])+ZA[16]+ZA[5]+0x14292967U+ZR26(ZA[18]); -ZA[16]=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0])+W17; +ZA[19]=ZCh(ZA[18],ZA[13],ZA[14]); +ZA[19]+=ZA[16]; +ZA[19]+=ZA[5]; +ZA[19]+=0x14292967U; +ZA[19]+=ZR26(ZA[18]); +ZA[16]=ZR15(ZA[5]); +ZA[16]+=ZA[4]; +ZA[16]+=ZR25(ZA[0]); +ZA[16]+=W17; ZA[20]+=ZA[19]; -ZA[19]+=ZMa(ZA[22],ZA[21],ZA[23])+ZR30(ZA[23]); -ZA[14]+=ZCh(ZA[20],ZA[18],ZA[13])+ZA[15]+0x27b70a85U+ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[15])+ZR25(ZA[3])+ZA[9]; -ZA[24]=ZA[14]+ZMa(ZA[23],ZA[22],ZA[19])+ZR30(ZA[19]); +ZA[19]+=ZMa(ZA[22],ZA[21],ZA[23]); +ZA[19]+=ZR30(ZA[23]); +ZA[14]+=ZCh(ZA[20],ZA[18],ZA[13]); +ZA[14]+=ZA[15]; +ZA[14]+=0x27b70a85U; +ZA[14]+=ZR26(ZA[20]); +ZA[0]+=ZR15(ZA[15]); +ZA[0]+=ZR25(ZA[3]); +ZA[0]+=ZA[9]; +ZA[24]=ZA[14]; +ZA[24]+=ZMa(ZA[23],ZA[22],ZA[19]); +ZA[24]+=ZR30(ZA[19]); ZA[14]+=ZA[21]; -ZA[21]=ZCh(ZA[14],ZA[20],ZA[18])+ZA[13]+ZA[16]+0x2e1b2138U+ZR26(ZA[14]); -ZA[3]+=ZR15(ZA[16])+ZR25(ZA[1])+ZA[6]; +ZA[21]=ZCh(ZA[14],ZA[20],ZA[18]); +ZA[21]+=ZA[13]; +ZA[21]+=ZA[16]; +ZA[21]+=0x2e1b2138U; +ZA[21]+=ZR26(ZA[14]); +ZA[3]+=ZR15(ZA[16]); +ZA[3]+=ZR25(ZA[1]); +ZA[3]+=ZA[6]; ZA[22]+=ZA[21]; -ZA[21]+=ZMa(ZA[19],ZA[23],ZA[24])+ZR30(ZA[24]); -ZA[13]=ZCh(ZA[22],ZA[14],ZA[20])+ZA[18]+ZA[0]+0x4d2c6dfcU+ZR26(ZA[22]); -ZA[1]+=ZR15(ZA[0])+ZR25(ZA[2])+ZA[10]; -ZA[18]=ZA[13]+ZMa(ZA[24],ZA[19],ZA[21])+ZR30(ZA[21]); +ZA[21]+=ZMa(ZA[19],ZA[23],ZA[24]); +ZA[21]+=ZR30(ZA[24]); +ZA[13]=ZCh(ZA[22],ZA[14],ZA[20]); +ZA[13]+=ZA[18]; +ZA[13]+=ZA[0]; +ZA[13]+=0x4d2c6dfcU; +ZA[13]+=ZR26(ZA[22]); +ZA[1]+=ZR15(ZA[0]); +ZA[1]+=ZR25(ZA[2]); +ZA[1]+=ZA[10]; +ZA[18]=ZA[13]; +ZA[18]+=ZMa(ZA[24],ZA[19],ZA[21]); +ZA[18]+=ZR30(ZA[21]); ZA[13]+=ZA[23]; -ZA[20]+=ZCh(ZA[13],ZA[22],ZA[14])+ZA[3]+0x53380d13U+ZR26(ZA[13]); -ZA[2]+=ZR15(ZA[3])+ZR25(ZA[8])+ZA[17]; -ZA[23]=ZA[19]+ZA[20]; -ZA[20]+=ZMa(ZA[21],ZA[24],ZA[18])+ZR30(ZA[18]); -ZA[19]=ZCh(ZA[23],ZA[13],ZA[22])+ZA[14]+ZA[1]+0x650a7354U+ZR26(ZA[23]); -ZA[8]+=ZR15(ZA[1])+ZR25(ZA[11])+ZA[5]; -ZA[14]=ZA[19]+ZMa(ZA[18],ZA[21],ZA[20])+ZR30(ZA[20]); +ZA[20]+=ZCh(ZA[13],ZA[22],ZA[14]); +ZA[20]+=ZA[3]; +ZA[20]+=0x53380d13U; +ZA[20]+=ZR26(ZA[13]); +ZA[2]+=ZR15(ZA[3]); +ZA[2]+=ZR25(ZA[8]); +ZA[2]+=ZA[17]; +ZA[23]=ZA[19]; +ZA[23]+=ZA[20]; +ZA[20]+=ZMa(ZA[21],ZA[24],ZA[18]); +ZA[20]+=ZR30(ZA[18]); +ZA[19]=ZCh(ZA[23],ZA[13],ZA[22]); +ZA[19]+=ZA[14]; +ZA[19]+=ZA[1]; +ZA[19]+=0x650a7354U; +ZA[19]+=ZR26(ZA[23]); +ZA[8]+=ZR15(ZA[1]); +ZA[8]+=ZR25(ZA[11]); +ZA[8]+=ZA[5]; +ZA[14]=ZA[19]; +ZA[14]+=ZMa(ZA[18],ZA[21],ZA[20]); +ZA[14]+=ZR30(ZA[20]); ZA[19]+=ZA[24]; -ZA[22]+=ZCh(ZA[19],ZA[23],ZA[13])+ZA[2]+0x766a0abbU+ZR26(ZA[19]); -ZA[11]+=ZR15(ZA[2])+ZR25(ZA[7])+ZA[15]; -ZA[24]=ZA[21]+ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); -ZA[21]=ZCh(ZA[24],ZA[19],ZA[23])+ZA[13]+ZA[8]+0x81c2c92eU+ZR26(ZA[24]); -ZA[7]+=ZR15(ZA[8])+ZR25(ZA[12])+ZA[16]; +ZA[22]+=ZCh(ZA[19],ZA[23],ZA[13]); +ZA[22]+=ZA[2]; +ZA[22]+=0x766a0abbU; +ZA[22]+=ZR26(ZA[19]); +ZA[11]+=ZR15(ZA[2]); +ZA[11]+=ZR25(ZA[7]); +ZA[11]+=ZA[15]; +ZA[24]=ZA[21]; +ZA[24]+=ZA[22]; +ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14]); +ZA[22]+=ZR30(ZA[14]); +ZA[21]=ZCh(ZA[24],ZA[19],ZA[23]); +ZA[21]+=ZA[13]; +ZA[21]+=ZA[8]; +ZA[21]+=0x81c2c92eU; +ZA[21]+=ZR26(ZA[24]); +ZA[7]+=ZR15(ZA[8]); +ZA[7]+=ZR25(ZA[12]); +ZA[7]+=ZA[16]; ZA[18]+=ZA[21]; -ZA[21]+=ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[23]+=ZCh(ZA[18],ZA[24],ZA[19])+ZA[11]+0x92722c85U+ZR26(ZA[18]); -ZA[12]+=ZR15(ZA[11])+ZR25(ZA[4])+ZA[0]; +ZA[21]+=ZMa(ZA[14],ZA[20],ZA[22]); +ZA[21]+=ZR30(ZA[22]); +ZA[23]+=ZCh(ZA[18],ZA[24],ZA[19]); +ZA[23]+=ZA[11]; +ZA[23]+=0x92722c85U; +ZA[23]+=ZR26(ZA[18]); +ZA[12]+=ZR15(ZA[11]); +ZA[12]+=ZR25(ZA[4]); +ZA[12]+=ZA[0]; ZA[20]+=ZA[23]; -ZA[13]=ZA[23]+ZMa(ZA[22],ZA[14],ZA[21])+ZR30(ZA[21]); -ZA[23]=ZCh(ZA[20],ZA[18],ZA[24])+ZA[19]+ZA[7]+0xa2bfe8a1U+ZR26(ZA[20]); -ZA[4]+=ZR15(ZA[7])+ZR25(ZA[9])+ZA[3]; +ZA[13]=ZA[23]; +ZA[13]+=ZMa(ZA[22],ZA[14],ZA[21]); +ZA[13]+=ZR30(ZA[21]); +ZA[23]=ZCh(ZA[20],ZA[18],ZA[24]); +ZA[23]+=ZA[19]; +ZA[23]+=ZA[7]; +ZA[23]+=0xa2bfe8a1U; +ZA[23]+=ZR26(ZA[20]); +ZA[4]+=ZR15(ZA[7]); +ZA[4]+=ZR25(ZA[9]); +ZA[4]+=ZA[3]; ZA[14]+=ZA[23]; -ZA[23]+=ZMa(ZA[21],ZA[22],ZA[13])+ZR30(ZA[13]); -ZA[24]+=ZCh(ZA[14],ZA[20],ZA[18])+ZA[12]+0xa81a664bU+ZR26(ZA[14]); -ZA[9]+=ZR15(ZA[12])+ZA[1]+ZR25(ZA[6]); -ZA[19]=ZA[24]+ZMa(ZA[13],ZA[21],ZA[23])+ZR30(ZA[23]); +ZA[23]+=ZMa(ZA[21],ZA[22],ZA[13]); +ZA[23]+=ZR30(ZA[13]); +ZA[24]+=ZCh(ZA[14],ZA[20],ZA[18]); +ZA[24]+=ZA[12]; +ZA[24]+=0xa81a664bU; +ZA[24]+=ZR26(ZA[14]); +ZA[9]+=ZR15(ZA[12]); +ZA[9]+=ZA[1]; +ZA[9]+=ZR25(ZA[6]); +ZA[19]=ZA[24]; +ZA[19]+=ZMa(ZA[13],ZA[21],ZA[23]); +ZA[19]+=ZR30(ZA[23]); ZA[22]+=ZA[24]; -ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20])+ZA[4]+0xc24b8b70U+ZR26(ZA[22]); -ZA[6]+=ZR15(ZA[4])+ZA[2]+ZR25(ZA[10]); -ZA[24]=ZA[21]+ZA[18]; -ZA[18]+=ZMa(ZA[23],ZA[13],ZA[19])+ZR30(ZA[19]); -ZA[20]+=ZCh(ZA[24],ZA[22],ZA[14])+ZA[9]+0xc76c51a3U+ZR26(ZA[24]); -ZA[10]+=ZR15(ZA[9])+ZR25(ZA[17])+ZA[8]; +ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20]); +ZA[18]+=ZA[4]; +ZA[18]+=0xc24b8b70U; +ZA[18]+=ZR26(ZA[22]); +ZA[6]+=ZR15(ZA[4]); +ZA[6]+=ZA[2]; +ZA[6]+=ZR25(ZA[10]); +ZA[24]=ZA[21]; +ZA[24]+=ZA[18]; +ZA[18]+=ZMa(ZA[23],ZA[13],ZA[19]); +ZA[18]+=ZR30(ZA[19]); +ZA[20]+=ZCh(ZA[24],ZA[22],ZA[14]); +ZA[20]+=ZA[9]; +ZA[20]+=0xc76c51a3U; +ZA[20]+=ZR26(ZA[24]); +ZA[10]+=ZR15(ZA[9]); +ZA[10]+=ZR25(ZA[17]); +ZA[10]+=ZA[8]; ZA[13]+=ZA[20]; -ZA[20]+=ZMa(ZA[19],ZA[23],ZA[18])+ZR30(ZA[18]); -ZA[14]+=ZCh(ZA[13],ZA[24],ZA[22])+ZA[6]+0xd192e819U+ZR26(ZA[13]); -ZA[17]+=ZR15(ZA[6])+ZR25(ZA[5])+ZA[11]; -ZA[21]=ZA[23]+ZA[14]; -ZA[14]+=ZMa(ZA[18],ZA[19],ZA[20])+ZR30(ZA[20]); -ZA[22]+=ZCh(ZA[21],ZA[13],ZA[24])+ZA[10]+0xd6990624U+ZR26(ZA[21]); -ZA[5]+=ZR15(ZA[10])+ZA[7]+ZR25(ZA[15]); +ZA[20]+=ZMa(ZA[19],ZA[23],ZA[18]); +ZA[20]+=ZR30(ZA[18]); +ZA[14]+=ZCh(ZA[13],ZA[24],ZA[22]); +ZA[14]+=ZA[6]; +ZA[14]+=0xd192e819U; +ZA[14]+=ZR26(ZA[13]); +ZA[17]+=ZR15(ZA[6]); +ZA[17]+=ZR25(ZA[5]); +ZA[17]+=ZA[11]; +ZA[21]=ZA[23]; +ZA[21]+=ZA[14]; +ZA[14]+=ZMa(ZA[18],ZA[19],ZA[20]); +ZA[14]+=ZR30(ZA[20]); +ZA[22]+=ZCh(ZA[21],ZA[13],ZA[24]); +ZA[22]+=ZA[10]; +ZA[22]+=0xd6990624U; +ZA[22]+=ZR26(ZA[21]); +ZA[5]+=ZR15(ZA[10]); +ZA[5]+=ZA[7]; +ZA[5]+=ZR25(ZA[15]); ZA[19]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14])+ZR30(ZA[14]); -ZA[24]+=ZCh(ZA[19],ZA[21],ZA[13])+ZA[17]+0xf40e3585U+ZR26(ZA[19]); -ZA[15]+=ZR15(ZA[17])+ZA[12]+ZR25(ZA[16]); +ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14]); +ZA[22]+=ZR30(ZA[14]); +ZA[24]+=ZCh(ZA[19],ZA[21],ZA[13]); +ZA[24]+=ZA[17]; +ZA[24]+=0xf40e3585U; +ZA[24]+=ZR26(ZA[19]); +ZA[15]+=ZR15(ZA[17]); +ZA[15]+=ZA[12]; +ZA[15]+=ZR25(ZA[16]); ZA[18]+=ZA[24]; -ZA[23]=ZA[24]+ZMa(ZA[14],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[13]+=ZCh(ZA[18],ZA[19],ZA[21])+ZA[5]+0x106aa070U+ZR26(ZA[18]); -ZA[16]+=ZR15(ZA[5])+ZA[4]+ZR25(ZA[0]); +ZA[23]=ZA[24]; +ZA[23]+=ZMa(ZA[14],ZA[20],ZA[22]); +ZA[23]+=ZR30(ZA[22]); +ZA[13]+=ZCh(ZA[18],ZA[19],ZA[21]); +ZA[13]+=ZA[5]; +ZA[13]+=0x106aa070U; +ZA[13]+=ZR26(ZA[18]); +ZA[16]+=ZR15(ZA[5]); +ZA[16]+=ZA[4]; +ZA[16]+=ZR25(ZA[0]); ZA[20]+=ZA[13]; -ZA[13]+=ZMa(ZA[22],ZA[14],ZA[23])+ZR30(ZA[23]); -ZA[21]+=ZCh(ZA[20],ZA[18],ZA[19])+ZA[15]+0x19a4c116U+ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[15])+ZA[9]+ZR25(ZA[3]); +ZA[13]+=ZMa(ZA[22],ZA[14],ZA[23]); +ZA[13]+=ZR30(ZA[23]); +ZA[21]+=ZCh(ZA[20],ZA[18],ZA[19]); +ZA[21]+=ZA[15]; +ZA[21]+=0x19a4c116U; +ZA[21]+=ZR26(ZA[20]); +ZA[0]+=ZR15(ZA[15]); +ZA[0]+=ZA[9]; +ZA[0]+=ZR25(ZA[3]); ZA[14]+=ZA[21]; -ZA[24]=ZA[21]+ZMa(ZA[23],ZA[22],ZA[13])+ZR30(ZA[13]); -ZA[19]+=ZCh(ZA[14],ZA[20],ZA[18])+ZA[16]+0x1e376c08U+ZR26(ZA[14]); -ZA[3]+=ZR15(ZA[16])+ZA[6]+ZR25(ZA[1]); +ZA[24]=ZA[21]; +ZA[24]+=ZMa(ZA[23],ZA[22],ZA[13]); +ZA[24]+=ZR30(ZA[13]); +ZA[19]+=ZCh(ZA[14],ZA[20],ZA[18]); +ZA[19]+=ZA[16]; +ZA[19]+=0x1e376c08U; +ZA[19]+=ZR26(ZA[14]); +ZA[3]+=ZR15(ZA[16]); +ZA[3]+=ZA[6]; +ZA[3]+=ZR25(ZA[1]); ZA[22]+=ZA[19]; -ZA[19]+=ZMa(ZA[13],ZA[23],ZA[24])+ZR30(ZA[24]); -ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20])+ZA[0]+0x2748774cU+ZR26(ZA[22]); -ZA[1]+=ZR15(ZA[0])+ZA[10]+ZR25(ZA[2]); +ZA[19]+=ZMa(ZA[13],ZA[23],ZA[24]); +ZA[19]+=ZR30(ZA[24]); +ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20]); +ZA[18]+=ZA[0]; +ZA[18]+=0x2748774cU; +ZA[18]+=ZR26(ZA[22]); +ZA[1]+=ZR15(ZA[0]); +ZA[1]+=ZA[10]; +ZA[1]+=ZR25(ZA[2]); ZA[23]+=ZA[18]; -ZA[21]=ZA[18]+ZMa(ZA[24],ZA[13],ZA[19])+ZR30(ZA[19]); -ZA[20]+=ZCh(ZA[23],ZA[22],ZA[14])+ZA[3]+0x34b0bcb5U+ZR26(ZA[23]); -ZA[2]+=ZR15(ZA[3])+ZA[17]+ZR25(ZA[8]); +ZA[21]=ZA[18]; +ZA[21]+=ZMa(ZA[24],ZA[13],ZA[19]); +ZA[21]+=ZR30(ZA[19]); +ZA[20]+=ZCh(ZA[23],ZA[22],ZA[14]); +ZA[20]+=ZA[3]; +ZA[20]+=0x34b0bcb5U; +ZA[20]+=ZR26(ZA[23]); +ZA[2]+=ZR15(ZA[3]); +ZA[2]+=ZA[17]; +ZA[2]+=ZR25(ZA[8]); ZA[13]+=ZA[20]; -ZA[20]+=ZMa(ZA[19],ZA[24],ZA[21])+ZR30(ZA[21]); -ZA[14]+=ZCh(ZA[13],ZA[23],ZA[22])+ZA[1]+0x391c0cb3U+ZR26(ZA[13]); -ZA[8]+=ZR15(ZA[1])+ZA[5]+ZR25(ZA[11]); +ZA[20]+=ZMa(ZA[19],ZA[24],ZA[21]); +ZA[20]+=ZR30(ZA[21]); +ZA[14]+=ZCh(ZA[13],ZA[23],ZA[22]); +ZA[14]+=ZA[1]; +ZA[14]+=0x391c0cb3U; +ZA[14]+=ZR26(ZA[13]); +ZA[8]+=ZR15(ZA[1]); +ZA[8]+=ZA[5]; +ZA[8]+=ZR25(ZA[11]); ZA[24]+=ZA[14]; -ZA[18]=ZA[14]+ZMa(ZA[21],ZA[19],ZA[20])+ZR30(ZA[20]); -ZA[22]+=ZCh(ZA[24],ZA[13],ZA[23])+ZA[2]+0x4ed8aa4aU+ZR26(ZA[24]); -ZA[11]+=ZR15(ZA[2])+ZA[15]+ZR25(ZA[7]); +ZA[18]=ZA[14]; +ZA[18]+=ZMa(ZA[21],ZA[19],ZA[20]); +ZA[18]+=ZR30(ZA[20]); +ZA[22]+=ZCh(ZA[24],ZA[13],ZA[23]); +ZA[22]+=ZA[2]; +ZA[22]+=0x4ed8aa4aU; +ZA[22]+=ZR26(ZA[24]); +ZA[11]+=ZR15(ZA[2]); +ZA[11]+=ZA[15]; +ZA[11]+=ZR25(ZA[7]); ZA[19]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[21],ZA[18])+ZR30(ZA[18]); -ZA[23]+=ZCh(ZA[19],ZA[24],ZA[13])+ZA[8]+0x5b9cca4fU+ZR26(ZA[19]); -ZA[7]+=ZR15(ZA[8])+ZA[16]+ZR25(ZA[12]); +ZA[22]+=ZMa(ZA[20],ZA[21],ZA[18]); +ZA[22]+=ZR30(ZA[18]); +ZA[23]+=ZCh(ZA[19],ZA[24],ZA[13]); +ZA[23]+=ZA[8]; +ZA[23]+=0x5b9cca4fU; +ZA[23]+=ZR26(ZA[19]); +ZA[7]+=ZR15(ZA[8]); +ZA[7]+=ZA[16]; +ZA[7]+=ZR25(ZA[12]); ZA[21]+=ZA[23]; -ZA[23]+=ZMa(ZA[18],ZA[20],ZA[22])+ZR30(ZA[22]); -ZA[13]+=ZCh(ZA[21],ZA[19],ZA[24])+ZA[11]+0x682e6ff3U+ZR26(ZA[21]); -ZA[0]+=ZR15(ZA[11])+ZR25(ZA[4])+ZA[12]; -ZA[12]=ZA[20]+ZA[13]; -ZA[16]=ZA[13]+ZMa(ZA[22],ZA[18],ZA[23])+ZR30(ZA[23]); -ZA[20]=ZCh(ZA[12],ZA[21],ZA[19])+ZA[24]+ZA[7]+0x748f82eeU+ZR26(ZA[12]); -ZA[3]+=ZR15(ZA[7])+ZR25(ZA[9])+ZA[4]; +ZA[23]+=ZMa(ZA[18],ZA[20],ZA[22]); +ZA[23]+=ZR30(ZA[22]); +ZA[13]+=ZCh(ZA[21],ZA[19],ZA[24]); +ZA[13]+=ZA[11]; +ZA[13]+=0x682e6ff3U; +ZA[13]+=ZR26(ZA[21]); +ZA[0]+=ZR15(ZA[11]); +ZA[0]+=ZR25(ZA[4]); +ZA[0]+=ZA[12]; +ZA[12]=ZA[20]; +ZA[12]+=ZA[13]; +ZA[16]=ZA[13]; +ZA[16]+=ZMa(ZA[22],ZA[18],ZA[23]); +ZA[16]+=ZR30(ZA[23]); +ZA[20]=ZCh(ZA[12],ZA[21],ZA[19]); +ZA[20]+=ZA[24]; +ZA[20]+=ZA[7]; +ZA[20]+=0x748f82eeU; +ZA[20]+=ZR26(ZA[12]); +ZA[3]+=ZR15(ZA[7]); +ZA[3]+=ZR25(ZA[9]); +ZA[3]+=ZA[4]; ZA[18]+=ZA[20]; -ZA[20]+=ZMa(ZA[23],ZA[22],ZA[16])+ZR30(ZA[16]); -ZA[19]+=ZCh(ZA[18],ZA[12],ZA[21])+ZA[0]+0x78a5636fU+ZR26(ZA[18]); -ZA[1]+=ZR15(ZA[0])+ZR25(ZA[6])+ZA[9]; -ZA[9]=ZA[22]+ZA[19]; -ZA[4]=ZA[19]+ZMa(ZA[16],ZA[23],ZA[20])+ZR30(ZA[20]); -ZA[0]=ZCh(ZA[9],ZA[18],ZA[12])+ZA[21]+ZA[3]+0x84c87814U+ZR26(ZA[9]); -ZA[2]+=ZR15(ZA[3])+ZR25(ZA[10])+ZA[6]; -ZA[6]=ZA[23]+ZA[0]; -ZA[0]+=ZMa(ZA[20],ZA[16],ZA[4])+ZR30(ZA[4]); -ZA[12]+=ZCh(ZA[6],ZA[9],ZA[18])+ZA[1]+0x8cc70208U+ZR26(ZA[6]); -ZA[8]+=ZR15(ZA[1])+ZR25(ZA[17])+ZA[10]; +ZA[20]+=ZMa(ZA[23],ZA[22],ZA[16]); +ZA[20]+=ZR30(ZA[16]); +ZA[19]+=ZCh(ZA[18],ZA[12],ZA[21]); +ZA[19]+=ZA[0]; +ZA[19]+=0x78a5636fU; +ZA[19]+=ZR26(ZA[18]); +ZA[1]+=ZR15(ZA[0]); +ZA[1]+=ZR25(ZA[6]); +ZA[1]+=ZA[9]; +ZA[9]=ZA[22]; +ZA[9]+=ZA[19]; +ZA[4]=ZA[19]; +ZA[4]+=ZMa(ZA[16],ZA[23],ZA[20]); +ZA[4]+=ZR30(ZA[20]); +ZA[0]=ZCh(ZA[9],ZA[18],ZA[12]); +ZA[0]+=ZA[21]; +ZA[0]+=ZA[3]; +ZA[0]+=0x84c87814U; +ZA[0]+=ZR26(ZA[9]); +ZA[2]+=ZR15(ZA[3]); +ZA[2]+=ZR25(ZA[10]); +ZA[2]+=ZA[6]; +ZA[6]=ZA[23]; +ZA[6]+=ZA[0]; +ZA[0]+=ZMa(ZA[20],ZA[16],ZA[4]); +ZA[0]+=ZR30(ZA[4]); +ZA[12]+=ZCh(ZA[6],ZA[9],ZA[18]); +ZA[12]+=ZA[1]; +ZA[12]+=0x8cc70208U; +ZA[12]+=ZR26(ZA[6]); +ZA[8]+=ZR15(ZA[1]); +ZA[8]+=ZR25(ZA[17]); +ZA[8]+=ZA[10]; ZA[16]+=ZA[12]; -ZA[10]=ZA[12]+ZMa(ZA[4],ZA[20],ZA[0])+ZR30(ZA[0]); -ZA[1]=ZCh(ZA[16],ZA[6],ZA[9])+ZA[18]+ZA[2]+0x90befffaU+ZR26(ZA[16]); -ZA[3]=ZA[20]+ZA[1]; -ZA[1]+=ZMa(ZA[0],ZA[4],ZA[10])+ZR30(ZA[10]); -ZA[9]+=ZCh(ZA[3],ZA[16],ZA[6])+ZA[8]+0xa4506cebU+ZR26(ZA[3]); -ZA[12]=ZA[9]+ZMa(ZA[10],ZA[0],ZA[1])+ZR30(ZA[1]); +ZA[10]=ZA[12]; +ZA[10]+=ZMa(ZA[4],ZA[20],ZA[0]); +ZA[10]+=ZR30(ZA[0]); +ZA[1]=ZCh(ZA[16],ZA[6],ZA[9]); +ZA[1]+=ZA[18]; +ZA[1]+=ZA[2]; +ZA[1]+=0x90befffaU; +ZA[1]+=ZR26(ZA[16]); +ZA[3]=ZA[20]; +ZA[3]+=ZA[1]; +ZA[1]+=ZMa(ZA[0],ZA[4],ZA[10]); +ZA[1]+=ZR30(ZA[10]); +ZA[9]+=ZCh(ZA[3],ZA[16],ZA[6]); +ZA[9]+=ZA[8]; +ZA[9]+=0xa4506cebU; +ZA[9]+=ZR26(ZA[3]); +ZA[12]=ZA[9]; +ZA[12]+=ZMa(ZA[10],ZA[0],ZA[1]); +ZA[12]+=ZR30(ZA[1]); ZA[4]+=ZA[9]; -ZA[6]+=ZCh(ZA[4],ZA[3],ZA[16])+ZR15(ZA[2])+ZA[11]+ZR25(ZA[5])+ZA[17]+0xbef9a3f7U+ZR26(ZA[4]); -ZA[17]=ZA[0]+ZA[6]; -ZA[9]=ZA[6]+ZMa(ZA[1],ZA[10],ZA[12])+ZR30(ZA[12]); -ZA[7]+=ZCh(ZA[17],ZA[4],ZA[3])+ZA[16]+ZR15(ZA[8])+ZR25(ZA[15])+ZA[5]+0xc67178f2U+ZR26(ZA[17]); -ZA[5]=ZA[9]+state1; -ZA[9]=ZA[7]+ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9])+state0; -ZA[15]=ZA[9]+0x98c7e2a2U; -ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU)+ZA[5]+0x90bb1e3cU+ZR26(ZA[15]); +ZA[6]+=ZCh(ZA[4],ZA[3],ZA[16]); +ZA[6]+=ZR15(ZA[2]); +ZA[6]+=ZA[11]; +ZA[6]+=ZR25(ZA[5]); +ZA[6]+=ZA[17]; +ZA[6]+=0xbef9a3f7U; +ZA[6]+=ZR26(ZA[4]); +ZA[17]=ZA[0]; +ZA[17]+=ZA[6]; +ZA[9]=ZA[6]; +ZA[9]+=ZMa(ZA[1],ZA[10],ZA[12]); +ZA[9]+=ZR30(ZA[12]); +ZA[7]+=ZCh(ZA[17],ZA[4],ZA[3]); +ZA[7]+=ZA[16]; +ZA[7]+=ZR15(ZA[8]); +ZA[7]+=ZR25(ZA[15]); +ZA[7]+=ZA[5]; +ZA[7]+=0xc67178f2U; +ZA[7]+=ZR26(ZA[17]); +ZA[5]=ZA[9]; +ZA[5]+=state1; +ZA[9]=ZA[7]; +ZA[9]+=ZMa(ZA[12],ZA[1],ZA[9]); +ZA[9]+=ZR30(ZA[9]); +ZA[9]+=state0; +ZA[15]=ZA[9]; +ZA[15]+=0x98c7e2a2U; +ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU); +ZA[0]+=ZA[5]; +ZA[0]+=0x90bb1e3cU; +ZA[0]+=ZR26(ZA[15]); ZA[12]+=state2; -ZA[2]=ZA[9]+0xfc08884dU; -ZA[8]=ZA[0]+0x3c6ef372U; -ZA[11]=ZCh(ZA[8],ZA[15],0x510e527fU)+ZA[12]+0x50c6645bU+ZR26(ZA[8]); +ZA[2]=ZA[9]; +ZA[2]+=0xfc08884dU; +ZA[8]=ZA[0]; +ZA[8]+=0x3c6ef372U; +ZA[11]=ZCh(ZA[8],ZA[15],0x510e527fU); +ZA[11]+=ZA[12]; +ZA[11]+=0x50c6645bU; +ZA[11]+=ZR26(ZA[8]); ZA[1]+=state3; -ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2])+ZR30(ZA[2]); -ZA[6]=ZA[11]+0xbb67ae85U; -ZA[15]=ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U+ZR26(ZA[6]); -ZA[10]+=ZA[7]+state4; -ZA[7]=ZA[15]+0x6a09e667U; -ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0])+ZR30(ZA[0]); +ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); +ZA[0]+=ZR30(ZA[2]); +ZA[6]=ZA[11]; +ZA[6]+=0xbb67ae85U; +ZA[15]=ZCh(ZA[6],ZA[8],ZA[15]); +ZA[15]+=ZA[1]; +ZA[15]+=0x3ac42e24U; +ZA[15]+=ZR26(ZA[6]); +ZA[10]+=ZA[7]; +ZA[10]+=state4; +ZA[7]=ZA[15]; +ZA[7]+=0x6a09e667U; +ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0]); +ZA[11]+=ZR30(ZA[0]); ZA[17]+=state5; -ZA[16]=ZCh(ZA[7],ZA[6],ZA[8])+ZA[10]+ZA[9]+0xd21ea4fdU+ZR26(ZA[7]); -ZA[24]=ZA[2]+ZA[16]; -ZA[2]=ZA[15]+ZMa(ZA[0],ZA[2],ZA[11])+ZR30(ZA[11]); +ZA[16]=ZCh(ZA[7],ZA[6],ZA[8]); +ZA[16]+=ZA[10]; +ZA[16]+=ZA[9]; +ZA[16]+=0xd21ea4fdU; +ZA[16]+=ZR26(ZA[7]); +ZA[24]=ZA[2]; +ZA[24]+=ZA[16]; +ZA[2]=ZA[15]; +ZA[2]+=ZMa(ZA[0],ZA[2],ZA[11]); +ZA[2]+=ZR30(ZA[11]); ZA[4]+=state6; -ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6])+ZA[17]+0x59f111f1U+ZR26(ZA[24]); -ZA[15]=ZA[0]+ZA[8]; -ZA[16]+=ZMa(ZA[11],ZA[0],ZA[2])+ZR30(ZA[2]); +ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6]); +ZA[8]+=ZA[17]; +ZA[8]+=0x59f111f1U; +ZA[8]+=ZR26(ZA[24]); +ZA[15]=ZA[0]; +ZA[15]+=ZA[8]; +ZA[16]+=ZMa(ZA[11],ZA[0],ZA[2]); +ZA[16]+=ZR30(ZA[2]); ZA[3]+=state7; -ZA[6]+=ZCh(ZA[15],ZA[24],ZA[7])+ZA[4]+0x923f82a4U+ZR26(ZA[15]); -ZA[0]=ZA[11]+ZA[6]; -ZA[8]+=ZMa(ZA[2],ZA[11],ZA[16])+ZR30(ZA[16]); -ZA[7]+=ZCh(ZA[0],ZA[15],ZA[24])+ZA[3]+0xab1c5ed5U+ZR26(ZA[0]); -ZA[11]=ZA[2]+ZA[7]; -ZA[2]=ZMa(ZA[16],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[6]; -ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15])+0x5807aa98U+ZR26(ZA[11]); -ZA[6]=ZA[16]+ZA[24]; -ZA[7]+=ZMa(ZA[8],ZA[16],ZA[2])+ZR30(ZA[2]); -ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0])+0x12835b01U+ZR26(ZA[6]); -ZA[16]=ZA[8]+ZA[15]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[24]; -ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11])+0x243185beU+ZR26(ZA[16]); -ZA[14]=ZA[2]+ZA[0]; -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; -ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6])+0x550c7dc3U+ZR26(ZA[14]); -ZA[15]=ZA[7]+ZA[11]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[0]; -ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16])+0x72be5d74U+ZR26(ZA[15]); -ZA[0]=ZA[8]+ZA[6]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[11]; -ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14])+0x80deb1feU+ZR26(ZA[0]); -ZA[11]=ZA[2]+ZA[16]; -ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15])+0x9bdc06a7U+ZR26(ZA[11]); +ZA[6]+=ZCh(ZA[15],ZA[24],ZA[7]); +ZA[6]+=ZA[4]; +ZA[6]+=0x923f82a4U; +ZA[6]+=ZR26(ZA[15]); +ZA[0]=ZA[11]; +ZA[0]+=ZA[6]; +ZA[8]+=ZMa(ZA[2],ZA[11],ZA[16]); +ZA[8]+=ZR30(ZA[16]); +ZA[7]+=ZCh(ZA[0],ZA[15],ZA[24]); +ZA[7]+=ZA[3]; +ZA[7]+=0xab1c5ed5U; +ZA[7]+=ZR26(ZA[0]); +ZA[11]=ZA[2]; +ZA[11]+=ZA[7]; +ZA[2]=ZMa(ZA[16],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[2]+=ZA[6]; +ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15]); +ZA[24]+=0x5807aa98U; +ZA[24]+=ZR26(ZA[11]); +ZA[6]=ZA[16]; +ZA[6]+=ZA[24]; +ZA[7]+=ZMa(ZA[8],ZA[16],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); +ZA[15]+=0x12835b01U; +ZA[15]+=ZR26(ZA[6]); +ZA[16]=ZA[8]; +ZA[16]+=ZA[15]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[8]+=ZA[24]; +ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); +ZA[0]+=0x243185beU; +ZA[0]+=ZR26(ZA[16]); +ZA[14]=ZA[2]; +ZA[14]+=ZA[0]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[2]+=ZA[15]; +ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6]); +ZA[11]+=0x550c7dc3U; +ZA[11]+=ZR26(ZA[14]); +ZA[15]=ZA[7]; +ZA[15]+=ZA[11]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[7]+=ZA[0]; +ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16]); +ZA[6]+=0x72be5d74U; +ZA[6]+=ZR26(ZA[15]); +ZA[0]=ZA[8]; +ZA[0]+=ZA[6]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[8]+=ZA[11]; +ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14]); +ZA[16]+=0x80deb1feU; +ZA[16]+=ZR26(ZA[0]); +ZA[11]=ZA[2]; +ZA[11]+=ZA[16]; +ZA[2]=ZA[6]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15]); +ZA[14]+=0x9bdc06a7U; +ZA[14]+=ZR26(ZA[11]); ZA[9]+=ZR25(ZA[5]); -ZA[6]=ZA[7]+ZA[14]; -ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0])+0xc19bf274U+ZR26(ZA[6]); -ZA[5]+=ZR25(ZA[12])+0x00a00000U; -ZA[16]=ZA[8]+ZA[15]; -ZA[8]=ZA[14]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11])+ZA[9]+0xe49b69c1U+ZR26(ZA[16]); -ZA[21]=ZA[2]+ZA[0]; -ZA[2]=ZA[15]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[11]+=ZCh(ZA[21],ZA[16],ZA[6])+ZA[5]+0xefbe4786U+ZR26(ZA[21]); -ZA[12]+=ZR15(ZA[9])+ZR25(ZA[1]); -ZA[1]+=ZR15(ZA[5])+ZR25(ZA[10]); -ZA[15]=ZA[7]+ZA[11]; -ZA[7]=ZA[0]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16])+0x0fc19dc6U+ZA[12]+ZR26(ZA[15]); -ZA[0]=ZR15(ZA[12])+ZR25(ZA[17])+ZA[10]; -ZA[10]=ZA[8]+ZA[6]; -ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]+=ZCh(ZA[10],ZA[15],ZA[21])+ZA[1]+0x240ca1ccU+ZR26(ZA[10]); -ZA[17]+=ZR15(ZA[1])+ZR25(ZA[4]); -ZA[11]=ZA[2]+ZA[16]; -ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[11],ZA[10],ZA[15])+ZA[0]+0x2de92c6fU+ZR26(ZA[11]); -ZA[4]+=ZR15(ZA[0])+0x00000100U+ZR25(ZA[3]); -ZA[6]=ZA[7]+ZA[21]; -ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[15]+=ZCh(ZA[6],ZA[11],ZA[10])+ZA[17]+0x4a7484aaU+ZR26(ZA[6]); -ZA[3]+=ZA[9]+ZR15(ZA[17])+0x11002000U; -ZA[16]=ZA[8]+ZA[15]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[21]; -ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11])+ZA[4]+0x5cb0a9dcU+ZR26(ZA[16]); -ZA[13]=ZR15(ZA[4])+ZA[5]+0x80000000U; -ZA[22]=ZA[2]+ZA[10]; -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; -ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6])+ZA[3]+0x76f988daU+ZR26(ZA[22]); -ZA[15]=ZR15(ZA[3])+ZA[12]; -ZA[18]=ZA[7]+ZA[11]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[10]; -ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16])+ZA[13]+0x983e5152U+ZR26(ZA[18]); -ZA[10]=ZR15(ZA[13])+ZA[1]; -ZA[23]=ZA[8]+ZA[6]; -ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22])+ZA[15]+0xa831c66dU+ZR26(ZA[23]); -ZA[11]=ZR15(ZA[15])+ZA[0]; -ZA[24]=ZA[2]+ZA[16]; -ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[10]+0xb00327c8U+ZR26(ZA[24]); -ZA[6]=ZR15(ZA[10])+ZA[17]; -ZA[19]=ZA[7]+ZA[22]; -ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[11]+0xbf597fc7U+ZR26(ZA[19]); -ZA[14]=ZR15(ZA[11])+ZA[4]; -ZA[20]=ZA[8]+ZA[18]; -ZA[8]=ZA[22]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[6]+0xc6e00bf3U+ZR26(ZA[20]); -ZA[16]=ZR15(ZA[6])+ZA[3]+0x00400022U; -ZA[21]=ZA[2]+ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[14]+0xd5a79147U+ZR26(ZA[21]); -ZA[22]=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9])+0x00000100U; -ZA[18]=ZA[7]+ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[16]+0x06ca6351U+ZR26(ZA[18]); -ZA[9]+=ZR15(ZA[16])+ZR25(ZA[5])+ZA[15]; -ZA[23]=ZA[8]+ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[22]+0x14292967U+ZR26(ZA[23]); -ZA[5]+=ZR15(ZA[22])+ZR25(ZA[12])+ZA[10]; -ZA[24]=ZA[2]+ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[9]+0x27b70a85U+ZR26(ZA[24]); -ZA[12]+=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1]); -ZA[19]=ZA[7]+ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[5]+0x2e1b2138U+ZR26(ZA[19]); -ZA[1]+=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0]); -ZA[20]=ZA[8]+ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[12]+0x4d2c6dfcU+ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[12])+ZR25(ZA[17])+ZA[14]; -ZA[21]=ZA[2]+ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[1]+0x53380d13U+ZR26(ZA[21]); -ZA[17]+=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4]); -ZA[18]=ZA[7]+ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[0]+0x650a7354U+ZR26(ZA[18]); -ZA[4]+=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3]); -ZA[23]=ZA[8]+ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[17]+0x766a0abbU+ZR26(ZA[23]); -ZA[3]+=ZR15(ZA[17])+ZA[9]+ZR25(ZA[13]); -ZA[24]=ZA[2]+ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[4]+0x81c2c92eU+ZR26(ZA[24]); -ZA[13]+=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15]); -ZA[19]=ZA[7]+ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[3]+0x92722c85U+ZR26(ZA[19]); -ZA[15]+=ZR15(ZA[3])+ZA[12]+ZR25(ZA[10]); -ZA[20]=ZA[8]+ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[13]+0xa2bfe8a1U+ZR26(ZA[20]); -ZA[10]+=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11]); -ZA[21]=ZA[2]+ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[15]+0xa81a664bU+ZR26(ZA[21]); -ZA[11]+=ZR15(ZA[15])+ZA[0]+ZR25(ZA[6]); -ZA[18]=ZA[7]+ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[10]+0xc24b8b70U+ZR26(ZA[18]); -ZA[6]+=ZR15(ZA[10])+ZA[17]+ZR25(ZA[14]); -ZA[23]=ZA[8]+ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[11]+0xc76c51a3U+ZR26(ZA[23]); -ZA[14]+=ZR15(ZA[11])+ZA[4]+ZR25(ZA[16]); -ZA[24]=ZA[2]+ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[6]+0xd192e819U+ZR26(ZA[24]); -ZA[16]+=ZR15(ZA[6])+ZA[3]+ZR25(ZA[22]); -ZA[19]=ZA[7]+ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[14]+0xd6990624U+ZR26(ZA[19]); -ZA[22]+=ZR15(ZA[14])+ZA[13]+ZR25(ZA[9]); -ZA[20]=ZA[8]+ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24])+ZA[16]+0xf40e3585U+ZR26(ZA[20]); -ZA[9]+=ZR15(ZA[16])+ZA[15]+ZR25(ZA[5]); -ZA[21]=ZA[2]+ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19])+ZA[22]+0x106aa070U+ZR26(ZA[21]); -ZA[5]+=ZR15(ZA[22])+ZA[10]+ZR25(ZA[12]); -ZA[18]=ZA[7]+ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20])+ZA[9]+0x19a4c116U+ZR26(ZA[18]); -ZA[12]+=ZR15(ZA[9])+ZA[11]+ZR25(ZA[1]); -ZA[23]=ZA[8]+ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21])+ZA[5]+0x1e376c08U+ZR26(ZA[23]); -ZA[1]+=ZR15(ZA[5])+ZA[6]+ZR25(ZA[0]); -ZA[24]=ZA[2]+ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18])+ZA[12]+0x2748774cU+ZR26(ZA[24]); -ZA[0]+=ZR15(ZA[12])+ZA[14]+ZR25(ZA[17]); -ZA[19]=ZA[7]+ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23])+ZA[1]+0x34b0bcb5U+ZR26(ZA[19]); -ZA[17]+=ZR15(ZA[1])+ZA[16]+ZR25(ZA[4]); -ZA[16]=ZA[8]+ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[16],ZA[19],ZA[24])+ZA[0]+0x391c0cb3U+ZR26(ZA[16]); -ZA[4]+=ZR15(ZA[0])+ZA[22]+ZR25(ZA[3]); -ZA[22]=ZA[2]+ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[22],ZA[16],ZA[19])+ZA[17]+0x4ed8aa4aU+ZR26(ZA[22]); -ZA[9]+=ZR15(ZA[17])+ZR25(ZA[13])+ZA[3]; -ZA[3]=ZA[7]+ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[3],ZA[22],ZA[16])+ZA[4]+0x5b9cca4fU+ZR26(ZA[3]); -ZA[13]+=ZR15(ZA[4])+ZA[5]+ZR25(ZA[15]); -ZA[4]=ZA[8]+ZA[19]; -ZA[5]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); -ZA[16]+=ZCh(ZA[4],ZA[3],ZA[22])+ZA[9]+0x682e6ff3U+ZR26(ZA[4]); -ZA[12]+=ZR15(ZA[9])+ZR25(ZA[10])+ZA[15]; -ZA[15]=ZA[2]+ZA[16]; -ZA[9]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[5])+ZR30(ZA[5]); -ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3])+ZA[13]+0x748f82eeU+ZR26(ZA[15]); -ZA[13]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; -ZA[10]=ZA[7]+ZA[22]; -ZA[1]=ZA[16]+ZMa(ZA[5],ZA[7],ZA[9])+ZR30(ZA[9]); -ZA[3]+=ZCh(ZA[10],ZA[15],ZA[4])+ZA[5]+ZA[12]+0x78a5636fU+ZR26(ZA[10]); -ZA[4]+=ZCh(ZA[3],ZA[10],ZA[15])+ZA[9]+ZA[13]+0x84c87814U+ZR26(ZA[3]); -ZA[15]+=ZCh(ZA[4],ZA[3],ZA[10])+ZA[1]+ZR15(ZA[12])+ZA[0]+ZR25(ZA[6])+ZA[11]+0x8cc70208U+ZR26(ZA[4]); - - +ZA[6]=ZA[7]; +ZA[6]+=ZA[14]; +ZA[7]=ZA[16]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); +ZA[15]+=0xc19bf274U; +ZA[15]+=ZR26(ZA[6]); +ZA[5]+=ZR25(ZA[12]); +ZA[5]+=0x00a00000U; +ZA[16]=ZA[8]; +ZA[16]+=ZA[15]; +ZA[8]=ZA[14]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); +ZA[0]+=ZA[9]; +ZA[0]+=0xe49b69c1U; +ZA[0]+=ZR26(ZA[16]); +ZA[21]=ZA[2]; +ZA[21]+=ZA[0]; +ZA[2]=ZA[15]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[11]+=ZCh(ZA[21],ZA[16],ZA[6]); +ZA[11]+=ZA[5]; +ZA[11]+=0xefbe4786U; +ZA[11]+=ZR26(ZA[21]); +ZA[12]+=ZR15(ZA[9]); +ZA[12]+=ZR25(ZA[1]); +ZA[1]+=ZR15(ZA[5]); +ZA[1]+=ZR25(ZA[10]); +ZA[15]=ZA[7]; +ZA[15]+=ZA[11]; +ZA[7]=ZA[0]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16]); +ZA[6]+=0x0fc19dc6U; +ZA[6]+=ZA[12]; +ZA[6]+=ZR26(ZA[15]); +ZA[0]=ZR15(ZA[12]); +ZA[0]+=ZR25(ZA[17]); +ZA[0]+=ZA[10]; +ZA[10]=ZA[8]; +ZA[10]+=ZA[6]; +ZA[8]=ZA[11]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[16]+=ZCh(ZA[10],ZA[15],ZA[21]); +ZA[16]+=ZA[1]; +ZA[16]+=0x240ca1ccU; +ZA[16]+=ZR26(ZA[10]); +ZA[17]+=ZR15(ZA[1]); +ZA[17]+=ZR25(ZA[4]); +ZA[11]=ZA[2]; +ZA[11]+=ZA[16]; +ZA[2]=ZA[6]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[21]+=ZCh(ZA[11],ZA[10],ZA[15]); +ZA[21]+=ZA[0]; +ZA[21]+=0x2de92c6fU; +ZA[21]+=ZR26(ZA[11]); +ZA[4]+=ZR15(ZA[0]); +ZA[4]+=0x00000100U; +ZA[4]+=ZR25(ZA[3]); +ZA[6]=ZA[7]; +ZA[6]+=ZA[21]; +ZA[7]=ZA[16]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[15]+=ZCh(ZA[6],ZA[11],ZA[10]); +ZA[15]+=ZA[17]; +ZA[15]+=0x4a7484aaU; +ZA[15]+=ZR26(ZA[6]); +ZA[3]+=ZA[9]; +ZA[3]+=ZR15(ZA[17]); +ZA[3]+=0x11002000U; +ZA[16]=ZA[8]; +ZA[16]+=ZA[15]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[8]+=ZA[21]; +ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11]); +ZA[10]+=ZA[4]; +ZA[10]+=0x5cb0a9dcU; +ZA[10]+=ZR26(ZA[16]); +ZA[13]=ZR15(ZA[4]); +ZA[13]+=ZA[5]; +ZA[13]+=0x80000000U; +ZA[22]=ZA[2]; +ZA[22]+=ZA[10]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[2]+=ZA[15]; +ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6]); +ZA[11]+=ZA[3]; +ZA[11]+=0x76f988daU; +ZA[11]+=ZR26(ZA[22]); +ZA[15]=ZR15(ZA[3]); +ZA[15]+=ZA[12]; +ZA[18]=ZA[7]; +ZA[18]+=ZA[11]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[7]+=ZA[10]; +ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16]); +ZA[6]+=ZA[13]; +ZA[6]+=0x983e5152U; +ZA[6]+=ZR26(ZA[18]); +ZA[10]=ZR15(ZA[13]); +ZA[10]+=ZA[1]; +ZA[23]=ZA[8]; +ZA[23]+=ZA[6]; +ZA[8]=ZA[11]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22]); +ZA[16]+=ZA[15]; +ZA[16]+=0xa831c66dU; +ZA[16]+=ZR26(ZA[23]); +ZA[11]=ZR15(ZA[15]); +ZA[11]+=ZA[0]; +ZA[24]=ZA[2]; +ZA[24]+=ZA[16]; +ZA[2]=ZA[6]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18]); +ZA[22]+=ZA[10]; +ZA[22]+=0xb00327c8U; +ZA[22]+=ZR26(ZA[24]); +ZA[6]=ZR15(ZA[10]); +ZA[6]+=ZA[17]; +ZA[19]=ZA[7]; +ZA[19]+=ZA[22]; +ZA[7]=ZA[16]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); +ZA[18]+=ZA[11]; +ZA[18]+=0xbf597fc7U; +ZA[18]+=ZR26(ZA[19]); +ZA[14]=ZR15(ZA[11]); +ZA[14]+=ZA[4]; +ZA[20]=ZA[8]; +ZA[20]+=ZA[18]; +ZA[8]=ZA[22]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); +ZA[23]+=ZA[6]; +ZA[23]+=0xc6e00bf3U; +ZA[23]+=ZR26(ZA[20]); +ZA[16]=ZR15(ZA[6]); +ZA[16]+=ZA[3]; +ZA[16]+=0x00400022U; +ZA[21]=ZA[2]; +ZA[21]+=ZA[23]; +ZA[2]=ZA[18]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); +ZA[24]+=ZA[14]; +ZA[24]+=0xd5a79147U; +ZA[24]+=ZR26(ZA[21]); +ZA[22]=ZR15(ZA[14]); +ZA[22]+=ZA[13]; +ZA[22]+=ZR25(ZA[9]); +ZA[22]+=0x00000100U; +ZA[18]=ZA[7]; +ZA[18]+=ZA[24]; +ZA[7]=ZA[23]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); +ZA[19]+=ZA[16]; +ZA[19]+=0x06ca6351U; +ZA[19]+=ZR26(ZA[18]); +ZA[9]+=ZR15(ZA[16]); +ZA[9]+=ZR25(ZA[5]); +ZA[9]+=ZA[15]; +ZA[23]=ZA[8]; +ZA[23]+=ZA[19]; +ZA[8]=ZA[24]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); +ZA[20]+=ZA[22]; +ZA[20]+=0x14292967U; +ZA[20]+=ZR26(ZA[23]); +ZA[5]+=ZR15(ZA[22]); +ZA[5]+=ZR25(ZA[12]); +ZA[5]+=ZA[10]; +ZA[24]=ZA[2]; +ZA[24]+=ZA[20]; +ZA[2]=ZA[19]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); +ZA[21]+=ZA[9]; +ZA[21]+=0x27b70a85U; +ZA[21]+=ZR26(ZA[24]); +ZA[12]+=ZR15(ZA[9]); +ZA[12]+=ZA[11]; +ZA[12]+=ZR25(ZA[1]); +ZA[19]=ZA[7]; +ZA[19]+=ZA[21]; +ZA[7]=ZA[20]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); +ZA[18]+=ZA[5]; +ZA[18]+=0x2e1b2138U; +ZA[18]+=ZR26(ZA[19]); +ZA[1]+=ZR15(ZA[5]); +ZA[1]+=ZA[6]; +ZA[1]+=ZR25(ZA[0]); +ZA[20]=ZA[8]; +ZA[20]+=ZA[18]; +ZA[8]=ZA[21]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); +ZA[23]+=ZA[12]; +ZA[23]+=0x4d2c6dfcU; +ZA[23]+=ZR26(ZA[20]); +ZA[0]+=ZR15(ZA[12]); +ZA[0]+=ZR25(ZA[17]); +ZA[0]+=ZA[14]; +ZA[21]=ZA[2]; +ZA[21]+=ZA[23]; +ZA[2]=ZA[18]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); +ZA[24]+=ZA[1]; +ZA[24]+=0x53380d13U; +ZA[24]+=ZR26(ZA[21]); +ZA[17]+=ZR15(ZA[1]); +ZA[17]+=ZA[16]; +ZA[17]+=ZR25(ZA[4]); +ZA[18]=ZA[7]; +ZA[18]+=ZA[24]; +ZA[7]=ZA[23]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); +ZA[19]+=ZA[0]; +ZA[19]+=0x650a7354U; +ZA[19]+=ZR26(ZA[18]); +ZA[4]+=ZR15(ZA[0]); +ZA[4]+=ZA[22]; +ZA[4]+=ZR25(ZA[3]); +ZA[23]=ZA[8]; +ZA[23]+=ZA[19]; +ZA[8]=ZA[24]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); +ZA[20]+=ZA[17]; +ZA[20]+=0x766a0abbU; +ZA[20]+=ZR26(ZA[23]); +ZA[3]+=ZR15(ZA[17]); +ZA[3]+=ZA[9]; +ZA[3]+=ZR25(ZA[13]); +ZA[24]=ZA[2]; +ZA[24]+=ZA[20]; +ZA[2]=ZA[19]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); +ZA[21]+=ZA[4]; +ZA[21]+=0x81c2c92eU; +ZA[21]+=ZR26(ZA[24]); +ZA[13]+=ZR15(ZA[4]); +ZA[13]+=ZA[5]; +ZA[13]+=ZR25(ZA[15]); +ZA[19]=ZA[7]; +ZA[19]+=ZA[21]; +ZA[7]=ZA[20]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); +ZA[18]+=ZA[3]; +ZA[18]+=0x92722c85U; +ZA[18]+=ZR26(ZA[19]); +ZA[15]+=ZR15(ZA[3]); +ZA[15]+=ZA[12]; +ZA[15]+=ZR25(ZA[10]); +ZA[20]=ZA[8]; +ZA[20]+=ZA[18]; +ZA[8]=ZA[21]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); +ZA[23]+=ZA[13]; +ZA[23]+=0xa2bfe8a1U; +ZA[23]+=ZR26(ZA[20]); +ZA[10]+=ZR15(ZA[13]); +ZA[10]+=ZA[1]; +ZA[10]+=ZR25(ZA[11]); +ZA[21]=ZA[2]; +ZA[21]+=ZA[23]; +ZA[2]=ZA[18]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); +ZA[24]+=ZA[15]; +ZA[24]+=0xa81a664bU; +ZA[24]+=ZR26(ZA[21]); +ZA[11]+=ZR15(ZA[15]); +ZA[11]+=ZA[0]; +ZA[11]+=ZR25(ZA[6]); +ZA[18]=ZA[7]; +ZA[18]+=ZA[24]; +ZA[7]=ZA[23]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); +ZA[19]+=ZA[10]; +ZA[19]+=0xc24b8b70U; +ZA[19]+=ZR26(ZA[18]); +ZA[6]+=ZR15(ZA[10]); +ZA[6]+=ZA[17]; +ZA[6]+=ZR25(ZA[14]); +ZA[23]=ZA[8]; +ZA[23]+=ZA[19]; +ZA[8]=ZA[24]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); +ZA[20]+=ZA[11]; +ZA[20]+=0xc76c51a3U; +ZA[20]+=ZR26(ZA[23]); +ZA[14]+=ZR15(ZA[11]); +ZA[14]+=ZA[4]; +ZA[14]+=ZR25(ZA[16]); +ZA[24]=ZA[2]; +ZA[24]+=ZA[20]; +ZA[2]=ZA[19]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); +ZA[21]+=ZA[6]; +ZA[21]+=0xd192e819U; +ZA[21]+=ZR26(ZA[24]); +ZA[16]+=ZR15(ZA[6]); +ZA[16]+=ZA[3]; +ZA[16]+=ZR25(ZA[22]); +ZA[19]=ZA[7]; +ZA[19]+=ZA[21]; +ZA[7]=ZA[20]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); +ZA[18]+=ZA[14]; +ZA[18]+=0xd6990624U; +ZA[18]+=ZR26(ZA[19]); +ZA[22]+=ZR15(ZA[14]); +ZA[22]+=ZA[13]; +ZA[22]+=ZR25(ZA[9]); +ZA[20]=ZA[8]; +ZA[20]+=ZA[18]; +ZA[8]=ZA[21]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); +ZA[23]+=ZA[16]; +ZA[23]+=0xf40e3585U; +ZA[23]+=ZR26(ZA[20]); +ZA[9]+=ZR15(ZA[16]); +ZA[9]+=ZA[15]; +ZA[9]+=ZR25(ZA[5]); +ZA[21]=ZA[2]; +ZA[21]+=ZA[23]; +ZA[2]=ZA[18]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); +ZA[24]+=ZA[22]; +ZA[24]+=0x106aa070U; +ZA[24]+=ZR26(ZA[21]); +ZA[5]+=ZR15(ZA[22]); +ZA[5]+=ZA[10]; +ZA[5]+=ZR25(ZA[12]); +ZA[18]=ZA[7]; +ZA[18]+=ZA[24]; +ZA[7]=ZA[23]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); +ZA[19]+=ZA[9]; +ZA[19]+=0x19a4c116U; +ZA[19]+=ZR26(ZA[18]); +ZA[12]+=ZR15(ZA[9]); +ZA[12]+=ZA[11]; +ZA[12]+=ZR25(ZA[1]); +ZA[23]=ZA[8]; +ZA[23]+=ZA[19]; +ZA[8]=ZA[24]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); +ZA[20]+=ZA[5]; +ZA[20]+=0x1e376c08U; +ZA[20]+=ZR26(ZA[23]); +ZA[1]+=ZR15(ZA[5]); +ZA[1]+=ZA[6]; +ZA[1]+=ZR25(ZA[0]); +ZA[24]=ZA[2]; +ZA[24]+=ZA[20]; +ZA[2]=ZA[19]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); +ZA[21]+=ZA[12]; +ZA[21]+=0x2748774cU; +ZA[21]+=ZR26(ZA[24]); +ZA[0]+=ZR15(ZA[12]); +ZA[0]+=ZA[14]; +ZA[0]+=ZR25(ZA[17]); +ZA[19]=ZA[7]; +ZA[19]+=ZA[21]; +ZA[7]=ZA[20]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); +ZA[18]+=ZA[1]; +ZA[18]+=0x34b0bcb5U; +ZA[18]+=ZR26(ZA[19]); +ZA[17]+=ZR15(ZA[1]); +ZA[17]+=ZA[16]; +ZA[17]+=ZR25(ZA[4]); +ZA[16]=ZA[8]; +ZA[16]+=ZA[18]; +ZA[8]=ZA[21]; +ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZR30(ZA[7]); +ZA[23]+=ZCh(ZA[16],ZA[19],ZA[24]); +ZA[23]+=ZA[0]; +ZA[23]+=0x391c0cb3U; +ZA[23]+=ZR26(ZA[16]); +ZA[4]+=ZR15(ZA[0]); +ZA[4]+=ZA[22]; +ZA[4]+=ZR25(ZA[3]); +ZA[22]=ZA[2]; +ZA[22]+=ZA[23]; +ZA[2]=ZA[18]; +ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZR30(ZA[8]); +ZA[24]+=ZCh(ZA[22],ZA[16],ZA[19]); +ZA[24]+=ZA[17]; +ZA[24]+=0x4ed8aa4aU; +ZA[24]+=ZR26(ZA[22]); +ZA[9]+=ZR15(ZA[17]); +ZA[9]+=ZR25(ZA[13]); +ZA[9]+=ZA[3]; +ZA[3]=ZA[7]; +ZA[3]+=ZA[24]; +ZA[7]=ZA[23]; +ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZR30(ZA[2]); +ZA[19]+=ZCh(ZA[3],ZA[22],ZA[16]); +ZA[19]+=ZA[4]; +ZA[19]+=0x5b9cca4fU; +ZA[19]+=ZR26(ZA[3]); +ZA[13]+=ZR15(ZA[4]); +ZA[13]+=ZA[5]; +ZA[13]+=ZR25(ZA[15]); +ZA[4]=ZA[8]; +ZA[4]+=ZA[19]; +ZA[5]=ZA[24]; +ZA[5]+=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[5]+=ZR30(ZA[7]); +ZA[16]+=ZCh(ZA[4],ZA[3],ZA[22]); +ZA[16]+=ZA[9]; +ZA[16]+=0x682e6ff3U; +ZA[16]+=ZR26(ZA[4]); +ZA[12]+=ZR15(ZA[9]); +ZA[12]+=ZR25(ZA[10]); +ZA[12]+=ZA[15]; +ZA[15]=ZA[2]; +ZA[15]+=ZA[16]; +ZA[9]=ZA[19]; +ZA[9]+=ZMa(ZA[7],ZA[2],ZA[5]); +ZA[9]+=ZR30(ZA[5]); +ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3]); +ZA[22]+=ZA[13]; +ZA[22]+=0x748f82eeU; +ZA[22]+=ZR26(ZA[15]); +ZA[13]=ZR15(ZA[13]); +ZA[13]+=ZA[1]; +ZA[13]+=ZR25(ZA[11]); +ZA[13]+=ZA[10]; +ZA[10]=ZA[7]; +ZA[10]+=ZA[22]; +ZA[1]=ZA[16]; +ZA[1]+=ZMa(ZA[5],ZA[7],ZA[9]); +ZA[1]+=ZR30(ZA[9]); +ZA[3]+=ZCh(ZA[10],ZA[15],ZA[4]); +ZA[3]+=ZA[5]; +ZA[3]+=ZA[12]; +ZA[3]+=0x78a5636fU; +ZA[3]+=ZR26(ZA[10]); +ZA[4]+=ZCh(ZA[3],ZA[10],ZA[15]); +ZA[4]+=ZA[9]; +ZA[4]+=ZA[13]; +ZA[4]+=0x84c87814U; +ZA[4]+=ZR26(ZA[3]); +ZA[15]+=ZCh(ZA[4],ZA[3],ZA[10]); +ZA[15]+=ZA[1]; +ZA[15]+=ZR15(ZA[12]); +ZA[15]+=ZA[0]; +ZA[15]+=ZR25(ZA[6]); +ZA[15]+=ZA[11]; +ZA[15]+=0x8cc70208U; +ZA[15]+=ZR26(ZA[4]); + #define FOUND (0x80) #define NFLAG (0x7F) From 4776ca8f087344bcf2c04aa6ed9b7cdc087a7527 Mon Sep 17 00:00:00 2001 From: ckolivas Date: Wed, 29 Feb 2012 17:36:27 +1100 Subject: [PATCH 039/117] Keep lines that reference the same variable together. --- diablo120222.cl | 208 ++++++++++++------------------------------------ 1 file changed, 52 insertions(+), 156 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 7a3e217f..4f3f5cb3 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -63,6 +63,7 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( z ZA[25]; const z Znonce = base + (uint)(get_global_id(0)); + ZA[2]=Znonce; ZA[2]+=PreVal4_state0; ZA[3]=ZCh(ZA[2],b1,c1); @@ -79,9 +80,7 @@ ZA[3]+=ZMa(f1,g1,ZA[8]); ZA[3]+=ZR30(ZA[8]); ZA[6]=ZA[5]; ZA[6]+=g1; -ZA[2]=ZCh(ZA[6],ZA[4],ZA[2]); -ZA[2]+=b1_plus_k6; -ZA[2]+=ZR26(ZA[6]); +ZA[2]=(ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6)+ZR26(ZA[6]); ZA[5]+=ZMa(ZA[8],f1,ZA[3]); ZA[5]+=ZR30(ZA[3]); ZA[7]=ZA[2]; @@ -653,10 +652,7 @@ ZA[7]+=0xc67178f2U; ZA[7]+=ZR26(ZA[17]); ZA[5]=ZA[9]; ZA[5]+=state1; -ZA[9]=ZA[7]; -ZA[9]+=ZMa(ZA[12],ZA[1],ZA[9]); -ZA[9]+=ZR30(ZA[9]); -ZA[9]+=state0; +ZA[9]=ZA[7]+ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9])+state0; ZA[15]=ZA[9]; ZA[15]+=0x98c7e2a2U; ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU); @@ -677,10 +673,7 @@ ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); ZA[0]+=ZR30(ZA[2]); ZA[6]=ZA[11]; ZA[6]+=0xbb67ae85U; -ZA[15]=ZCh(ZA[6],ZA[8],ZA[15]); -ZA[15]+=ZA[1]; -ZA[15]+=0x3ac42e24U; -ZA[15]+=ZR26(ZA[6]); +ZA[15]=(ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U)+ZR26(ZA[6]); ZA[10]+=ZA[7]; ZA[10]+=state4; ZA[7]=ZA[15]; @@ -695,9 +688,7 @@ ZA[16]+=0xd21ea4fdU; ZA[16]+=ZR26(ZA[7]); ZA[24]=ZA[2]; ZA[24]+=ZA[16]; -ZA[2]=ZA[15]; -ZA[2]+=ZMa(ZA[0],ZA[2],ZA[11]); -ZA[2]+=ZR30(ZA[11]); +ZA[2]=ZA[15]+ZMa(ZA[0],ZA[2],ZA[11])+ZR30(ZA[11]); ZA[4]+=state6; ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6]); ZA[8]+=ZA[17]; @@ -722,9 +713,7 @@ ZA[7]+=0xab1c5ed5U; ZA[7]+=ZR26(ZA[0]); ZA[11]=ZA[2]; ZA[11]+=ZA[7]; -ZA[2]=ZMa(ZA[16],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); -ZA[2]+=ZA[6]; +ZA[2]=ZMa(ZA[16],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[6]; ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15]); ZA[24]+=0x5807aa98U; ZA[24]+=ZR26(ZA[11]); @@ -737,50 +726,38 @@ ZA[15]+=0x12835b01U; ZA[15]+=ZR26(ZA[6]); ZA[16]=ZA[8]; ZA[16]+=ZA[15]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); -ZA[8]+=ZA[24]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[24]; ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=0x243185beU; ZA[0]+=ZR26(ZA[16]); ZA[14]=ZA[2]; ZA[14]+=ZA[0]; -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); -ZA[2]+=ZA[15]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6]); ZA[11]+=0x550c7dc3U; ZA[11]+=ZR26(ZA[14]); ZA[15]=ZA[7]; ZA[15]+=ZA[11]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); -ZA[7]+=ZA[0]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[0]; ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16]); ZA[6]+=0x72be5d74U; ZA[6]+=ZR26(ZA[15]); ZA[0]=ZA[8]; ZA[0]+=ZA[6]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); -ZA[8]+=ZA[11]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[11]; ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14]); ZA[16]+=0x80deb1feU; ZA[16]+=ZR26(ZA[0]); ZA[11]=ZA[2]; ZA[11]+=ZA[16]; -ZA[2]=ZA[6]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15]); ZA[14]+=0x9bdc06a7U; ZA[14]+=ZR26(ZA[11]); ZA[9]+=ZR25(ZA[5]); ZA[6]=ZA[7]; ZA[6]+=ZA[14]; -ZA[7]=ZA[16]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); ZA[15]+=0xc19bf274U; ZA[15]+=ZR26(ZA[6]); @@ -788,18 +765,14 @@ ZA[5]+=ZR25(ZA[12]); ZA[5]+=0x00a00000U; ZA[16]=ZA[8]; ZA[16]+=ZA[15]; -ZA[8]=ZA[14]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[14]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=ZA[9]; ZA[0]+=0xe49b69c1U; ZA[0]+=ZR26(ZA[16]); ZA[21]=ZA[2]; ZA[21]+=ZA[0]; -ZA[2]=ZA[15]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[15]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[11]+=ZCh(ZA[21],ZA[16],ZA[6]); ZA[11]+=ZA[5]; ZA[11]+=0xefbe4786U; @@ -810,9 +783,7 @@ ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZR25(ZA[10]); ZA[15]=ZA[7]; ZA[15]+=ZA[11]; -ZA[7]=ZA[0]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[0]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16]); ZA[6]+=0x0fc19dc6U; ZA[6]+=ZA[12]; @@ -822,9 +793,7 @@ ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[10]; ZA[10]=ZA[8]; ZA[10]+=ZA[6]; -ZA[8]=ZA[11]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[16]+=ZCh(ZA[10],ZA[15],ZA[21]); ZA[16]+=ZA[1]; ZA[16]+=0x240ca1ccU; @@ -833,9 +802,7 @@ ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZR25(ZA[4]); ZA[11]=ZA[2]; ZA[11]+=ZA[16]; -ZA[2]=ZA[6]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[21]+=ZCh(ZA[11],ZA[10],ZA[15]); ZA[21]+=ZA[0]; ZA[21]+=0x2de92c6fU; @@ -845,9 +812,7 @@ ZA[4]+=0x00000100U; ZA[4]+=ZR25(ZA[3]); ZA[6]=ZA[7]; ZA[6]+=ZA[21]; -ZA[7]=ZA[16]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[15]+=ZCh(ZA[6],ZA[11],ZA[10]); ZA[15]+=ZA[17]; ZA[15]+=0x4a7484aaU; @@ -857,9 +822,7 @@ ZA[3]+=ZR15(ZA[17]); ZA[3]+=0x11002000U; ZA[16]=ZA[8]; ZA[16]+=ZA[15]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); -ZA[8]+=ZA[21]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[21]; ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[10]+=ZA[4]; ZA[10]+=0x5cb0a9dcU; @@ -869,9 +832,7 @@ ZA[13]+=ZA[5]; ZA[13]+=0x80000000U; ZA[22]=ZA[2]; ZA[22]+=ZA[10]; -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); -ZA[2]+=ZA[15]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6]); ZA[11]+=ZA[3]; ZA[11]+=0x76f988daU; @@ -880,9 +841,7 @@ ZA[15]=ZR15(ZA[3]); ZA[15]+=ZA[12]; ZA[18]=ZA[7]; ZA[18]+=ZA[11]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); -ZA[7]+=ZA[10]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[10]; ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16]); ZA[6]+=ZA[13]; ZA[6]+=0x983e5152U; @@ -891,9 +850,7 @@ ZA[10]=ZR15(ZA[13]); ZA[10]+=ZA[1]; ZA[23]=ZA[8]; ZA[23]+=ZA[6]; -ZA[8]=ZA[11]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22]); ZA[16]+=ZA[15]; ZA[16]+=0xa831c66dU; @@ -902,9 +859,7 @@ ZA[11]=ZR15(ZA[15]); ZA[11]+=ZA[0]; ZA[24]=ZA[2]; ZA[24]+=ZA[16]; -ZA[2]=ZA[6]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[22]+=ZA[10]; ZA[22]+=0xb00327c8U; @@ -913,9 +868,7 @@ ZA[6]=ZR15(ZA[10]); ZA[6]+=ZA[17]; ZA[19]=ZA[7]; ZA[19]+=ZA[22]; -ZA[7]=ZA[16]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[11]; ZA[18]+=0xbf597fc7U; @@ -924,9 +877,7 @@ ZA[14]=ZR15(ZA[11]); ZA[14]+=ZA[4]; ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[22]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[22]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[6]; ZA[23]+=0xc6e00bf3U; @@ -936,9 +887,7 @@ ZA[16]+=ZA[3]; ZA[16]+=0x00400022U; ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[14]; ZA[24]+=0xd5a79147U; @@ -949,9 +898,7 @@ ZA[22]+=ZR25(ZA[9]); ZA[22]+=0x00000100U; ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[16]; ZA[19]+=0x06ca6351U; @@ -961,9 +908,7 @@ ZA[9]+=ZR25(ZA[5]); ZA[9]+=ZA[15]; ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[22]; ZA[20]+=0x14292967U; @@ -973,9 +918,7 @@ ZA[5]+=ZR25(ZA[12]); ZA[5]+=ZA[10]; ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[9]; ZA[21]+=0x27b70a85U; @@ -985,9 +928,7 @@ ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[5]; ZA[18]+=0x2e1b2138U; @@ -997,9 +938,7 @@ ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[21]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[12]; ZA[23]+=0x4d2c6dfcU; @@ -1009,9 +948,7 @@ ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[14]; ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[1]; ZA[24]+=0x53380d13U; @@ -1021,9 +958,7 @@ ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[0]; ZA[19]+=0x650a7354U; @@ -1033,9 +968,7 @@ ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[17]; ZA[20]+=0x766a0abbU; @@ -1045,9 +978,7 @@ ZA[3]+=ZA[9]; ZA[3]+=ZR25(ZA[13]); ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[4]; ZA[21]+=0x81c2c92eU; @@ -1057,9 +988,7 @@ ZA[13]+=ZA[5]; ZA[13]+=ZR25(ZA[15]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[3]; ZA[18]+=0x92722c85U; @@ -1069,9 +998,7 @@ ZA[15]+=ZA[12]; ZA[15]+=ZR25(ZA[10]); ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[21]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[13]; ZA[23]+=0xa2bfe8a1U; @@ -1081,9 +1008,7 @@ ZA[10]+=ZA[1]; ZA[10]+=ZR25(ZA[11]); ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[15]; ZA[24]+=0xa81a664bU; @@ -1093,9 +1018,7 @@ ZA[11]+=ZA[0]; ZA[11]+=ZR25(ZA[6]); ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[10]; ZA[19]+=0xc24b8b70U; @@ -1105,9 +1028,7 @@ ZA[6]+=ZA[17]; ZA[6]+=ZR25(ZA[14]); ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[11]; ZA[20]+=0xc76c51a3U; @@ -1117,9 +1038,7 @@ ZA[14]+=ZA[4]; ZA[14]+=ZR25(ZA[16]); ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[6]; ZA[21]+=0xd192e819U; @@ -1129,9 +1048,7 @@ ZA[16]+=ZA[3]; ZA[16]+=ZR25(ZA[22]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[14]; ZA[18]+=0xd6990624U; @@ -1141,9 +1058,7 @@ ZA[22]+=ZA[13]; ZA[22]+=ZR25(ZA[9]); ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[21]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[16]; ZA[23]+=0xf40e3585U; @@ -1153,9 +1068,7 @@ ZA[9]+=ZA[15]; ZA[9]+=ZR25(ZA[5]); ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[22]; ZA[24]+=0x106aa070U; @@ -1165,9 +1078,7 @@ ZA[5]+=ZA[10]; ZA[5]+=ZR25(ZA[12]); ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[9]; ZA[19]+=0x19a4c116U; @@ -1177,9 +1088,7 @@ ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[5]; ZA[20]+=0x1e376c08U; @@ -1189,9 +1098,7 @@ ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[12]; ZA[21]+=0x2748774cU; @@ -1201,9 +1108,7 @@ ZA[0]+=ZA[14]; ZA[0]+=ZR25(ZA[17]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[1]; ZA[18]+=0x34b0bcb5U; @@ -1213,9 +1118,7 @@ ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); ZA[16]=ZA[8]; ZA[16]+=ZA[18]; -ZA[8]=ZA[21]; -ZA[8]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZR30(ZA[7]); +ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); ZA[23]+=ZCh(ZA[16],ZA[19],ZA[24]); ZA[23]+=ZA[0]; ZA[23]+=0x391c0cb3U; @@ -1225,9 +1128,7 @@ ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); ZA[22]=ZA[2]; ZA[22]+=ZA[23]; -ZA[2]=ZA[18]; -ZA[2]+=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZR30(ZA[8]); +ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); ZA[24]+=ZCh(ZA[22],ZA[16],ZA[19]); ZA[24]+=ZA[17]; ZA[24]+=0x4ed8aa4aU; @@ -1237,9 +1138,7 @@ ZA[9]+=ZR25(ZA[13]); ZA[9]+=ZA[3]; ZA[3]=ZA[7]; ZA[3]+=ZA[24]; -ZA[7]=ZA[23]; -ZA[7]+=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZR30(ZA[2]); +ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); ZA[19]+=ZCh(ZA[3],ZA[22],ZA[16]); ZA[19]+=ZA[4]; ZA[19]+=0x5b9cca4fU; @@ -1268,10 +1167,7 @@ ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3]); ZA[22]+=ZA[13]; ZA[22]+=0x748f82eeU; ZA[22]+=ZR26(ZA[15]); -ZA[13]=ZR15(ZA[13]); -ZA[13]+=ZA[1]; -ZA[13]+=ZR25(ZA[11]); -ZA[13]+=ZA[10]; +ZA[13]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; ZA[10]=ZA[7]; ZA[10]+=ZA[22]; ZA[1]=ZA[16]; From dc2d4ab7df79cc96683351462075e35260f19a67 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Wed, 29 Feb 2012 22:32:29 +1100 Subject: [PATCH 040/117] Get rid of accessory braces. --- diablo120222.cl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 4f3f5cb3..ff2db4c4 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -80,7 +80,7 @@ ZA[3]+=ZMa(f1,g1,ZA[8]); ZA[3]+=ZR30(ZA[8]); ZA[6]=ZA[5]; ZA[6]+=g1; -ZA[2]=(ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6)+ZR26(ZA[6]); +ZA[2]=ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6+ZR26(ZA[6]); ZA[5]+=ZMa(ZA[8],f1,ZA[3]); ZA[5]+=ZR30(ZA[3]); ZA[7]=ZA[2]; @@ -673,7 +673,7 @@ ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); ZA[0]+=ZR30(ZA[2]); ZA[6]=ZA[11]; ZA[6]+=0xbb67ae85U; -ZA[15]=(ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U)+ZR26(ZA[6]); +ZA[15]=ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U+ZR26(ZA[6]); ZA[10]+=ZA[7]; ZA[10]+=state4; ZA[7]=ZA[15]; From c43f88733d076a34cbf3bed2da438cac18250d1e Mon Sep 17 00:00:00 2001 From: ckolivas Date: Thu, 1 Mar 2012 09:54:34 +1100 Subject: [PATCH 041/117] Separate out additions in final vector code in diablo kernel as well. --- diablo120222.cl | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index ff2db4c4..be81a909 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -1191,13 +1191,22 @@ ZA[15]+=ZR25(ZA[6]); ZA[15]+=ZA[11]; ZA[15]+=0x8cc70208U; ZA[15]+=ZR26(ZA[4]); - #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS2) || defined(VECTORS4) -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; +ZA[10]+=ZCh(ZA[15],ZA[4],ZA[3]); +ZA[10]+=ZA[22]; +ZA[10]+=ZMa(ZA[9],ZA[5],ZA[1]); +ZA[10]+=ZR30(ZA[1]); +ZA[10]+=ZR15(ZA[13]); +ZA[10]+=ZA[17]; +ZA[10]+=ZR25(ZA[14]); +ZA[10]+=ZA[6]; +ZA[10]+=ZR26(ZA[15]); +ZA[10]^=0x136032EDU; + bool result = any(!ZA[10]); if (result) { From 8140da915a37341b3d7a0f6890e162f2461064b9 Mon Sep 17 00:00:00 2001 From: ckolivas Date: Thu, 1 Mar 2012 11:48:31 +1100 Subject: [PATCH 042/117] Separate out all additions of different variables in diablo kernel. --- diablo120222.cl | 206 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 155 insertions(+), 51 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index be81a909..87f15082 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -80,7 +80,9 @@ ZA[3]+=ZMa(f1,g1,ZA[8]); ZA[3]+=ZR30(ZA[8]); ZA[6]=ZA[5]; ZA[6]+=g1; -ZA[2]=ZCh(ZA[6],ZA[4],ZA[2])+b1_plus_k6+ZR26(ZA[6]); +ZA[2]=ZCh(ZA[6],ZA[4],ZA[2]); +ZA[2]+=ZR26(ZA[6]); +ZA[2]+=b1_plus_k6; ZA[5]+=ZMa(ZA[8],f1,ZA[3]); ZA[5]+=ZR30(ZA[3]); ZA[7]=ZA[2]; @@ -652,7 +654,9 @@ ZA[7]+=0xc67178f2U; ZA[7]+=ZR26(ZA[17]); ZA[5]=ZA[9]; ZA[5]+=state1; -ZA[9]=ZA[7]+ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9])+state0; +ZA[9]=ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9]); +ZA[9]+=ZA[7]; +ZA[9]+=state0; ZA[15]=ZA[9]; ZA[15]+=0x98c7e2a2U; ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU); @@ -673,7 +677,10 @@ ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); ZA[0]+=ZR30(ZA[2]); ZA[6]=ZA[11]; ZA[6]+=0xbb67ae85U; -ZA[15]=ZCh(ZA[6],ZA[8],ZA[15])+ZA[1]+0x3ac42e24U+ZR26(ZA[6]); +ZA[15]=ZCh(ZA[6],ZA[8],ZA[15]); +ZA[15]+=ZR26(ZA[6]); +ZA[15]+=ZA[1]; +ZA[15]+=0x3ac42e24U; ZA[10]+=ZA[7]; ZA[10]+=state4; ZA[7]=ZA[15]; @@ -688,7 +695,9 @@ ZA[16]+=0xd21ea4fdU; ZA[16]+=ZR26(ZA[7]); ZA[24]=ZA[2]; ZA[24]+=ZA[16]; -ZA[2]=ZA[15]+ZMa(ZA[0],ZA[2],ZA[11])+ZR30(ZA[11]); +ZA[2]=ZMa(ZA[0],ZA[2],ZA[11]); +ZA[2]+=ZA[15]; +ZA[2]+=ZR30(ZA[11]); ZA[4]+=state6; ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6]); ZA[8]+=ZA[17]; @@ -713,7 +722,9 @@ ZA[7]+=0xab1c5ed5U; ZA[7]+=ZR26(ZA[0]); ZA[11]=ZA[2]; ZA[11]+=ZA[7]; -ZA[2]=ZMa(ZA[16],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[6]; +ZA[2]=ZMa(ZA[16],ZA[2],ZA[8]); +ZA[2]+=ZA[6]; +ZA[2]+=ZR30(ZA[8]); ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15]); ZA[24]+=0x5807aa98U; ZA[24]+=ZR26(ZA[11]); @@ -726,38 +737,50 @@ ZA[15]+=0x12835b01U; ZA[15]+=ZR26(ZA[6]); ZA[16]=ZA[8]; ZA[16]+=ZA[15]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[24]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[24]; +ZA[8]+=ZR30(ZA[7]); ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=0x243185beU; ZA[0]+=ZR26(ZA[16]); ZA[14]=ZA[2]; ZA[14]+=ZA[0]; -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[15]; +ZA[2]+=ZR30(ZA[8]); ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6]); ZA[11]+=0x550c7dc3U; ZA[11]+=ZR26(ZA[14]); ZA[15]=ZA[7]; ZA[15]+=ZA[11]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[0]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[0]; +ZA[7]+=ZR30(ZA[2]); ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16]); ZA[6]+=0x72be5d74U; ZA[6]+=ZR26(ZA[15]); ZA[0]=ZA[8]; ZA[0]+=ZA[6]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[11]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[11]; +ZA[8]+=ZR30(ZA[7]); ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14]); ZA[16]+=0x80deb1feU; ZA[16]+=ZR26(ZA[0]); ZA[11]=ZA[2]; ZA[11]+=ZA[16]; -ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[6]; +ZA[2]+=ZR30(ZA[8]); ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15]); ZA[14]+=0x9bdc06a7U; ZA[14]+=ZR26(ZA[11]); ZA[9]+=ZR25(ZA[5]); ZA[6]=ZA[7]; ZA[6]+=ZA[14]; -ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[16]; +ZA[7]+=ZR30(ZA[2]); ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); ZA[15]+=0xc19bf274U; ZA[15]+=ZR26(ZA[6]); @@ -765,14 +788,18 @@ ZA[5]+=ZR25(ZA[12]); ZA[5]+=0x00a00000U; ZA[16]=ZA[8]; ZA[16]+=ZA[15]; -ZA[8]=ZA[14]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[14]; +ZA[8]+=ZR30(ZA[7]); ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=ZA[9]; ZA[0]+=0xe49b69c1U; ZA[0]+=ZR26(ZA[16]); ZA[21]=ZA[2]; ZA[21]+=ZA[0]; -ZA[2]=ZA[15]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[15]; +ZA[2]+=ZR30(ZA[8]); ZA[11]+=ZCh(ZA[21],ZA[16],ZA[6]); ZA[11]+=ZA[5]; ZA[11]+=0xefbe4786U; @@ -783,7 +810,9 @@ ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZR25(ZA[10]); ZA[15]=ZA[7]; ZA[15]+=ZA[11]; -ZA[7]=ZA[0]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[0]; +ZA[7]+=ZR30(ZA[2]); ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16]); ZA[6]+=0x0fc19dc6U; ZA[6]+=ZA[12]; @@ -793,7 +822,9 @@ ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[10]; ZA[10]=ZA[8]; ZA[10]+=ZA[6]; -ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[11]; +ZA[8]+=ZR30(ZA[7]); ZA[16]+=ZCh(ZA[10],ZA[15],ZA[21]); ZA[16]+=ZA[1]; ZA[16]+=0x240ca1ccU; @@ -802,7 +833,9 @@ ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZR25(ZA[4]); ZA[11]=ZA[2]; ZA[11]+=ZA[16]; -ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[6]; +ZA[2]+=ZR30(ZA[8]); ZA[21]+=ZCh(ZA[11],ZA[10],ZA[15]); ZA[21]+=ZA[0]; ZA[21]+=0x2de92c6fU; @@ -812,7 +845,9 @@ ZA[4]+=0x00000100U; ZA[4]+=ZR25(ZA[3]); ZA[6]=ZA[7]; ZA[6]+=ZA[21]; -ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[16]; +ZA[7]+=ZR30(ZA[2]); ZA[15]+=ZCh(ZA[6],ZA[11],ZA[10]); ZA[15]+=ZA[17]; ZA[15]+=0x4a7484aaU; @@ -822,7 +857,9 @@ ZA[3]+=ZR15(ZA[17]); ZA[3]+=0x11002000U; ZA[16]=ZA[8]; ZA[16]+=ZA[15]; -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7])+ZA[21]; +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[21]; +ZA[8]+=ZR30(ZA[7]); ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[10]+=ZA[4]; ZA[10]+=0x5cb0a9dcU; @@ -832,7 +869,9 @@ ZA[13]+=ZA[5]; ZA[13]+=0x80000000U; ZA[22]=ZA[2]; ZA[22]+=ZA[10]; -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8])+ZA[15]; +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[15]; +ZA[2]+=ZR30(ZA[8]); ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6]); ZA[11]+=ZA[3]; ZA[11]+=0x76f988daU; @@ -841,7 +880,9 @@ ZA[15]=ZR15(ZA[3]); ZA[15]+=ZA[12]; ZA[18]=ZA[7]; ZA[18]+=ZA[11]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2])+ZA[10]; +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[10]; +ZA[7]+=ZR30(ZA[2]); ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16]); ZA[6]+=ZA[13]; ZA[6]+=0x983e5152U; @@ -850,7 +891,9 @@ ZA[10]=ZR15(ZA[13]); ZA[10]+=ZA[1]; ZA[23]=ZA[8]; ZA[23]+=ZA[6]; -ZA[8]=ZA[11]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[11]; +ZA[8]+=ZR30(ZA[7]); ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22]); ZA[16]+=ZA[15]; ZA[16]+=0xa831c66dU; @@ -859,7 +902,9 @@ ZA[11]=ZR15(ZA[15]); ZA[11]+=ZA[0]; ZA[24]=ZA[2]; ZA[24]+=ZA[16]; -ZA[2]=ZA[6]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[6]; +ZA[2]+=ZR30(ZA[8]); ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[22]+=ZA[10]; ZA[22]+=0xb00327c8U; @@ -868,7 +913,9 @@ ZA[6]=ZR15(ZA[10]); ZA[6]+=ZA[17]; ZA[19]=ZA[7]; ZA[19]+=ZA[22]; -ZA[7]=ZA[16]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[16]; +ZA[7]+=ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[11]; ZA[18]+=0xbf597fc7U; @@ -877,7 +924,9 @@ ZA[14]=ZR15(ZA[11]); ZA[14]+=ZA[4]; ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[22]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[22]; +ZA[8]+=ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[6]; ZA[23]+=0xc6e00bf3U; @@ -887,7 +936,9 @@ ZA[16]+=ZA[3]; ZA[16]+=0x00400022U; ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[18]; +ZA[2]+=ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[14]; ZA[24]+=0xd5a79147U; @@ -898,7 +949,9 @@ ZA[22]+=ZR25(ZA[9]); ZA[22]+=0x00000100U; ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[23]; +ZA[7]+=ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[16]; ZA[19]+=0x06ca6351U; @@ -908,7 +961,9 @@ ZA[9]+=ZR25(ZA[5]); ZA[9]+=ZA[15]; ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[24]; +ZA[8]+=ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[22]; ZA[20]+=0x14292967U; @@ -918,7 +973,9 @@ ZA[5]+=ZR25(ZA[12]); ZA[5]+=ZA[10]; ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[19]; +ZA[2]+=ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[9]; ZA[21]+=0x27b70a85U; @@ -928,7 +985,9 @@ ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[20]; +ZA[7]+=ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[5]; ZA[18]+=0x2e1b2138U; @@ -938,7 +997,9 @@ ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[21]; +ZA[8]+=ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[12]; ZA[23]+=0x4d2c6dfcU; @@ -948,7 +1009,9 @@ ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[14]; ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[18]; +ZA[2]+=ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[1]; ZA[24]+=0x53380d13U; @@ -958,7 +1021,9 @@ ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[23]; +ZA[7]+=ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[0]; ZA[19]+=0x650a7354U; @@ -968,7 +1033,9 @@ ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[24]; +ZA[8]+=ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[17]; ZA[20]+=0x766a0abbU; @@ -978,7 +1045,9 @@ ZA[3]+=ZA[9]; ZA[3]+=ZR25(ZA[13]); ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[19]; +ZA[2]+=ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[4]; ZA[21]+=0x81c2c92eU; @@ -988,7 +1057,9 @@ ZA[13]+=ZA[5]; ZA[13]+=ZR25(ZA[15]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[20]; +ZA[7]+=ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[3]; ZA[18]+=0x92722c85U; @@ -998,7 +1069,9 @@ ZA[15]+=ZA[12]; ZA[15]+=ZR25(ZA[10]); ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[21]; +ZA[8]+=ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[13]; ZA[23]+=0xa2bfe8a1U; @@ -1008,7 +1081,9 @@ ZA[10]+=ZA[1]; ZA[10]+=ZR25(ZA[11]); ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[18]; +ZA[2]+=ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[15]; ZA[24]+=0xa81a664bU; @@ -1018,7 +1093,9 @@ ZA[11]+=ZA[0]; ZA[11]+=ZR25(ZA[6]); ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[23]; +ZA[7]+=ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[10]; ZA[19]+=0xc24b8b70U; @@ -1028,7 +1105,9 @@ ZA[6]+=ZA[17]; ZA[6]+=ZR25(ZA[14]); ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[24]; +ZA[8]+=ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[11]; ZA[20]+=0xc76c51a3U; @@ -1038,7 +1117,9 @@ ZA[14]+=ZA[4]; ZA[14]+=ZR25(ZA[16]); ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[19]; +ZA[2]+=ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[6]; ZA[21]+=0xd192e819U; @@ -1048,7 +1129,9 @@ ZA[16]+=ZA[3]; ZA[16]+=ZR25(ZA[22]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[20]; +ZA[7]+=ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[14]; ZA[18]+=0xd6990624U; @@ -1058,7 +1141,9 @@ ZA[22]+=ZA[13]; ZA[22]+=ZR25(ZA[9]); ZA[20]=ZA[8]; ZA[20]+=ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[21]; +ZA[8]+=ZR30(ZA[7]); ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[16]; ZA[23]+=0xf40e3585U; @@ -1068,7 +1153,9 @@ ZA[9]+=ZA[15]; ZA[9]+=ZR25(ZA[5]); ZA[21]=ZA[2]; ZA[21]+=ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[18]; +ZA[2]+=ZR30(ZA[8]); ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[22]; ZA[24]+=0x106aa070U; @@ -1078,7 +1165,9 @@ ZA[5]+=ZA[10]; ZA[5]+=ZR25(ZA[12]); ZA[18]=ZA[7]; ZA[18]+=ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[23]; +ZA[7]+=ZR30(ZA[2]); ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); ZA[19]+=ZA[9]; ZA[19]+=0x19a4c116U; @@ -1088,7 +1177,9 @@ ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); ZA[23]=ZA[8]; ZA[23]+=ZA[19]; -ZA[8]=ZA[24]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[24]; +ZA[8]+=ZR30(ZA[7]); ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); ZA[20]+=ZA[5]; ZA[20]+=0x1e376c08U; @@ -1098,7 +1189,9 @@ ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); ZA[24]=ZA[2]; ZA[24]+=ZA[20]; -ZA[2]=ZA[19]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[19]; +ZA[2]+=ZR30(ZA[8]); ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[21]+=ZA[12]; ZA[21]+=0x2748774cU; @@ -1108,7 +1201,9 @@ ZA[0]+=ZA[14]; ZA[0]+=ZR25(ZA[17]); ZA[19]=ZA[7]; ZA[19]+=ZA[21]; -ZA[7]=ZA[20]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[20]; +ZA[7]+=ZR30(ZA[2]); ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[1]; ZA[18]+=0x34b0bcb5U; @@ -1118,7 +1213,9 @@ ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); ZA[16]=ZA[8]; ZA[16]+=ZA[18]; -ZA[8]=ZA[21]+ZMa(ZA[2],ZA[8],ZA[7])+ZR30(ZA[7]); +ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[8]+=ZA[21]; +ZA[8]+=ZR30(ZA[7]); ZA[23]+=ZCh(ZA[16],ZA[19],ZA[24]); ZA[23]+=ZA[0]; ZA[23]+=0x391c0cb3U; @@ -1128,7 +1225,9 @@ ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); ZA[22]=ZA[2]; ZA[22]+=ZA[23]; -ZA[2]=ZA[18]+ZMa(ZA[7],ZA[2],ZA[8])+ZR30(ZA[8]); +ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); +ZA[2]+=ZA[18]; +ZA[2]+=ZR30(ZA[8]); ZA[24]+=ZCh(ZA[22],ZA[16],ZA[19]); ZA[24]+=ZA[17]; ZA[24]+=0x4ed8aa4aU; @@ -1138,7 +1237,9 @@ ZA[9]+=ZR25(ZA[13]); ZA[9]+=ZA[3]; ZA[3]=ZA[7]; ZA[3]+=ZA[24]; -ZA[7]=ZA[23]+ZMa(ZA[8],ZA[7],ZA[2])+ZR30(ZA[2]); +ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); +ZA[7]+=ZA[23]; +ZA[7]+=ZR30(ZA[2]); ZA[19]+=ZCh(ZA[3],ZA[22],ZA[16]); ZA[19]+=ZA[4]; ZA[19]+=0x5b9cca4fU; @@ -1167,7 +1268,10 @@ ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3]); ZA[22]+=ZA[13]; ZA[22]+=0x748f82eeU; ZA[22]+=ZR26(ZA[15]); -ZA[13]=ZR15(ZA[13])+ZA[1]+ZR25(ZA[11])+ZA[10]; +ZA[13]=ZR15(ZA[13]); +ZA[13]+=ZA[10]; +ZA[13]+=ZA[1]; +ZA[13]+=ZR25(ZA[11]); ZA[10]=ZA[7]; ZA[10]+=ZA[22]; ZA[1]=ZA[16]; From 4885b02e32f04563497f2ea01ebd315a6d752417 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 3 Mar 2012 20:45:02 +1100 Subject: [PATCH 043/117] Add last value in vectors in diablo and poclbm kernel for consistency with original code. --- diablo120222.cl | 2 +- poclbm120222.cl | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 87f15082..56674ae8 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -1309,7 +1309,7 @@ ZA[10]+=ZA[17]; ZA[10]+=ZR25(ZA[14]); ZA[10]+=ZA[6]; ZA[10]+=ZR26(ZA[15]); -ZA[10]^=0x136032EDU; +ZA[10]+=0xEC9FCD13U; bool result = any(!ZA[10]); diff --git a/poclbm120222.cl b/poclbm120222.cl index a40f18be..bb6bfe32 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -1254,7 +1254,7 @@ Vals[4]+=Vals[0]; Vals[7]+=Vals[3]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); - Vals[7] ^= 0x136032edU; + Vals[7]+=0xEC9FCD13U; bool result = any(!Vals[7]); if (result) { if (!Vals[7].x) @@ -1269,7 +1269,7 @@ Vals[4]+=Vals[0]; #endif } #else - if (!(Vals[7]+ + if ((Vals[7]+ Ma(Vals[2],Vals[0],Vals[1])+ (rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22))+ W[12]+ @@ -1278,8 +1278,7 @@ Vals[4]+=Vals[0]; (rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U))+ Vals[3]+ (rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25))+ - ch(Vals[4],Vals[5],Vals[6])- - 0x136032edU)) + ch(Vals[4],Vals[5],Vals[6])) == 0x136032edU) output[FOUND] = output[NFLAG & nonce] = nonce; #endif } From 3fa8613557c0ddb9e6c3675627e36bcbe909815d Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 3 Mar 2012 21:18:06 +1100 Subject: [PATCH 044/117] Consolidate last use of W11 into Vals4 in poclbm. --- poclbm120222.cl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index bb6bfe32..85d7d5eb 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -1231,13 +1231,12 @@ Vals[5]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[5]+=ch(Vals[6],Vals[3],Vals[4]); Vals[5]+=K[58]; Vals[5]+=Vals[1]; - -W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); -W[11]+=W[4]; -W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=W[11]; Vals[4]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[4]+=ch(Vals[5],Vals[6],Vals[3]); +Vals[4]+=W[11]; +Vals[4]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); +Vals[4]+=W[4]; +Vals[4]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=K[59]; Vals[4]+=Vals[0]; From c297f63e5e6b7ddee9a30e2e7bc2056d1bad728b Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 3 Mar 2012 21:21:05 +1100 Subject: [PATCH 045/117] Put additions on separate lines for consistency in poclbm. --- poclbm120222.cl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index 85d7d5eb..f642236a 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -85,7 +85,8 @@ __kernel void search(const uint state0, const uint state1, const uint state2, co const u nonce = base + (uint)(get_global_id(0)); -Vals[0]=Preval0+nonce; +Vals[0]=Preval0; +Vals[0]+=nonce; Vals[3]=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],b1,c1); @@ -93,7 +94,8 @@ Vals[3]+=D1A; Vals[7]=Vals[3]; Vals[7]+=h1; -Vals[4]=PreVal4addT1+nonce; +Vals[4]=PreVal4addT1; +Vals[4]+=nonce; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[2]=C1addK5; From a7a9dbcf90f63c68b99e97ca1a7e5970db909d95 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 3 Mar 2012 21:58:12 +1100 Subject: [PATCH 046/117] Minor variable symmetry changes in poclbm. --- poclbm120222.cl | 72 +++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index f642236a..bdec3e58 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -784,79 +784,88 @@ Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=0xC19BF274U; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + +W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); +Vals[7]+=W[0]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); Vals[7]+=K[16]; -Vals[7]+=W[0]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=0x00a00000U; +Vals[6]+=W[1]; Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[17]; -Vals[6]+=W[1]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); +Vals[5]+=W[2]; Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[18]; -Vals[5]+=W[2]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); +Vals[4]+=W[3]; Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[19]; -Vals[4]+=W[3]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +Vals[3]+=W[4]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[20]; -Vals[3]+=W[4]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); +Vals[2]+=W[5]; Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[21]; -Vals[2]+=W[5]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=0x00000100U; +W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +Vals[1]+=W[6]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); Vals[1]+=K[22]; -Vals[1]+=W[6]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + W[7]+=0x11002000U; W[7]+=W[0]; +W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +Vals[0]+=W[7]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[23]; -W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=W[7]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[8]=0x80000000U; W[8]+=W[1]; @@ -865,7 +874,6 @@ Vals[7]+=W[8]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[24]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); @@ -878,6 +886,7 @@ Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[25]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); W[10]=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); @@ -885,7 +894,6 @@ Vals[5]+=W[10]; Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[26]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); @@ -898,6 +906,7 @@ Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[27]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); W[12]=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); @@ -905,7 +914,6 @@ Vals[3]+=W[12]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[28]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); @@ -918,6 +926,7 @@ Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[29]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); W[14]=0x00400022U; W[14]+=W[7]; @@ -926,7 +935,6 @@ Vals[1]+=W[14]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[30]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); @@ -941,6 +949,7 @@ Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[31]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); W[0]+=W[9]; @@ -949,7 +958,6 @@ Vals[7]+=W[0]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[32]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); @@ -963,6 +971,7 @@ Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[33]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; @@ -971,7 +980,6 @@ Vals[5]+=W[2]; Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[34]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); @@ -985,6 +993,7 @@ Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[35]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; @@ -993,7 +1002,6 @@ Vals[3]+=W[4]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[36]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); @@ -1007,6 +1015,7 @@ Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[37]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; @@ -1015,7 +1024,6 @@ Vals[1]+=W[6]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[38]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); @@ -1029,6 +1037,7 @@ Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[39]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; @@ -1037,7 +1046,6 @@ Vals[7]+=W[8]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[40]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); @@ -1051,6 +1059,7 @@ Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[41]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; @@ -1059,7 +1068,6 @@ Vals[5]+=W[10]; Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[42]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); @@ -1073,6 +1081,7 @@ Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[43]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; @@ -1081,7 +1090,6 @@ Vals[3]+=W[12]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[44]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); @@ -1095,6 +1103,7 @@ Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[45]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; @@ -1103,7 +1112,6 @@ Vals[1]+=W[14]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[46]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); @@ -1117,6 +1125,7 @@ Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[47]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); W[0]+=W[9]; @@ -1125,7 +1134,6 @@ Vals[7]+=W[0]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[48]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); @@ -1139,6 +1147,7 @@ Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[49]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; @@ -1147,7 +1156,6 @@ Vals[5]+=W[2]; Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[50]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); @@ -1161,6 +1169,7 @@ Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[51]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; @@ -1169,7 +1178,6 @@ Vals[3]+=W[4]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[52]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); @@ -1183,6 +1191,7 @@ Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[53]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; @@ -1191,7 +1200,6 @@ Vals[1]+=W[6]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[54]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); @@ -1205,6 +1213,7 @@ Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[55]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; @@ -1213,7 +1222,6 @@ Vals[7]+=W[8]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[56]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); From 338f6d5788cbebddc0e4dd92b34933f76c527492 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 4 Mar 2012 10:47:23 +1100 Subject: [PATCH 047/117] Clean up use of any() by diablo and poclbm kernels. --- diablo120222.cl | 22 +++++----------------- poclbm120222.cl | 13 ++++++------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 56674ae8..dc96740e 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -1309,31 +1309,19 @@ ZA[10]+=ZA[17]; ZA[10]+=ZR25(ZA[14]); ZA[10]+=ZA[6]; ZA[10]+=ZR26(ZA[15]); -ZA[10]+=0xEC9FCD13U; - bool result = any(!ZA[10]); - - if (result) { - if (!ZA[10].x) + if (any(ZA[10] == 0x136032EDU)) { + if (ZA[10].x == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (!ZA[10].y) + if (ZA[10].y == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; #if defined(VECTORS4) - if (!ZA[10].z) + if (ZA[10].z == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z; - if (!ZA[10].w) + if (ZA[10].w == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w; #endif } -#elif defined(VECTORS2) - bool result = any(!ZA[10]); - - if (result) { - if (!ZA[10].x) - output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (!ZA[10].y) - output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; - } #else if (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) diff --git a/poclbm120222.cl b/poclbm120222.cl index bdec3e58..f006112d 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -1263,17 +1263,16 @@ Vals[4]+=Vals[0]; Vals[7]+=Vals[3]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); - Vals[7]+=0xEC9FCD13U; - bool result = any(!Vals[7]); - if (result) { - if (!Vals[7].x) + + if (any(Vals[7] == 0x136032edU)) { + if (Vals[7].x == 0x136032edU) output[FOUND] = output[NFLAG & nonce.x] = nonce.x; - if (!Vals[7].y) + if (Vals[7].y == 0x136032edU) output[FOUND] = output[NFLAG & nonce.y] = nonce.y; #if defined(VECTORS4) - if (!Vals[7].z) + if (Vals[7].z == 0x136032edU) output[FOUND] = output[NFLAG & nonce.z] = nonce.z; - if (!Vals[7].w) + if (Vals[7].w == 0x136032edU) output[FOUND] = output[NFLAG & nonce.w] = nonce.w; #endif } From 5518891678ecd93845e5cd0a7e08e577d436f497 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 4 Mar 2012 11:19:16 +1100 Subject: [PATCH 048/117] Variable assignment alignment in diablo kernel. --- diablo120222.cl | 244 ++++++++++++++++++++++++------------------------ 1 file changed, 122 insertions(+), 122 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index dc96740e..75ce6632 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -149,9 +149,9 @@ ZA[4]+=W16_plus_K16; ZA[4]+=ZR26(ZA[8]); ZA[0]=ZR25(Znonce); ZA[0]+=W18; -ZA[11]=ZA[4]; -ZA[11]+=ZMa(ZA[2],ZA[5],ZA[10]); +ZA[11]=ZMa(ZA[2],ZA[5],ZA[10]); ZA[11]+=ZR30(ZA[10]); +ZA[11]+=ZA[4]; ZA[4]+=ZA[3]; ZA[6]+=ZCh(ZA[4],ZA[8],ZA[7]); ZA[6]+=W17_plus_K17; @@ -167,9 +167,9 @@ ZA[7]+=0x0fc19dc6U; ZA[7]+=ZR26(ZA[5]); ZA[1]=ZR15(ZA[0]); ZA[1]+=0x80000000U; -ZA[12]=ZA[7]; -ZA[12]+=ZMa(ZA[11],ZA[10],ZA[6]); +ZA[12]=ZMa(ZA[11],ZA[10],ZA[6]); ZA[12]+=ZR30(ZA[6]); +ZA[12]+=ZA[7]; ZA[7]+=ZA[2]; ZA[8]+=ZCh(ZA[7],ZA[5],ZA[4]); ZA[8]+=ZA[3]; @@ -186,9 +186,9 @@ ZA[4]+=0x2de92c6fU; ZA[4]+=ZR26(ZA[10]); ZA[8]=ZR15(ZA[1]); ZA[8]+=0x00000280U; -ZA[14]=ZA[4]; -ZA[14]+=ZMa(ZA[12],ZA[6],ZA[13]); +ZA[14]=ZMa(ZA[12],ZA[6],ZA[13]); ZA[14]+=ZR30(ZA[13]); +ZA[14]+=ZA[4]; ZA[4]+=ZA[11]; ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7]); ZA[5]+=ZA[2]; @@ -196,20 +196,20 @@ ZA[5]+=0x4a7484aaU; ZA[5]+=ZR26(ZA[4]); ZA[11]=ZR15(ZA[2]); ZA[11]+=W16; -ZA[15]=ZA[5]; -ZA[15]+=ZMa(ZA[13],ZA[12],ZA[14]); +ZA[15]=ZMa(ZA[13],ZA[12],ZA[14]); ZA[15]+=ZR30(ZA[14]); +ZA[15]+=ZA[5]; ZA[5]+=ZA[6]; ZA[6]=ZCh(ZA[5],ZA[4],ZA[10]); -ZA[6]+=ZA[7]; ZA[6]+=ZA[8]; ZA[6]+=0x5cb0a9dcU; ZA[6]+=ZR26(ZA[5]); +ZA[6]+=ZA[7]; ZA[7]=ZR15(ZA[8]); ZA[7]+=W17; -ZA[16]=ZA[6]; -ZA[16]+=ZMa(ZA[14],ZA[13],ZA[15]); +ZA[16]=ZMa(ZA[14],ZA[13],ZA[15]); ZA[16]+=ZR30(ZA[15]); +ZA[16]+=ZA[6]; ZA[6]+=ZA[12]; ZA[10]+=ZCh(ZA[6],ZA[5],ZA[4]); ZA[10]+=ZA[11]; @@ -222,10 +222,10 @@ ZA[17]+=ZMa(ZA[15],ZA[14],ZA[16]); ZA[17]+=ZR30(ZA[16]); ZA[10]+=ZA[13]; ZA[13]=ZCh(ZA[10],ZA[6],ZA[5]); -ZA[13]+=ZA[4]; ZA[13]+=ZA[7]; ZA[13]+=0x983e5152U; ZA[13]+=ZR26(ZA[10]); +ZA[13]+=ZA[4]; ZA[4]=ZR15(ZA[7]); ZA[4]+=ZA[3]; ZA[14]+=ZA[13]; @@ -237,15 +237,15 @@ ZA[5]+=0xa831c66dU; ZA[5]+=ZR26(ZA[14]); ZA[9]=ZR15(ZA[12]); ZA[9]+=ZA[1]; -ZA[18]=ZA[5]; -ZA[18]+=ZMa(ZA[17],ZA[16],ZA[13]); +ZA[18]=ZMa(ZA[17],ZA[16],ZA[13]); ZA[18]+=ZR30(ZA[13]); +ZA[18]+=ZA[5]; ZA[5]+=ZA[15]; ZA[15]=ZCh(ZA[5],ZA[14],ZA[10]); -ZA[15]+=ZA[6]; ZA[15]+=ZA[4]; ZA[15]+=0xb00327c8U; ZA[15]+=ZR26(ZA[5]); +ZA[15]+=ZA[6]; ZA[6]=ZR15(ZA[4]); ZA[6]+=ZA[2]; ZA[19]=ZA[15]; @@ -253,15 +253,15 @@ ZA[19]+=ZMa(ZA[13],ZA[17],ZA[18]); ZA[19]+=ZR30(ZA[18]); ZA[15]+=ZA[16]; ZA[16]=ZCh(ZA[15],ZA[5],ZA[14]); -ZA[16]+=ZA[10]; ZA[16]+=ZA[9]; ZA[16]+=0xbf597fc7U; ZA[16]+=ZR26(ZA[15]); +ZA[16]+=ZA[10]; ZA[10]=ZR15(ZA[9]); ZA[10]+=ZA[8]; -ZA[20]=ZA[16]; -ZA[20]+=ZMa(ZA[18],ZA[13],ZA[19]); +ZA[20]=ZMa(ZA[18],ZA[13],ZA[19]); ZA[20]+=ZR30(ZA[19]); +ZA[20]+=ZA[16]; ZA[16]+=ZA[17]; ZA[14]+=ZCh(ZA[16],ZA[15],ZA[5]); ZA[14]+=ZA[6]; @@ -270,15 +270,15 @@ ZA[14]+=ZR26(ZA[16]); ZA[17]=ZR15(ZA[6]); ZA[17]+=ZA[11]; ZA[17]+=0x00A00055U; -ZA[21]=ZA[14]; -ZA[21]+=ZMa(ZA[19],ZA[18],ZA[20]); +ZA[21]=ZMa(ZA[19],ZA[18],ZA[20]); ZA[21]+=ZR30(ZA[20]); +ZA[21]+=ZA[14]; ZA[14]+=ZA[13]; ZA[13]=ZCh(ZA[14],ZA[16],ZA[15]); -ZA[13]+=ZA[5]; ZA[13]+=ZA[10]; ZA[13]+=0xd5a79147U; ZA[13]+=ZR26(ZA[14]); +ZA[13]+=ZA[5]; ZA[5]=ZR15(ZA[10]); ZA[5]+=ZA[7]; ZA[5]+=W31; @@ -637,9 +637,9 @@ ZA[6]+=ZCh(ZA[4],ZA[3],ZA[16]); ZA[6]+=ZR15(ZA[2]); ZA[6]+=ZA[11]; ZA[6]+=ZR25(ZA[5]); -ZA[6]+=ZA[17]; ZA[6]+=0xbef9a3f7U; ZA[6]+=ZR26(ZA[4]); +ZA[6]+=ZA[17]; ZA[17]=ZA[0]; ZA[17]+=ZA[6]; ZA[9]=ZA[6]; @@ -652,8 +652,8 @@ ZA[7]+=ZR25(ZA[15]); ZA[7]+=ZA[5]; ZA[7]+=0xc67178f2U; ZA[7]+=ZR26(ZA[17]); -ZA[5]=ZA[9]; -ZA[5]+=state1; +ZA[5]=state1; +ZA[5]+=ZA[9]; ZA[9]=ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9]); ZA[9]+=ZA[7]; ZA[9]+=state0; @@ -681,8 +681,8 @@ ZA[15]=ZCh(ZA[6],ZA[8],ZA[15]); ZA[15]+=ZR26(ZA[6]); ZA[15]+=ZA[1]; ZA[15]+=0x3ac42e24U; -ZA[10]+=ZA[7]; ZA[10]+=state4; +ZA[10]+=ZA[7]; ZA[7]=ZA[15]; ZA[7]+=0x6a09e667U; ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0]); @@ -693,8 +693,8 @@ ZA[16]+=ZA[10]; ZA[16]+=ZA[9]; ZA[16]+=0xd21ea4fdU; ZA[16]+=ZR26(ZA[7]); -ZA[24]=ZA[2]; -ZA[24]+=ZA[16]; +ZA[24]=ZA[16]; +ZA[24]+=ZA[2]; ZA[2]=ZMa(ZA[0],ZA[2],ZA[11]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[11]); @@ -720,8 +720,8 @@ ZA[7]+=ZCh(ZA[0],ZA[15],ZA[24]); ZA[7]+=ZA[3]; ZA[7]+=0xab1c5ed5U; ZA[7]+=ZR26(ZA[0]); -ZA[11]=ZA[2]; -ZA[11]+=ZA[7]; +ZA[11]=ZA[7]; +ZA[11]+=ZA[2]; ZA[2]=ZMa(ZA[16],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); @@ -735,40 +735,40 @@ ZA[7]+=ZR30(ZA[2]); ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); ZA[15]+=0x12835b01U; ZA[15]+=ZR26(ZA[6]); -ZA[16]=ZA[8]; -ZA[16]+=ZA[15]; +ZA[16]=ZA[15]; +ZA[16]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=0x243185beU; ZA[0]+=ZR26(ZA[16]); -ZA[14]=ZA[2]; -ZA[14]+=ZA[0]; +ZA[14]=ZA[0]; +ZA[14]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[8]); ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6]); ZA[11]+=0x550c7dc3U; ZA[11]+=ZR26(ZA[14]); -ZA[15]=ZA[7]; -ZA[15]+=ZA[11]; +ZA[15]=ZA[11]; +ZA[15]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[0]; ZA[7]+=ZR30(ZA[2]); ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16]); ZA[6]+=0x72be5d74U; ZA[6]+=ZR26(ZA[15]); -ZA[0]=ZA[8]; -ZA[0]+=ZA[6]; +ZA[0]=ZA[6]; +ZA[0]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[11]; ZA[8]+=ZR30(ZA[7]); ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14]); ZA[16]+=0x80deb1feU; ZA[16]+=ZR26(ZA[0]); -ZA[11]=ZA[2]; -ZA[11]+=ZA[16]; +ZA[11]=ZA[16]; +ZA[11]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); @@ -776,8 +776,8 @@ ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15]); ZA[14]+=0x9bdc06a7U; ZA[14]+=ZR26(ZA[11]); ZA[9]+=ZR25(ZA[5]); -ZA[6]=ZA[7]; -ZA[6]+=ZA[14]; +ZA[6]=ZA[14]; +ZA[6]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[16]; ZA[7]+=ZR30(ZA[2]); @@ -786,8 +786,8 @@ ZA[15]+=0xc19bf274U; ZA[15]+=ZR26(ZA[6]); ZA[5]+=ZR25(ZA[12]); ZA[5]+=0x00a00000U; -ZA[16]=ZA[8]; -ZA[16]+=ZA[15]; +ZA[16]=ZA[15]; +ZA[16]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[14]; ZA[8]+=ZR30(ZA[7]); @@ -795,8 +795,8 @@ ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=ZA[9]; ZA[0]+=0xe49b69c1U; ZA[0]+=ZR26(ZA[16]); -ZA[21]=ZA[2]; -ZA[21]+=ZA[0]; +ZA[21]=ZA[0]; +ZA[21]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[8]); @@ -808,8 +808,8 @@ ZA[12]+=ZR15(ZA[9]); ZA[12]+=ZR25(ZA[1]); ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZR25(ZA[10]); -ZA[15]=ZA[7]; -ZA[15]+=ZA[11]; +ZA[15]=ZA[11]; +ZA[15]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[0]; ZA[7]+=ZR30(ZA[2]); @@ -820,8 +820,8 @@ ZA[6]+=ZR26(ZA[15]); ZA[0]=ZR15(ZA[12]); ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[10]; -ZA[10]=ZA[8]; -ZA[10]+=ZA[6]; +ZA[10]=ZA[6]; +ZA[10]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[11]; ZA[8]+=ZR30(ZA[7]); @@ -831,8 +831,8 @@ ZA[16]+=0x240ca1ccU; ZA[16]+=ZR26(ZA[10]); ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZR25(ZA[4]); -ZA[11]=ZA[2]; -ZA[11]+=ZA[16]; +ZA[11]=ZA[16]; +ZA[11]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); @@ -843,8 +843,8 @@ ZA[21]+=ZR26(ZA[11]); ZA[4]+=ZR15(ZA[0]); ZA[4]+=0x00000100U; ZA[4]+=ZR25(ZA[3]); -ZA[6]=ZA[7]; -ZA[6]+=ZA[21]; +ZA[6]=ZA[21]; +ZA[6]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[16]; ZA[7]+=ZR30(ZA[2]); @@ -855,8 +855,8 @@ ZA[15]+=ZR26(ZA[6]); ZA[3]+=ZA[9]; ZA[3]+=ZR15(ZA[17]); ZA[3]+=0x11002000U; -ZA[16]=ZA[8]; -ZA[16]+=ZA[15]; +ZA[16]=ZA[15]; +ZA[16]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -867,8 +867,8 @@ ZA[10]+=ZR26(ZA[16]); ZA[13]=ZR15(ZA[4]); ZA[13]+=ZA[5]; ZA[13]+=0x80000000U; -ZA[22]=ZA[2]; -ZA[22]+=ZA[10]; +ZA[22]=ZA[10]; +ZA[22]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[8]); @@ -878,8 +878,8 @@ ZA[11]+=0x76f988daU; ZA[11]+=ZR26(ZA[22]); ZA[15]=ZR15(ZA[3]); ZA[15]+=ZA[12]; -ZA[18]=ZA[7]; -ZA[18]+=ZA[11]; +ZA[18]=ZA[11]; +ZA[18]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[10]; ZA[7]+=ZR30(ZA[2]); @@ -889,8 +889,8 @@ ZA[6]+=0x983e5152U; ZA[6]+=ZR26(ZA[18]); ZA[10]=ZR15(ZA[13]); ZA[10]+=ZA[1]; -ZA[23]=ZA[8]; -ZA[23]+=ZA[6]; +ZA[23]=ZA[6]; +ZA[23]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[11]; ZA[8]+=ZR30(ZA[7]); @@ -900,8 +900,8 @@ ZA[16]+=0xa831c66dU; ZA[16]+=ZR26(ZA[23]); ZA[11]=ZR15(ZA[15]); ZA[11]+=ZA[0]; -ZA[24]=ZA[2]; -ZA[24]+=ZA[16]; +ZA[24]=ZA[16]; +ZA[24]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); @@ -911,8 +911,8 @@ ZA[22]+=0xb00327c8U; ZA[22]+=ZR26(ZA[24]); ZA[6]=ZR15(ZA[10]); ZA[6]+=ZA[17]; -ZA[19]=ZA[7]; -ZA[19]+=ZA[22]; +ZA[19]=ZA[22]; +ZA[19]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[16]; ZA[7]+=ZR30(ZA[2]); @@ -922,8 +922,8 @@ ZA[18]+=0xbf597fc7U; ZA[18]+=ZR26(ZA[19]); ZA[14]=ZR15(ZA[11]); ZA[14]+=ZA[4]; -ZA[20]=ZA[8]; -ZA[20]+=ZA[18]; +ZA[20]=ZA[18]; +ZA[20]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[22]; ZA[8]+=ZR30(ZA[7]); @@ -934,8 +934,8 @@ ZA[23]+=ZR26(ZA[20]); ZA[16]=ZR15(ZA[6]); ZA[16]+=ZA[3]; ZA[16]+=0x00400022U; -ZA[21]=ZA[2]; -ZA[21]+=ZA[23]; +ZA[21]=ZA[23]; +ZA[21]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -947,8 +947,8 @@ ZA[22]=ZR15(ZA[14]); ZA[22]+=ZA[13]; ZA[22]+=ZR25(ZA[9]); ZA[22]+=0x00000100U; -ZA[18]=ZA[7]; -ZA[18]+=ZA[24]; +ZA[18]=ZA[24]; +ZA[18]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -959,8 +959,8 @@ ZA[19]+=ZR26(ZA[18]); ZA[9]+=ZR15(ZA[16]); ZA[9]+=ZR25(ZA[5]); ZA[9]+=ZA[15]; -ZA[23]=ZA[8]; -ZA[23]+=ZA[19]; +ZA[23]=ZA[19]; +ZA[23]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -971,8 +971,8 @@ ZA[20]+=ZR26(ZA[23]); ZA[5]+=ZR15(ZA[22]); ZA[5]+=ZR25(ZA[12]); ZA[5]+=ZA[10]; -ZA[24]=ZA[2]; -ZA[24]+=ZA[20]; +ZA[24]=ZA[20]; +ZA[24]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -983,8 +983,8 @@ ZA[21]+=ZR26(ZA[24]); ZA[12]+=ZR15(ZA[9]); ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); -ZA[19]=ZA[7]; -ZA[19]+=ZA[21]; +ZA[19]=ZA[21]; +ZA[19]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -995,8 +995,8 @@ ZA[18]+=ZR26(ZA[19]); ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); -ZA[20]=ZA[8]; -ZA[20]+=ZA[18]; +ZA[20]=ZA[18]; +ZA[20]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1007,8 +1007,8 @@ ZA[23]+=ZR26(ZA[20]); ZA[0]+=ZR15(ZA[12]); ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[14]; -ZA[21]=ZA[2]; -ZA[21]+=ZA[23]; +ZA[21]=ZA[23]; +ZA[21]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1019,8 +1019,8 @@ ZA[24]+=ZR26(ZA[21]); ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); -ZA[18]=ZA[7]; -ZA[18]+=ZA[24]; +ZA[18]=ZA[24]; +ZA[18]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1031,8 +1031,8 @@ ZA[19]+=ZR26(ZA[18]); ZA[4]+=ZR15(ZA[0]); ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); -ZA[23]=ZA[8]; -ZA[23]+=ZA[19]; +ZA[23]=ZA[19]; +ZA[23]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -1043,8 +1043,8 @@ ZA[20]+=ZR26(ZA[23]); ZA[3]+=ZR15(ZA[17]); ZA[3]+=ZA[9]; ZA[3]+=ZR25(ZA[13]); -ZA[24]=ZA[2]; -ZA[24]+=ZA[20]; +ZA[24]=ZA[20]; +ZA[24]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -1055,8 +1055,8 @@ ZA[21]+=ZR26(ZA[24]); ZA[13]+=ZR15(ZA[4]); ZA[13]+=ZA[5]; ZA[13]+=ZR25(ZA[15]); -ZA[19]=ZA[7]; -ZA[19]+=ZA[21]; +ZA[19]=ZA[21]; +ZA[19]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -1067,8 +1067,8 @@ ZA[18]+=ZR26(ZA[19]); ZA[15]+=ZR15(ZA[3]); ZA[15]+=ZA[12]; ZA[15]+=ZR25(ZA[10]); -ZA[20]=ZA[8]; -ZA[20]+=ZA[18]; +ZA[20]=ZA[18]; +ZA[20]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1079,8 +1079,8 @@ ZA[23]+=ZR26(ZA[20]); ZA[10]+=ZR15(ZA[13]); ZA[10]+=ZA[1]; ZA[10]+=ZR25(ZA[11]); -ZA[21]=ZA[2]; -ZA[21]+=ZA[23]; +ZA[21]=ZA[23]; +ZA[21]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1091,8 +1091,8 @@ ZA[24]+=ZR26(ZA[21]); ZA[11]+=ZR15(ZA[15]); ZA[11]+=ZA[0]; ZA[11]+=ZR25(ZA[6]); -ZA[18]=ZA[7]; -ZA[18]+=ZA[24]; +ZA[18]=ZA[24]; +ZA[18]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1103,8 +1103,8 @@ ZA[19]+=ZR26(ZA[18]); ZA[6]+=ZR15(ZA[10]); ZA[6]+=ZA[17]; ZA[6]+=ZR25(ZA[14]); -ZA[23]=ZA[8]; -ZA[23]+=ZA[19]; +ZA[23]=ZA[19]; +ZA[23]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -1115,8 +1115,8 @@ ZA[20]+=ZR26(ZA[23]); ZA[14]+=ZR15(ZA[11]); ZA[14]+=ZA[4]; ZA[14]+=ZR25(ZA[16]); -ZA[24]=ZA[2]; -ZA[24]+=ZA[20]; +ZA[24]=ZA[20]; +ZA[24]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -1127,8 +1127,8 @@ ZA[21]+=ZR26(ZA[24]); ZA[16]+=ZR15(ZA[6]); ZA[16]+=ZA[3]; ZA[16]+=ZR25(ZA[22]); -ZA[19]=ZA[7]; -ZA[19]+=ZA[21]; +ZA[19]=ZA[21]; +ZA[19]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -1139,8 +1139,8 @@ ZA[18]+=ZR26(ZA[19]); ZA[22]+=ZR15(ZA[14]); ZA[22]+=ZA[13]; ZA[22]+=ZR25(ZA[9]); -ZA[20]=ZA[8]; -ZA[20]+=ZA[18]; +ZA[20]=ZA[18]; +ZA[20]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1151,8 +1151,8 @@ ZA[23]+=ZR26(ZA[20]); ZA[9]+=ZR15(ZA[16]); ZA[9]+=ZA[15]; ZA[9]+=ZR25(ZA[5]); -ZA[21]=ZA[2]; -ZA[21]+=ZA[23]; +ZA[21]=ZA[23]; +ZA[21]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1163,8 +1163,8 @@ ZA[24]+=ZR26(ZA[21]); ZA[5]+=ZR15(ZA[22]); ZA[5]+=ZA[10]; ZA[5]+=ZR25(ZA[12]); -ZA[18]=ZA[7]; -ZA[18]+=ZA[24]; +ZA[18]=ZA[24]; +ZA[18]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1175,8 +1175,8 @@ ZA[19]+=ZR26(ZA[18]); ZA[12]+=ZR15(ZA[9]); ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); -ZA[23]=ZA[8]; -ZA[23]+=ZA[19]; +ZA[23]=ZA[19]; +ZA[23]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -1187,8 +1187,8 @@ ZA[20]+=ZR26(ZA[23]); ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); -ZA[24]=ZA[2]; -ZA[24]+=ZA[20]; +ZA[24]=ZA[20]; +ZA[24]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -1199,8 +1199,8 @@ ZA[21]+=ZR26(ZA[24]); ZA[0]+=ZR15(ZA[12]); ZA[0]+=ZA[14]; ZA[0]+=ZR25(ZA[17]); -ZA[19]=ZA[7]; -ZA[19]+=ZA[21]; +ZA[19]=ZA[21]; +ZA[19]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -1211,8 +1211,8 @@ ZA[18]+=ZR26(ZA[19]); ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); -ZA[16]=ZA[8]; -ZA[16]+=ZA[18]; +ZA[16]=ZA[18]; +ZA[16]+=ZA[8]; ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1223,8 +1223,8 @@ ZA[23]+=ZR26(ZA[16]); ZA[4]+=ZR15(ZA[0]); ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); -ZA[22]=ZA[2]; -ZA[22]+=ZA[23]; +ZA[22]=ZA[23]; +ZA[22]+=ZA[2]; ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1235,8 +1235,8 @@ ZA[24]+=ZR26(ZA[22]); ZA[9]+=ZR15(ZA[17]); ZA[9]+=ZR25(ZA[13]); ZA[9]+=ZA[3]; -ZA[3]=ZA[7]; -ZA[3]+=ZA[24]; +ZA[3]=ZA[24]; +ZA[3]+=ZA[7]; ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1282,11 +1282,12 @@ ZA[3]+=ZA[5]; ZA[3]+=ZA[12]; ZA[3]+=0x78a5636fU; ZA[3]+=ZR26(ZA[10]); +ZA[4]+=ZR26(ZA[3]); ZA[4]+=ZCh(ZA[3],ZA[10],ZA[15]); ZA[4]+=ZA[9]; ZA[4]+=ZA[13]; ZA[4]+=0x84c87814U; -ZA[4]+=ZR26(ZA[3]); +ZA[15]+=ZR26(ZA[4]); ZA[15]+=ZCh(ZA[4],ZA[3],ZA[10]); ZA[15]+=ZA[1]; ZA[15]+=ZR15(ZA[12]); @@ -1294,12 +1295,12 @@ ZA[15]+=ZA[0]; ZA[15]+=ZR25(ZA[6]); ZA[15]+=ZA[11]; ZA[15]+=0x8cc70208U; -ZA[15]+=ZR26(ZA[4]); #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS2) || defined(VECTORS4) +ZA[10]+=ZR26(ZA[15]); ZA[10]+=ZCh(ZA[15],ZA[4],ZA[3]); ZA[10]+=ZA[22]; ZA[10]+=ZMa(ZA[9],ZA[5],ZA[1]); @@ -1308,7 +1309,6 @@ ZA[10]+=ZR15(ZA[13]); ZA[10]+=ZA[17]; ZA[10]+=ZR25(ZA[14]); ZA[10]+=ZA[6]; -ZA[10]+=ZR26(ZA[15]); if (any(ZA[10] == 0x136032EDU)) { if (ZA[10].x == 0x136032EDU) From c10ea0b1b55e5f822e30834e8edf412ce93090f9 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 4 Mar 2012 12:16:26 +1100 Subject: [PATCH 049/117] Add spaces to new assignments in diablo kernel. --- diablo120222.cl | 199 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) diff --git a/diablo120222.cl b/diablo120222.cl index 75ce6632..4633f0c8 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -66,29 +66,37 @@ __kernel __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( ZA[2]=Znonce; ZA[2]+=PreVal4_state0; + ZA[3]=ZCh(ZA[2],b1,c1); ZA[3]+=d1; ZA[3]+=ZR26(ZA[2]); + ZA[8]=Znonce; ZA[8]+=PreVal4_T1; + ZA[4]=ZA[3]; ZA[4]+=h1; + ZA[5]=ZCh(ZA[4],ZA[2],b1); ZA[5]+=c1_plus_k5; ZA[5]+=ZR26(ZA[4]); ZA[3]+=ZMa(f1,g1,ZA[8]); ZA[3]+=ZR30(ZA[8]); + ZA[6]=ZA[5]; ZA[6]+=g1; + ZA[2]=ZCh(ZA[6],ZA[4],ZA[2]); ZA[2]+=ZR26(ZA[6]); ZA[2]+=b1_plus_k6; ZA[5]+=ZMa(ZA[8],f1,ZA[3]); ZA[5]+=ZR30(ZA[3]); + ZA[7]=ZA[2]; ZA[7]+=f1; ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5]); ZA[2]+=ZR30(ZA[5]); + ZA[10]=Znonce; ZA[10]+=PreVal4_state0_k7; ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4]); @@ -147,8 +155,10 @@ ZA[10]+=ZR30(ZA[2]); ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6]); ZA[4]+=W16_plus_K16; ZA[4]+=ZR26(ZA[8]); + ZA[0]=ZR25(Znonce); ZA[0]+=W18; + ZA[11]=ZMa(ZA[2],ZA[5],ZA[10]); ZA[11]+=ZR30(ZA[10]); ZA[11]+=ZA[4]; @@ -159,14 +169,17 @@ ZA[6]+=ZR26(ZA[4]); ZA[5]+=ZA[6]; ZA[6]+=ZMa(ZA[10],ZA[2],ZA[11]); ZA[6]+=ZR30(ZA[11]); + ZA[3]=Znonce; ZA[3]+=W19; ZA[7]+=ZCh(ZA[5],ZA[4],ZA[8]); ZA[7]+=ZA[0]; ZA[7]+=0x0fc19dc6U; ZA[7]+=ZR26(ZA[5]); + ZA[1]=ZR15(ZA[0]); ZA[1]+=0x80000000U; + ZA[12]=ZMa(ZA[11],ZA[10],ZA[6]); ZA[12]+=ZR30(ZA[6]); ZA[12]+=ZA[7]; @@ -175,7 +188,9 @@ ZA[8]+=ZCh(ZA[7],ZA[5],ZA[4]); ZA[8]+=ZA[3]; ZA[8]+=0x240ca1ccU; ZA[8]+=ZR26(ZA[7]); + ZA[2]=ZR15(ZA[3]); + ZA[13]=ZA[8]; ZA[13]+=ZMa(ZA[6],ZA[11],ZA[12]); ZA[13]+=ZR30(ZA[12]); @@ -184,8 +199,10 @@ ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]); ZA[4]+=ZA[1]; ZA[4]+=0x2de92c6fU; ZA[4]+=ZR26(ZA[10]); + ZA[8]=ZR15(ZA[1]); ZA[8]+=0x00000280U; + ZA[14]=ZMa(ZA[12],ZA[6],ZA[13]); ZA[14]+=ZR30(ZA[13]); ZA[14]+=ZA[4]; @@ -194,19 +211,24 @@ ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7]); ZA[5]+=ZA[2]; ZA[5]+=0x4a7484aaU; ZA[5]+=ZR26(ZA[4]); + ZA[11]=ZR15(ZA[2]); ZA[11]+=W16; + ZA[15]=ZMa(ZA[13],ZA[12],ZA[14]); ZA[15]+=ZR30(ZA[14]); ZA[15]+=ZA[5]; ZA[5]+=ZA[6]; + ZA[6]=ZCh(ZA[5],ZA[4],ZA[10]); ZA[6]+=ZA[8]; ZA[6]+=0x5cb0a9dcU; ZA[6]+=ZR26(ZA[5]); ZA[6]+=ZA[7]; + ZA[7]=ZR15(ZA[8]); ZA[7]+=W17; + ZA[16]=ZMa(ZA[14],ZA[13],ZA[15]); ZA[16]+=ZR30(ZA[15]); ZA[16]+=ZA[6]; @@ -215,17 +237,21 @@ ZA[10]+=ZCh(ZA[6],ZA[5],ZA[4]); ZA[10]+=ZA[11]; ZA[10]+=0x76f988daU; ZA[10]+=ZR26(ZA[6]); + ZA[12]=ZR15(ZA[11]); ZA[12]+=ZA[0]; + ZA[17]=ZA[10]; ZA[17]+=ZMa(ZA[15],ZA[14],ZA[16]); ZA[17]+=ZR30(ZA[16]); ZA[10]+=ZA[13]; + ZA[13]=ZCh(ZA[10],ZA[6],ZA[5]); ZA[13]+=ZA[7]; ZA[13]+=0x983e5152U; ZA[13]+=ZR26(ZA[10]); ZA[13]+=ZA[4]; + ZA[4]=ZR15(ZA[7]); ZA[4]+=ZA[3]; ZA[14]+=ZA[13]; @@ -235,30 +261,38 @@ ZA[5]+=ZCh(ZA[14],ZA[10],ZA[6]); ZA[5]+=ZA[12]; ZA[5]+=0xa831c66dU; ZA[5]+=ZR26(ZA[14]); + ZA[9]=ZR15(ZA[12]); ZA[9]+=ZA[1]; + ZA[18]=ZMa(ZA[17],ZA[16],ZA[13]); ZA[18]+=ZR30(ZA[13]); ZA[18]+=ZA[5]; ZA[5]+=ZA[15]; + ZA[15]=ZCh(ZA[5],ZA[14],ZA[10]); ZA[15]+=ZA[4]; ZA[15]+=0xb00327c8U; ZA[15]+=ZR26(ZA[5]); ZA[15]+=ZA[6]; + ZA[6]=ZR15(ZA[4]); ZA[6]+=ZA[2]; + ZA[19]=ZA[15]; ZA[19]+=ZMa(ZA[13],ZA[17],ZA[18]); ZA[19]+=ZR30(ZA[18]); ZA[15]+=ZA[16]; + ZA[16]=ZCh(ZA[15],ZA[5],ZA[14]); ZA[16]+=ZA[9]; ZA[16]+=0xbf597fc7U; ZA[16]+=ZR26(ZA[15]); ZA[16]+=ZA[10]; + ZA[10]=ZR15(ZA[9]); ZA[10]+=ZA[8]; + ZA[20]=ZMa(ZA[18],ZA[13],ZA[19]); ZA[20]+=ZR30(ZA[19]); ZA[20]+=ZA[16]; @@ -267,42 +301,52 @@ ZA[14]+=ZCh(ZA[16],ZA[15],ZA[5]); ZA[14]+=ZA[6]; ZA[14]+=0xc6e00bf3U; ZA[14]+=ZR26(ZA[16]); + ZA[17]=ZR15(ZA[6]); ZA[17]+=ZA[11]; ZA[17]+=0x00A00055U; + ZA[21]=ZMa(ZA[19],ZA[18],ZA[20]); ZA[21]+=ZR30(ZA[20]); ZA[21]+=ZA[14]; ZA[14]+=ZA[13]; + ZA[13]=ZCh(ZA[14],ZA[16],ZA[15]); ZA[13]+=ZA[10]; ZA[13]+=0xd5a79147U; ZA[13]+=ZR26(ZA[14]); ZA[13]+=ZA[5]; + ZA[5]=ZR15(ZA[10]); ZA[5]+=ZA[7]; ZA[5]+=W31; + ZA[22]=ZA[13]; ZA[22]+=ZMa(ZA[20],ZA[19],ZA[21]); ZA[22]+=ZR30(ZA[21]); ZA[13]+=ZA[18]; + ZA[18]=ZCh(ZA[13],ZA[14],ZA[16]); ZA[18]+=ZA[15]; ZA[18]+=ZA[17]; ZA[18]+=0x06ca6351U; ZA[18]+=ZR26(ZA[13]); + ZA[15]=ZR15(ZA[17]); ZA[15]+=ZA[12]; ZA[15]+=W32; + ZA[23]=ZA[18]; ZA[23]+=ZMa(ZA[21],ZA[20],ZA[22]); ZA[23]+=ZR30(ZA[22]); ZA[18]+=ZA[19]; + ZA[19]=ZCh(ZA[18],ZA[13],ZA[14]); ZA[19]+=ZA[16]; ZA[19]+=ZA[5]; ZA[19]+=0x14292967U; ZA[19]+=ZR26(ZA[18]); + ZA[16]=ZR15(ZA[5]); ZA[16]+=ZA[4]; ZA[16]+=ZR25(ZA[0]); @@ -317,10 +361,12 @@ ZA[14]+=ZR26(ZA[20]); ZA[0]+=ZR15(ZA[15]); ZA[0]+=ZR25(ZA[3]); ZA[0]+=ZA[9]; + ZA[24]=ZA[14]; ZA[24]+=ZMa(ZA[23],ZA[22],ZA[19]); ZA[24]+=ZR30(ZA[19]); ZA[14]+=ZA[21]; + ZA[21]=ZCh(ZA[14],ZA[20],ZA[18]); ZA[21]+=ZA[13]; ZA[21]+=ZA[16]; @@ -332,6 +378,7 @@ ZA[3]+=ZA[6]; ZA[22]+=ZA[21]; ZA[21]+=ZMa(ZA[19],ZA[23],ZA[24]); ZA[21]+=ZR30(ZA[24]); + ZA[13]=ZCh(ZA[22],ZA[14],ZA[20]); ZA[13]+=ZA[18]; ZA[13]+=ZA[0]; @@ -340,6 +387,7 @@ ZA[13]+=ZR26(ZA[22]); ZA[1]+=ZR15(ZA[0]); ZA[1]+=ZR25(ZA[2]); ZA[1]+=ZA[10]; + ZA[18]=ZA[13]; ZA[18]+=ZMa(ZA[24],ZA[19],ZA[21]); ZA[18]+=ZR30(ZA[21]); @@ -351,10 +399,12 @@ ZA[20]+=ZR26(ZA[13]); ZA[2]+=ZR15(ZA[3]); ZA[2]+=ZR25(ZA[8]); ZA[2]+=ZA[17]; + ZA[23]=ZA[19]; ZA[23]+=ZA[20]; ZA[20]+=ZMa(ZA[21],ZA[24],ZA[18]); ZA[20]+=ZR30(ZA[18]); + ZA[19]=ZCh(ZA[23],ZA[13],ZA[22]); ZA[19]+=ZA[14]; ZA[19]+=ZA[1]; @@ -363,6 +413,7 @@ ZA[19]+=ZR26(ZA[23]); ZA[8]+=ZR15(ZA[1]); ZA[8]+=ZR25(ZA[11]); ZA[8]+=ZA[5]; + ZA[14]=ZA[19]; ZA[14]+=ZMa(ZA[18],ZA[21],ZA[20]); ZA[14]+=ZR30(ZA[20]); @@ -374,10 +425,12 @@ ZA[22]+=ZR26(ZA[19]); ZA[11]+=ZR15(ZA[2]); ZA[11]+=ZR25(ZA[7]); ZA[11]+=ZA[15]; + ZA[24]=ZA[21]; ZA[24]+=ZA[22]; ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14]); ZA[22]+=ZR30(ZA[14]); + ZA[21]=ZCh(ZA[24],ZA[19],ZA[23]); ZA[21]+=ZA[13]; ZA[21]+=ZA[8]; @@ -397,9 +450,11 @@ ZA[12]+=ZR15(ZA[11]); ZA[12]+=ZR25(ZA[4]); ZA[12]+=ZA[0]; ZA[20]+=ZA[23]; + ZA[13]=ZA[23]; ZA[13]+=ZMa(ZA[22],ZA[14],ZA[21]); ZA[13]+=ZR30(ZA[21]); + ZA[23]=ZCh(ZA[20],ZA[18],ZA[24]); ZA[23]+=ZA[19]; ZA[23]+=ZA[7]; @@ -418,6 +473,7 @@ ZA[24]+=ZR26(ZA[14]); ZA[9]+=ZR15(ZA[12]); ZA[9]+=ZA[1]; ZA[9]+=ZR25(ZA[6]); + ZA[19]=ZA[24]; ZA[19]+=ZMa(ZA[13],ZA[21],ZA[23]); ZA[19]+=ZR30(ZA[23]); @@ -429,6 +485,7 @@ ZA[18]+=ZR26(ZA[22]); ZA[6]+=ZR15(ZA[4]); ZA[6]+=ZA[2]; ZA[6]+=ZR25(ZA[10]); + ZA[24]=ZA[21]; ZA[24]+=ZA[18]; ZA[18]+=ZMa(ZA[23],ZA[13],ZA[19]); @@ -450,6 +507,7 @@ ZA[14]+=ZR26(ZA[13]); ZA[17]+=ZR15(ZA[6]); ZA[17]+=ZR25(ZA[5]); ZA[17]+=ZA[11]; + ZA[21]=ZA[23]; ZA[21]+=ZA[14]; ZA[14]+=ZMa(ZA[18],ZA[19],ZA[20]); @@ -472,6 +530,7 @@ ZA[15]+=ZR15(ZA[17]); ZA[15]+=ZA[12]; ZA[15]+=ZR25(ZA[16]); ZA[18]+=ZA[24]; + ZA[23]=ZA[24]; ZA[23]+=ZMa(ZA[14],ZA[20],ZA[22]); ZA[23]+=ZR30(ZA[22]); @@ -493,6 +552,7 @@ ZA[0]+=ZR15(ZA[15]); ZA[0]+=ZA[9]; ZA[0]+=ZR25(ZA[3]); ZA[14]+=ZA[21]; + ZA[24]=ZA[21]; ZA[24]+=ZMa(ZA[23],ZA[22],ZA[13]); ZA[24]+=ZR30(ZA[13]); @@ -514,6 +574,7 @@ ZA[1]+=ZR15(ZA[0]); ZA[1]+=ZA[10]; ZA[1]+=ZR25(ZA[2]); ZA[23]+=ZA[18]; + ZA[21]=ZA[18]; ZA[21]+=ZMa(ZA[24],ZA[13],ZA[19]); ZA[21]+=ZR30(ZA[19]); @@ -535,6 +596,7 @@ ZA[8]+=ZR15(ZA[1]); ZA[8]+=ZA[5]; ZA[8]+=ZR25(ZA[11]); ZA[24]+=ZA[14]; + ZA[18]=ZA[14]; ZA[18]+=ZMa(ZA[21],ZA[19],ZA[20]); ZA[18]+=ZR30(ZA[20]); @@ -565,11 +627,14 @@ ZA[13]+=ZR26(ZA[21]); ZA[0]+=ZR15(ZA[11]); ZA[0]+=ZR25(ZA[4]); ZA[0]+=ZA[12]; + ZA[12]=ZA[20]; ZA[12]+=ZA[13]; + ZA[16]=ZA[13]; ZA[16]+=ZMa(ZA[22],ZA[18],ZA[23]); ZA[16]+=ZR30(ZA[23]); + ZA[20]=ZCh(ZA[12],ZA[21],ZA[19]); ZA[20]+=ZA[24]; ZA[20]+=ZA[7]; @@ -588,11 +653,14 @@ ZA[19]+=ZR26(ZA[18]); ZA[1]+=ZR15(ZA[0]); ZA[1]+=ZR25(ZA[6]); ZA[1]+=ZA[9]; + ZA[9]=ZA[22]; ZA[9]+=ZA[19]; + ZA[4]=ZA[19]; ZA[4]+=ZMa(ZA[16],ZA[23],ZA[20]); ZA[4]+=ZR30(ZA[20]); + ZA[0]=ZCh(ZA[9],ZA[18],ZA[12]); ZA[0]+=ZA[21]; ZA[0]+=ZA[3]; @@ -601,6 +669,7 @@ ZA[0]+=ZR26(ZA[9]); ZA[2]+=ZR15(ZA[3]); ZA[2]+=ZR25(ZA[10]); ZA[2]+=ZA[6]; + ZA[6]=ZA[23]; ZA[6]+=ZA[0]; ZA[0]+=ZMa(ZA[20],ZA[16],ZA[4]); @@ -613,14 +682,17 @@ ZA[8]+=ZR15(ZA[1]); ZA[8]+=ZR25(ZA[17]); ZA[8]+=ZA[10]; ZA[16]+=ZA[12]; + ZA[10]=ZA[12]; ZA[10]+=ZMa(ZA[4],ZA[20],ZA[0]); ZA[10]+=ZR30(ZA[0]); + ZA[1]=ZCh(ZA[16],ZA[6],ZA[9]); ZA[1]+=ZA[18]; ZA[1]+=ZA[2]; ZA[1]+=0x90befffaU; ZA[1]+=ZR26(ZA[16]); + ZA[3]=ZA[20]; ZA[3]+=ZA[1]; ZA[1]+=ZMa(ZA[0],ZA[4],ZA[10]); @@ -629,6 +701,7 @@ ZA[9]+=ZCh(ZA[3],ZA[16],ZA[6]); ZA[9]+=ZA[8]; ZA[9]+=0xa4506cebU; ZA[9]+=ZR26(ZA[3]); + ZA[12]=ZA[9]; ZA[12]+=ZMa(ZA[10],ZA[0],ZA[1]); ZA[12]+=ZR30(ZA[1]); @@ -640,8 +713,10 @@ ZA[6]+=ZR25(ZA[5]); ZA[6]+=0xbef9a3f7U; ZA[6]+=ZR26(ZA[4]); ZA[6]+=ZA[17]; + ZA[17]=ZA[0]; ZA[17]+=ZA[6]; + ZA[9]=ZA[6]; ZA[9]+=ZMa(ZA[1],ZA[10],ZA[12]); ZA[9]+=ZR30(ZA[12]); @@ -652,22 +727,29 @@ ZA[7]+=ZR25(ZA[15]); ZA[7]+=ZA[5]; ZA[7]+=0xc67178f2U; ZA[7]+=ZR26(ZA[17]); + ZA[5]=state1; ZA[5]+=ZA[9]; + ZA[9]=ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9]); ZA[9]+=ZA[7]; ZA[9]+=state0; + ZA[15]=ZA[9]; ZA[15]+=0x98c7e2a2U; + ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU); ZA[0]+=ZA[5]; ZA[0]+=0x90bb1e3cU; ZA[0]+=ZR26(ZA[15]); ZA[12]+=state2; + ZA[2]=ZA[9]; ZA[2]+=0xfc08884dU; + ZA[8]=ZA[0]; ZA[8]+=0x3c6ef372U; + ZA[11]=ZCh(ZA[8],ZA[15],0x510e527fU); ZA[11]+=ZA[12]; ZA[11]+=0x50c6645bU; @@ -675,26 +757,32 @@ ZA[11]+=ZR26(ZA[8]); ZA[1]+=state3; ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); ZA[0]+=ZR30(ZA[2]); + ZA[6]=ZA[11]; ZA[6]+=0xbb67ae85U; + ZA[15]=ZCh(ZA[6],ZA[8],ZA[15]); ZA[15]+=ZR26(ZA[6]); ZA[15]+=ZA[1]; ZA[15]+=0x3ac42e24U; ZA[10]+=state4; ZA[10]+=ZA[7]; + ZA[7]=ZA[15]; ZA[7]+=0x6a09e667U; ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0]); ZA[11]+=ZR30(ZA[0]); ZA[17]+=state5; + ZA[16]=ZCh(ZA[7],ZA[6],ZA[8]); ZA[16]+=ZA[10]; ZA[16]+=ZA[9]; ZA[16]+=0xd21ea4fdU; ZA[16]+=ZR26(ZA[7]); + ZA[24]=ZA[16]; ZA[24]+=ZA[2]; + ZA[2]=ZMa(ZA[0],ZA[2],ZA[11]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[11]); @@ -703,6 +791,7 @@ ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6]); ZA[8]+=ZA[17]; ZA[8]+=0x59f111f1U; ZA[8]+=ZR26(ZA[24]); + ZA[15]=ZA[0]; ZA[15]+=ZA[8]; ZA[16]+=ZMa(ZA[11],ZA[0],ZA[2]); @@ -712,6 +801,7 @@ ZA[6]+=ZCh(ZA[15],ZA[24],ZA[7]); ZA[6]+=ZA[4]; ZA[6]+=0x923f82a4U; ZA[6]+=ZR26(ZA[15]); + ZA[0]=ZA[11]; ZA[0]+=ZA[6]; ZA[8]+=ZMa(ZA[2],ZA[11],ZA[16]); @@ -720,14 +810,17 @@ ZA[7]+=ZCh(ZA[0],ZA[15],ZA[24]); ZA[7]+=ZA[3]; ZA[7]+=0xab1c5ed5U; ZA[7]+=ZR26(ZA[0]); + ZA[11]=ZA[7]; ZA[11]+=ZA[2]; + ZA[2]=ZMa(ZA[16],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15]); ZA[24]+=0x5807aa98U; ZA[24]+=ZR26(ZA[11]); + ZA[6]=ZA[16]; ZA[6]+=ZA[24]; ZA[7]+=ZMa(ZA[8],ZA[16],ZA[2]); @@ -735,40 +828,50 @@ ZA[7]+=ZR30(ZA[2]); ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); ZA[15]+=0x12835b01U; ZA[15]+=ZR26(ZA[6]); + ZA[16]=ZA[15]; ZA[16]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=0x243185beU; ZA[0]+=ZR26(ZA[16]); + ZA[14]=ZA[0]; ZA[14]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[8]); ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6]); ZA[11]+=0x550c7dc3U; ZA[11]+=ZR26(ZA[14]); + ZA[15]=ZA[11]; ZA[15]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[0]; ZA[7]+=ZR30(ZA[2]); ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16]); ZA[6]+=0x72be5d74U; ZA[6]+=ZR26(ZA[15]); + ZA[0]=ZA[6]; ZA[0]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[11]; ZA[8]+=ZR30(ZA[7]); ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14]); ZA[16]+=0x80deb1feU; ZA[16]+=ZR26(ZA[0]); + ZA[11]=ZA[16]; ZA[11]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); @@ -776,8 +879,10 @@ ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15]); ZA[14]+=0x9bdc06a7U; ZA[14]+=ZR26(ZA[11]); ZA[9]+=ZR25(ZA[5]); + ZA[6]=ZA[14]; ZA[6]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[16]; ZA[7]+=ZR30(ZA[2]); @@ -786,8 +891,10 @@ ZA[15]+=0xc19bf274U; ZA[15]+=ZR26(ZA[6]); ZA[5]+=ZR25(ZA[12]); ZA[5]+=0x00a00000U; + ZA[16]=ZA[15]; ZA[16]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[14]; ZA[8]+=ZR30(ZA[7]); @@ -795,8 +902,10 @@ ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[0]+=ZA[9]; ZA[0]+=0xe49b69c1U; ZA[0]+=ZR26(ZA[16]); + ZA[21]=ZA[0]; ZA[21]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[8]); @@ -808,8 +917,10 @@ ZA[12]+=ZR15(ZA[9]); ZA[12]+=ZR25(ZA[1]); ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZR25(ZA[10]); + ZA[15]=ZA[11]; ZA[15]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[0]; ZA[7]+=ZR30(ZA[2]); @@ -817,11 +928,14 @@ ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16]); ZA[6]+=0x0fc19dc6U; ZA[6]+=ZA[12]; ZA[6]+=ZR26(ZA[15]); + ZA[0]=ZR15(ZA[12]); ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[10]; + ZA[10]=ZA[6]; ZA[10]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[11]; ZA[8]+=ZR30(ZA[7]); @@ -831,8 +945,10 @@ ZA[16]+=0x240ca1ccU; ZA[16]+=ZR26(ZA[10]); ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZR25(ZA[4]); + ZA[11]=ZA[16]; ZA[11]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); @@ -843,8 +959,10 @@ ZA[21]+=ZR26(ZA[11]); ZA[4]+=ZR15(ZA[0]); ZA[4]+=0x00000100U; ZA[4]+=ZR25(ZA[3]); + ZA[6]=ZA[21]; ZA[6]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[16]; ZA[7]+=ZR30(ZA[2]); @@ -855,8 +973,10 @@ ZA[15]+=ZR26(ZA[6]); ZA[3]+=ZA[9]; ZA[3]+=ZR15(ZA[17]); ZA[3]+=0x11002000U; + ZA[16]=ZA[15]; ZA[16]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -864,11 +984,14 @@ ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11]); ZA[10]+=ZA[4]; ZA[10]+=0x5cb0a9dcU; ZA[10]+=ZR26(ZA[16]); + ZA[13]=ZR15(ZA[4]); ZA[13]+=ZA[5]; ZA[13]+=0x80000000U; + ZA[22]=ZA[10]; ZA[22]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[15]; ZA[2]+=ZR30(ZA[8]); @@ -876,10 +999,13 @@ ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6]); ZA[11]+=ZA[3]; ZA[11]+=0x76f988daU; ZA[11]+=ZR26(ZA[22]); + ZA[15]=ZR15(ZA[3]); ZA[15]+=ZA[12]; + ZA[18]=ZA[11]; ZA[18]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[10]; ZA[7]+=ZR30(ZA[2]); @@ -887,10 +1013,13 @@ ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16]); ZA[6]+=ZA[13]; ZA[6]+=0x983e5152U; ZA[6]+=ZR26(ZA[18]); + ZA[10]=ZR15(ZA[13]); ZA[10]+=ZA[1]; + ZA[23]=ZA[6]; ZA[23]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[11]; ZA[8]+=ZR30(ZA[7]); @@ -898,10 +1027,13 @@ ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22]); ZA[16]+=ZA[15]; ZA[16]+=0xa831c66dU; ZA[16]+=ZR26(ZA[23]); + ZA[11]=ZR15(ZA[15]); ZA[11]+=ZA[0]; + ZA[24]=ZA[16]; ZA[24]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[6]; ZA[2]+=ZR30(ZA[8]); @@ -909,10 +1041,13 @@ ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18]); ZA[22]+=ZA[10]; ZA[22]+=0xb00327c8U; ZA[22]+=ZR26(ZA[24]); + ZA[6]=ZR15(ZA[10]); ZA[6]+=ZA[17]; + ZA[19]=ZA[22]; ZA[19]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[16]; ZA[7]+=ZR30(ZA[2]); @@ -920,10 +1055,13 @@ ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); ZA[18]+=ZA[11]; ZA[18]+=0xbf597fc7U; ZA[18]+=ZR26(ZA[19]); + ZA[14]=ZR15(ZA[11]); ZA[14]+=ZA[4]; + ZA[20]=ZA[18]; ZA[20]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[22]; ZA[8]+=ZR30(ZA[7]); @@ -931,11 +1069,14 @@ ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); ZA[23]+=ZA[6]; ZA[23]+=0xc6e00bf3U; ZA[23]+=ZR26(ZA[20]); + ZA[16]=ZR15(ZA[6]); ZA[16]+=ZA[3]; ZA[16]+=0x00400022U; + ZA[21]=ZA[23]; ZA[21]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -943,12 +1084,15 @@ ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); ZA[24]+=ZA[14]; ZA[24]+=0xd5a79147U; ZA[24]+=ZR26(ZA[21]); + ZA[22]=ZR15(ZA[14]); ZA[22]+=ZA[13]; ZA[22]+=ZR25(ZA[9]); ZA[22]+=0x00000100U; + ZA[18]=ZA[24]; ZA[18]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -959,8 +1103,10 @@ ZA[19]+=ZR26(ZA[18]); ZA[9]+=ZR15(ZA[16]); ZA[9]+=ZR25(ZA[5]); ZA[9]+=ZA[15]; + ZA[23]=ZA[19]; ZA[23]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -971,8 +1117,10 @@ ZA[20]+=ZR26(ZA[23]); ZA[5]+=ZR15(ZA[22]); ZA[5]+=ZR25(ZA[12]); ZA[5]+=ZA[10]; + ZA[24]=ZA[20]; ZA[24]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -983,8 +1131,10 @@ ZA[21]+=ZR26(ZA[24]); ZA[12]+=ZR15(ZA[9]); ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); + ZA[19]=ZA[21]; ZA[19]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -995,8 +1145,10 @@ ZA[18]+=ZR26(ZA[19]); ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); + ZA[20]=ZA[18]; ZA[20]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1007,8 +1159,10 @@ ZA[23]+=ZR26(ZA[20]); ZA[0]+=ZR15(ZA[12]); ZA[0]+=ZR25(ZA[17]); ZA[0]+=ZA[14]; + ZA[21]=ZA[23]; ZA[21]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1019,8 +1173,10 @@ ZA[24]+=ZR26(ZA[21]); ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); + ZA[18]=ZA[24]; ZA[18]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1031,8 +1187,10 @@ ZA[19]+=ZR26(ZA[18]); ZA[4]+=ZR15(ZA[0]); ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); + ZA[23]=ZA[19]; ZA[23]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -1043,8 +1201,10 @@ ZA[20]+=ZR26(ZA[23]); ZA[3]+=ZR15(ZA[17]); ZA[3]+=ZA[9]; ZA[3]+=ZR25(ZA[13]); + ZA[24]=ZA[20]; ZA[24]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -1055,8 +1215,10 @@ ZA[21]+=ZR26(ZA[24]); ZA[13]+=ZR15(ZA[4]); ZA[13]+=ZA[5]; ZA[13]+=ZR25(ZA[15]); + ZA[19]=ZA[21]; ZA[19]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -1067,8 +1229,10 @@ ZA[18]+=ZR26(ZA[19]); ZA[15]+=ZR15(ZA[3]); ZA[15]+=ZA[12]; ZA[15]+=ZR25(ZA[10]); + ZA[20]=ZA[18]; ZA[20]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1079,8 +1243,10 @@ ZA[23]+=ZR26(ZA[20]); ZA[10]+=ZR15(ZA[13]); ZA[10]+=ZA[1]; ZA[10]+=ZR25(ZA[11]); + ZA[21]=ZA[23]; ZA[21]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1091,8 +1257,10 @@ ZA[24]+=ZR26(ZA[21]); ZA[11]+=ZR15(ZA[15]); ZA[11]+=ZA[0]; ZA[11]+=ZR25(ZA[6]); + ZA[18]=ZA[24]; ZA[18]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1103,8 +1271,10 @@ ZA[19]+=ZR26(ZA[18]); ZA[6]+=ZR15(ZA[10]); ZA[6]+=ZA[17]; ZA[6]+=ZR25(ZA[14]); + ZA[23]=ZA[19]; ZA[23]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -1115,8 +1285,10 @@ ZA[20]+=ZR26(ZA[23]); ZA[14]+=ZR15(ZA[11]); ZA[14]+=ZA[4]; ZA[14]+=ZR25(ZA[16]); + ZA[24]=ZA[20]; ZA[24]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -1127,8 +1299,10 @@ ZA[21]+=ZR26(ZA[24]); ZA[16]+=ZR15(ZA[6]); ZA[16]+=ZA[3]; ZA[16]+=ZR25(ZA[22]); + ZA[19]=ZA[21]; ZA[19]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -1139,8 +1313,10 @@ ZA[18]+=ZR26(ZA[19]); ZA[22]+=ZR15(ZA[14]); ZA[22]+=ZA[13]; ZA[22]+=ZR25(ZA[9]); + ZA[20]=ZA[18]; ZA[20]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1151,8 +1327,10 @@ ZA[23]+=ZR26(ZA[20]); ZA[9]+=ZR15(ZA[16]); ZA[9]+=ZA[15]; ZA[9]+=ZR25(ZA[5]); + ZA[21]=ZA[23]; ZA[21]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1163,8 +1341,10 @@ ZA[24]+=ZR26(ZA[21]); ZA[5]+=ZR15(ZA[22]); ZA[5]+=ZA[10]; ZA[5]+=ZR25(ZA[12]); + ZA[18]=ZA[24]; ZA[18]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1175,8 +1355,10 @@ ZA[19]+=ZR26(ZA[18]); ZA[12]+=ZR15(ZA[9]); ZA[12]+=ZA[11]; ZA[12]+=ZR25(ZA[1]); + ZA[23]=ZA[19]; ZA[23]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[24]; ZA[8]+=ZR30(ZA[7]); @@ -1187,8 +1369,10 @@ ZA[20]+=ZR26(ZA[23]); ZA[1]+=ZR15(ZA[5]); ZA[1]+=ZA[6]; ZA[1]+=ZR25(ZA[0]); + ZA[24]=ZA[20]; ZA[24]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[19]; ZA[2]+=ZR30(ZA[8]); @@ -1199,8 +1383,10 @@ ZA[21]+=ZR26(ZA[24]); ZA[0]+=ZR15(ZA[12]); ZA[0]+=ZA[14]; ZA[0]+=ZR25(ZA[17]); + ZA[19]=ZA[21]; ZA[19]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[20]; ZA[7]+=ZR30(ZA[2]); @@ -1211,8 +1397,10 @@ ZA[18]+=ZR26(ZA[19]); ZA[17]+=ZR15(ZA[1]); ZA[17]+=ZA[16]; ZA[17]+=ZR25(ZA[4]); + ZA[16]=ZA[18]; ZA[16]+=ZA[8]; + ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); ZA[8]+=ZA[21]; ZA[8]+=ZR30(ZA[7]); @@ -1223,8 +1411,10 @@ ZA[23]+=ZR26(ZA[16]); ZA[4]+=ZR15(ZA[0]); ZA[4]+=ZA[22]; ZA[4]+=ZR25(ZA[3]); + ZA[22]=ZA[23]; ZA[22]+=ZA[2]; + ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); ZA[2]+=ZA[18]; ZA[2]+=ZR30(ZA[8]); @@ -1235,8 +1425,10 @@ ZA[24]+=ZR26(ZA[22]); ZA[9]+=ZR15(ZA[17]); ZA[9]+=ZR25(ZA[13]); ZA[9]+=ZA[3]; + ZA[3]=ZA[24]; ZA[3]+=ZA[7]; + ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); ZA[7]+=ZA[23]; ZA[7]+=ZR30(ZA[2]); @@ -1247,8 +1439,10 @@ ZA[19]+=ZR26(ZA[3]); ZA[13]+=ZR15(ZA[4]); ZA[13]+=ZA[5]; ZA[13]+=ZR25(ZA[15]); + ZA[4]=ZA[8]; ZA[4]+=ZA[19]; + ZA[5]=ZA[24]; ZA[5]+=ZMa(ZA[2],ZA[8],ZA[7]); ZA[5]+=ZR30(ZA[7]); @@ -1259,8 +1453,10 @@ ZA[16]+=ZR26(ZA[4]); ZA[12]+=ZR15(ZA[9]); ZA[12]+=ZR25(ZA[10]); ZA[12]+=ZA[15]; + ZA[15]=ZA[2]; ZA[15]+=ZA[16]; + ZA[9]=ZA[19]; ZA[9]+=ZMa(ZA[7],ZA[2],ZA[5]); ZA[9]+=ZR30(ZA[5]); @@ -1268,12 +1464,15 @@ ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3]); ZA[22]+=ZA[13]; ZA[22]+=0x748f82eeU; ZA[22]+=ZR26(ZA[15]); + ZA[13]=ZR15(ZA[13]); ZA[13]+=ZA[10]; ZA[13]+=ZA[1]; ZA[13]+=ZR25(ZA[11]); + ZA[10]=ZA[7]; ZA[10]+=ZA[22]; + ZA[1]=ZA[16]; ZA[1]+=ZMa(ZA[5],ZA[7],ZA[9]); ZA[1]+=ZR30(ZA[9]); From a32654bb3063159710c1156f89899a16f8d60106 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 4 Mar 2012 16:12:44 +1100 Subject: [PATCH 050/117] Absorb as many ZA variables into each other in diablo kernel. --- diablo120222.cl | 2088 ++++++++++++++++++++++------------------------- 1 file changed, 971 insertions(+), 1117 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 4633f0c8..8e74e06a 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -191,20 +191,19 @@ ZA[8]+=ZR26(ZA[7]); ZA[2]=ZR15(ZA[3]); -ZA[13]=ZA[8]; -ZA[13]+=ZMa(ZA[6],ZA[11],ZA[12]); -ZA[13]+=ZR30(ZA[12]); ZA[10]+=ZA[8]; +ZA[8]+=ZMa(ZA[6],ZA[11],ZA[12]); +ZA[8]+=ZR30(ZA[12]); ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]); ZA[4]+=ZA[1]; ZA[4]+=0x2de92c6fU; ZA[4]+=ZR26(ZA[10]); -ZA[8]=ZR15(ZA[1]); -ZA[8]+=0x00000280U; +ZA[13]=ZR15(ZA[1]); +ZA[13]+=0x00000280U; -ZA[14]=ZMa(ZA[12],ZA[6],ZA[13]); -ZA[14]+=ZR30(ZA[13]); +ZA[14]=ZMa(ZA[12],ZA[6],ZA[8]); +ZA[14]+=ZR30(ZA[8]); ZA[14]+=ZA[4]; ZA[4]+=ZA[11]; ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7]); @@ -215,28 +214,27 @@ ZA[5]+=ZR26(ZA[4]); ZA[11]=ZR15(ZA[2]); ZA[11]+=W16; -ZA[15]=ZMa(ZA[13],ZA[12],ZA[14]); +ZA[15]=ZMa(ZA[8],ZA[12],ZA[14]); ZA[15]+=ZR30(ZA[14]); ZA[15]+=ZA[5]; ZA[5]+=ZA[6]; -ZA[6]=ZCh(ZA[5],ZA[4],ZA[10]); -ZA[6]+=ZA[8]; -ZA[6]+=0x5cb0a9dcU; -ZA[6]+=ZR26(ZA[5]); -ZA[6]+=ZA[7]; +ZA[7]+=ZCh(ZA[5],ZA[4],ZA[10]); +ZA[7]+=ZA[13]; +ZA[7]+=0x5cb0a9dcU; +ZA[7]+=ZR26(ZA[5]); -ZA[7]=ZR15(ZA[8]); -ZA[7]+=W17; +ZA[6]=ZR15(ZA[13]); +ZA[6]+=W17; -ZA[16]=ZMa(ZA[14],ZA[13],ZA[15]); +ZA[16]=ZMa(ZA[14],ZA[8],ZA[15]); ZA[16]+=ZR30(ZA[15]); -ZA[16]+=ZA[6]; -ZA[6]+=ZA[12]; -ZA[10]+=ZCh(ZA[6],ZA[5],ZA[4]); +ZA[16]+=ZA[7]; +ZA[7]+=ZA[12]; +ZA[10]+=ZCh(ZA[7],ZA[5],ZA[4]); ZA[10]+=ZA[11]; ZA[10]+=0x76f988daU; -ZA[10]+=ZR26(ZA[6]); +ZA[10]+=ZR26(ZA[7]); ZA[12]=ZR15(ZA[11]); ZA[12]+=ZA[0]; @@ -244,20 +242,19 @@ ZA[12]+=ZA[0]; ZA[17]=ZA[10]; ZA[17]+=ZMa(ZA[15],ZA[14],ZA[16]); ZA[17]+=ZR30(ZA[16]); -ZA[10]+=ZA[13]; +ZA[10]+=ZA[8]; -ZA[13]=ZCh(ZA[10],ZA[6],ZA[5]); -ZA[13]+=ZA[7]; -ZA[13]+=0x983e5152U; -ZA[13]+=ZR26(ZA[10]); -ZA[13]+=ZA[4]; +ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]); +ZA[4]+=ZA[6]; +ZA[4]+=0x983e5152U; +ZA[4]+=ZR26(ZA[10]); -ZA[4]=ZR15(ZA[7]); -ZA[4]+=ZA[3]; -ZA[14]+=ZA[13]; -ZA[13]+=ZMa(ZA[16],ZA[15],ZA[17]); -ZA[13]+=ZR30(ZA[17]); -ZA[5]+=ZCh(ZA[14],ZA[10],ZA[6]); +ZA[8]=ZR15(ZA[6]); +ZA[8]+=ZA[3]; +ZA[14]+=ZA[4]; +ZA[4]+=ZMa(ZA[16],ZA[15],ZA[17]); +ZA[4]+=ZR30(ZA[17]); +ZA[5]+=ZCh(ZA[14],ZA[10],ZA[7]); ZA[5]+=ZA[12]; ZA[5]+=0xa831c66dU; ZA[5]+=ZR26(ZA[14]); @@ -265,1265 +262,1122 @@ ZA[5]+=ZR26(ZA[14]); ZA[9]=ZR15(ZA[12]); ZA[9]+=ZA[1]; -ZA[18]=ZMa(ZA[17],ZA[16],ZA[13]); -ZA[18]+=ZR30(ZA[13]); +ZA[18]=ZMa(ZA[17],ZA[16],ZA[4]); +ZA[18]+=ZR30(ZA[4]); ZA[18]+=ZA[5]; ZA[5]+=ZA[15]; -ZA[15]=ZCh(ZA[5],ZA[14],ZA[10]); -ZA[15]+=ZA[4]; -ZA[15]+=0xb00327c8U; -ZA[15]+=ZR26(ZA[5]); -ZA[15]+=ZA[6]; +ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); +ZA[7]+=ZA[8]; +ZA[7]+=0xb00327c8U; +ZA[7]+=ZR26(ZA[5]); -ZA[6]=ZR15(ZA[4]); -ZA[6]+=ZA[2]; +ZA[15]=ZR15(ZA[8]); +ZA[15]+=ZA[2]; -ZA[19]=ZA[15]; -ZA[19]+=ZMa(ZA[13],ZA[17],ZA[18]); +ZA[19]=ZA[7]; +ZA[19]+=ZMa(ZA[4],ZA[17],ZA[18]); ZA[19]+=ZR30(ZA[18]); -ZA[15]+=ZA[16]; +ZA[7]+=ZA[16]; -ZA[16]=ZCh(ZA[15],ZA[5],ZA[14]); -ZA[16]+=ZA[9]; -ZA[16]+=0xbf597fc7U; -ZA[16]+=ZR26(ZA[15]); -ZA[16]+=ZA[10]; +ZA[10]+=ZCh(ZA[7],ZA[5],ZA[14]); +ZA[10]+=ZA[9]; +ZA[10]+=0xbf597fc7U; +ZA[10]+=ZR26(ZA[7]); -ZA[10]=ZR15(ZA[9]); -ZA[10]+=ZA[8]; +ZA[16]=ZR15(ZA[9]); +ZA[16]+=ZA[13]; -ZA[20]=ZMa(ZA[18],ZA[13],ZA[19]); +ZA[20]=ZMa(ZA[18],ZA[4],ZA[19]); ZA[20]+=ZR30(ZA[19]); -ZA[20]+=ZA[16]; -ZA[16]+=ZA[17]; -ZA[14]+=ZCh(ZA[16],ZA[15],ZA[5]); -ZA[14]+=ZA[6]; +ZA[20]+=ZA[10]; +ZA[10]+=ZA[17]; +ZA[14]+=ZCh(ZA[10],ZA[7],ZA[5]); +ZA[14]+=ZA[15]; ZA[14]+=0xc6e00bf3U; -ZA[14]+=ZR26(ZA[16]); +ZA[14]+=ZR26(ZA[10]); -ZA[17]=ZR15(ZA[6]); +ZA[17]=ZR15(ZA[15]); ZA[17]+=ZA[11]; ZA[17]+=0x00A00055U; ZA[21]=ZMa(ZA[19],ZA[18],ZA[20]); ZA[21]+=ZR30(ZA[20]); ZA[21]+=ZA[14]; -ZA[14]+=ZA[13]; - -ZA[13]=ZCh(ZA[14],ZA[16],ZA[15]); -ZA[13]+=ZA[10]; -ZA[13]+=0xd5a79147U; -ZA[13]+=ZR26(ZA[14]); -ZA[13]+=ZA[5]; +ZA[14]+=ZA[4]; +ZA[5]+=ZCh(ZA[14],ZA[10],ZA[7]); +ZA[5]+=ZA[16]; +ZA[5]+=0xd5a79147U; +ZA[5]+=ZR26(ZA[14]); -ZA[5]=ZR15(ZA[10]); -ZA[5]+=ZA[7]; -ZA[5]+=W31; +ZA[4]=ZR15(ZA[16]); +ZA[4]+=ZA[6]; +ZA[4]+=W31; -ZA[22]=ZA[13]; +ZA[22]=ZA[5]; ZA[22]+=ZMa(ZA[20],ZA[19],ZA[21]); ZA[22]+=ZR30(ZA[21]); -ZA[13]+=ZA[18]; +ZA[5]+=ZA[18]; -ZA[18]=ZCh(ZA[13],ZA[14],ZA[16]); -ZA[18]+=ZA[15]; -ZA[18]+=ZA[17]; -ZA[18]+=0x06ca6351U; -ZA[18]+=ZR26(ZA[13]); +ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); +ZA[7]+=ZA[17]; +ZA[7]+=0x06ca6351U; +ZA[7]+=ZR26(ZA[5]); -ZA[15]=ZR15(ZA[17]); -ZA[15]+=ZA[12]; -ZA[15]+=W32; +ZA[18]=ZR15(ZA[17]); +ZA[18]+=ZA[12]; +ZA[18]+=W32; -ZA[23]=ZA[18]; +ZA[23]=ZA[7]; ZA[23]+=ZMa(ZA[21],ZA[20],ZA[22]); ZA[23]+=ZR30(ZA[22]); -ZA[18]+=ZA[19]; - -ZA[19]=ZCh(ZA[18],ZA[13],ZA[14]); -ZA[19]+=ZA[16]; -ZA[19]+=ZA[5]; -ZA[19]+=0x14292967U; -ZA[19]+=ZR26(ZA[18]); - -ZA[16]=ZR15(ZA[5]); -ZA[16]+=ZA[4]; -ZA[16]+=ZR25(ZA[0]); -ZA[16]+=W17; -ZA[20]+=ZA[19]; -ZA[19]+=ZMa(ZA[22],ZA[21],ZA[23]); -ZA[19]+=ZR30(ZA[23]); -ZA[14]+=ZCh(ZA[20],ZA[18],ZA[13]); -ZA[14]+=ZA[15]; +ZA[7]+=ZA[19]; +ZA[10]+=ZCh(ZA[7],ZA[5],ZA[14]); +ZA[10]+=ZA[4]; +ZA[10]+=0x14292967U; +ZA[10]+=ZR26(ZA[7]); + +ZA[19]=ZR15(ZA[4]); +ZA[19]+=ZA[8]; +ZA[19]+=ZR25(ZA[0]); +ZA[19]+=W17; +ZA[20]+=ZA[10]; +ZA[10]+=ZMa(ZA[22],ZA[21],ZA[23]); +ZA[10]+=ZR30(ZA[23]); +ZA[14]+=ZCh(ZA[20],ZA[7],ZA[5]); +ZA[14]+=ZA[18]; ZA[14]+=0x27b70a85U; ZA[14]+=ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[15]); +ZA[0]+=ZR15(ZA[18]); ZA[0]+=ZR25(ZA[3]); ZA[0]+=ZA[9]; ZA[24]=ZA[14]; -ZA[24]+=ZMa(ZA[23],ZA[22],ZA[19]); -ZA[24]+=ZR30(ZA[19]); +ZA[24]+=ZMa(ZA[23],ZA[22],ZA[10]); +ZA[24]+=ZR30(ZA[10]); ZA[14]+=ZA[21]; - -ZA[21]=ZCh(ZA[14],ZA[20],ZA[18]); -ZA[21]+=ZA[13]; -ZA[21]+=ZA[16]; -ZA[21]+=0x2e1b2138U; -ZA[21]+=ZR26(ZA[14]); -ZA[3]+=ZR15(ZA[16]); +ZA[5]+=ZCh(ZA[14],ZA[20],ZA[7]); +ZA[5]+=ZA[19]; +ZA[5]+=0x2e1b2138U; +ZA[5]+=ZR26(ZA[14]); +ZA[3]+=ZR15(ZA[19]); ZA[3]+=ZR25(ZA[1]); -ZA[3]+=ZA[6]; -ZA[22]+=ZA[21]; -ZA[21]+=ZMa(ZA[19],ZA[23],ZA[24]); -ZA[21]+=ZR30(ZA[24]); +ZA[3]+=ZA[15]; +ZA[22]+=ZA[5]; +ZA[5]+=ZMa(ZA[10],ZA[23],ZA[24]); +ZA[5]+=ZR30(ZA[24]); -ZA[13]=ZCh(ZA[22],ZA[14],ZA[20]); -ZA[13]+=ZA[18]; -ZA[13]+=ZA[0]; -ZA[13]+=0x4d2c6dfcU; -ZA[13]+=ZR26(ZA[22]); +ZA[7]+=ZCh(ZA[22],ZA[14],ZA[20]); +ZA[7]+=ZA[0]; +ZA[7]+=0x4d2c6dfcU; +ZA[7]+=ZR26(ZA[22]); ZA[1]+=ZR15(ZA[0]); ZA[1]+=ZR25(ZA[2]); -ZA[1]+=ZA[10]; +ZA[1]+=ZA[16]; -ZA[18]=ZA[13]; -ZA[18]+=ZMa(ZA[24],ZA[19],ZA[21]); -ZA[18]+=ZR30(ZA[21]); -ZA[13]+=ZA[23]; -ZA[20]+=ZCh(ZA[13],ZA[22],ZA[14]); +ZA[21]=ZA[7]; +ZA[21]+=ZMa(ZA[24],ZA[10],ZA[5]); +ZA[21]+=ZR30(ZA[5]); +ZA[7]+=ZA[23]; +ZA[20]+=ZCh(ZA[7],ZA[22],ZA[14]); ZA[20]+=ZA[3]; ZA[20]+=0x53380d13U; -ZA[20]+=ZR26(ZA[13]); +ZA[20]+=ZR26(ZA[7]); ZA[2]+=ZR15(ZA[3]); -ZA[2]+=ZR25(ZA[8]); +ZA[2]+=ZR25(ZA[13]); ZA[2]+=ZA[17]; -ZA[23]=ZA[19]; -ZA[23]+=ZA[20]; -ZA[20]+=ZMa(ZA[21],ZA[24],ZA[18]); -ZA[20]+=ZR30(ZA[18]); - -ZA[19]=ZCh(ZA[23],ZA[13],ZA[22]); -ZA[19]+=ZA[14]; -ZA[19]+=ZA[1]; -ZA[19]+=0x650a7354U; -ZA[19]+=ZR26(ZA[23]); -ZA[8]+=ZR15(ZA[1]); -ZA[8]+=ZR25(ZA[11]); -ZA[8]+=ZA[5]; +ZA[10]+=ZA[20]; +ZA[20]+=ZMa(ZA[5],ZA[24],ZA[21]); +ZA[20]+=ZR30(ZA[21]); -ZA[14]=ZA[19]; -ZA[14]+=ZMa(ZA[18],ZA[21],ZA[20]); -ZA[14]+=ZR30(ZA[20]); -ZA[19]+=ZA[24]; -ZA[22]+=ZCh(ZA[19],ZA[23],ZA[13]); +ZA[14]+=ZCh(ZA[10],ZA[7],ZA[22]); +ZA[14]+=ZA[1]; +ZA[14]+=0x650a7354U; +ZA[14]+=ZR26(ZA[10]); +ZA[13]+=ZR15(ZA[1]); +ZA[13]+=ZR25(ZA[11]); +ZA[13]+=ZA[4]; + +ZA[23]=ZA[14]; +ZA[23]+=ZMa(ZA[21],ZA[5],ZA[20]); +ZA[23]+=ZR30(ZA[20]); +ZA[14]+=ZA[24]; +ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); ZA[22]+=ZA[2]; ZA[22]+=0x766a0abbU; -ZA[22]+=ZR26(ZA[19]); +ZA[22]+=ZR26(ZA[14]); ZA[11]+=ZR15(ZA[2]); -ZA[11]+=ZR25(ZA[7]); -ZA[11]+=ZA[15]; +ZA[11]+=ZR25(ZA[6]); +ZA[11]+=ZA[18]; -ZA[24]=ZA[21]; -ZA[24]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14]); -ZA[22]+=ZR30(ZA[14]); +ZA[5]+=ZA[22]; +ZA[22]+=ZMa(ZA[20],ZA[21],ZA[23]); +ZA[22]+=ZR30(ZA[23]); -ZA[21]=ZCh(ZA[24],ZA[19],ZA[23]); -ZA[21]+=ZA[13]; -ZA[21]+=ZA[8]; -ZA[21]+=0x81c2c92eU; -ZA[21]+=ZR26(ZA[24]); -ZA[7]+=ZR15(ZA[8]); -ZA[7]+=ZR25(ZA[12]); -ZA[7]+=ZA[16]; -ZA[18]+=ZA[21]; -ZA[21]+=ZMa(ZA[14],ZA[20],ZA[22]); -ZA[21]+=ZR30(ZA[22]); -ZA[23]+=ZCh(ZA[18],ZA[24],ZA[19]); -ZA[23]+=ZA[11]; -ZA[23]+=0x92722c85U; -ZA[23]+=ZR26(ZA[18]); +ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); +ZA[7]+=ZA[13]; +ZA[7]+=0x81c2c92eU; +ZA[7]+=ZR26(ZA[5]); +ZA[6]+=ZR15(ZA[13]); +ZA[6]+=ZR25(ZA[12]); +ZA[6]+=ZA[19]; +ZA[21]+=ZA[7]; +ZA[7]+=ZMa(ZA[23],ZA[20],ZA[22]); +ZA[7]+=ZR30(ZA[22]); +ZA[10]+=ZCh(ZA[21],ZA[5],ZA[14]); +ZA[10]+=ZA[11]; +ZA[10]+=0x92722c85U; +ZA[10]+=ZR26(ZA[21]); ZA[12]+=ZR15(ZA[11]); -ZA[12]+=ZR25(ZA[4]); +ZA[12]+=ZR25(ZA[8]); ZA[12]+=ZA[0]; -ZA[20]+=ZA[23]; - -ZA[13]=ZA[23]; -ZA[13]+=ZMa(ZA[22],ZA[14],ZA[21]); -ZA[13]+=ZR30(ZA[21]); - -ZA[23]=ZCh(ZA[20],ZA[18],ZA[24]); -ZA[23]+=ZA[19]; -ZA[23]+=ZA[7]; -ZA[23]+=0xa2bfe8a1U; -ZA[23]+=ZR26(ZA[20]); -ZA[4]+=ZR15(ZA[7]); -ZA[4]+=ZR25(ZA[9]); -ZA[4]+=ZA[3]; -ZA[14]+=ZA[23]; -ZA[23]+=ZMa(ZA[21],ZA[22],ZA[13]); -ZA[23]+=ZR30(ZA[13]); -ZA[24]+=ZCh(ZA[14],ZA[20],ZA[18]); -ZA[24]+=ZA[12]; -ZA[24]+=0xa81a664bU; -ZA[24]+=ZR26(ZA[14]); +ZA[20]+=ZA[10]; +ZA[10]+=ZMa(ZA[22],ZA[23],ZA[7]); +ZA[10]+=ZR30(ZA[7]); + +ZA[14]+=ZCh(ZA[20],ZA[21],ZA[5]); +ZA[14]+=ZA[6]; +ZA[14]+=0xa2bfe8a1U; +ZA[14]+=ZR26(ZA[20]); +ZA[8]+=ZR15(ZA[6]); +ZA[8]+=ZR25(ZA[9]); +ZA[8]+=ZA[3]; +ZA[23]+=ZA[14]; +ZA[14]+=ZMa(ZA[7],ZA[22],ZA[10]); +ZA[14]+=ZR30(ZA[10]); +ZA[5]+=ZCh(ZA[23],ZA[20],ZA[21]); +ZA[5]+=ZA[12]; +ZA[5]+=0xa81a664bU; +ZA[5]+=ZR26(ZA[23]); ZA[9]+=ZR15(ZA[12]); ZA[9]+=ZA[1]; -ZA[9]+=ZR25(ZA[6]); +ZA[9]+=ZR25(ZA[15]); -ZA[19]=ZA[24]; -ZA[19]+=ZMa(ZA[13],ZA[21],ZA[23]); -ZA[19]+=ZR30(ZA[23]); -ZA[22]+=ZA[24]; -ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20]); -ZA[18]+=ZA[4]; -ZA[18]+=0xc24b8b70U; -ZA[18]+=ZR26(ZA[22]); -ZA[6]+=ZR15(ZA[4]); -ZA[6]+=ZA[2]; -ZA[6]+=ZR25(ZA[10]); - -ZA[24]=ZA[21]; -ZA[24]+=ZA[18]; -ZA[18]+=ZMa(ZA[23],ZA[13],ZA[19]); -ZA[18]+=ZR30(ZA[19]); -ZA[20]+=ZCh(ZA[24],ZA[22],ZA[14]); +ZA[24]=ZA[5]; +ZA[24]+=ZMa(ZA[10],ZA[7],ZA[14]); +ZA[24]+=ZR30(ZA[14]); +ZA[22]+=ZA[5]; +ZA[21]+=ZCh(ZA[22],ZA[23],ZA[20]); +ZA[21]+=ZA[8]; +ZA[21]+=0xc24b8b70U; +ZA[21]+=ZR26(ZA[22]); +ZA[15]+=ZR15(ZA[8]); +ZA[15]+=ZA[2]; +ZA[15]+=ZR25(ZA[16]); + +ZA[7]+=ZA[21]; +ZA[21]+=ZMa(ZA[14],ZA[10],ZA[24]); +ZA[21]+=ZR30(ZA[24]); +ZA[20]+=ZCh(ZA[7],ZA[22],ZA[23]); ZA[20]+=ZA[9]; ZA[20]+=0xc76c51a3U; -ZA[20]+=ZR26(ZA[24]); -ZA[10]+=ZR15(ZA[9]); -ZA[10]+=ZR25(ZA[17]); -ZA[10]+=ZA[8]; -ZA[13]+=ZA[20]; -ZA[20]+=ZMa(ZA[19],ZA[23],ZA[18]); -ZA[20]+=ZR30(ZA[18]); -ZA[14]+=ZCh(ZA[13],ZA[24],ZA[22]); -ZA[14]+=ZA[6]; -ZA[14]+=0xd192e819U; -ZA[14]+=ZR26(ZA[13]); -ZA[17]+=ZR15(ZA[6]); -ZA[17]+=ZR25(ZA[5]); +ZA[20]+=ZR26(ZA[7]); +ZA[16]+=ZR15(ZA[9]); +ZA[16]+=ZR25(ZA[17]); +ZA[16]+=ZA[13]; +ZA[10]+=ZA[20]; +ZA[20]+=ZMa(ZA[24],ZA[14],ZA[21]); +ZA[20]+=ZR30(ZA[21]); +ZA[23]+=ZCh(ZA[10],ZA[7],ZA[22]); +ZA[23]+=ZA[15]; +ZA[23]+=0xd192e819U; +ZA[23]+=ZR26(ZA[10]); +ZA[17]+=ZR15(ZA[15]); +ZA[17]+=ZR25(ZA[4]); ZA[17]+=ZA[11]; -ZA[21]=ZA[23]; -ZA[21]+=ZA[14]; -ZA[14]+=ZMa(ZA[18],ZA[19],ZA[20]); -ZA[14]+=ZR30(ZA[20]); -ZA[22]+=ZCh(ZA[21],ZA[13],ZA[24]); -ZA[22]+=ZA[10]; +ZA[14]+=ZA[23]; +ZA[23]+=ZMa(ZA[21],ZA[24],ZA[20]); +ZA[23]+=ZR30(ZA[20]); +ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); +ZA[22]+=ZA[16]; ZA[22]+=0xd6990624U; -ZA[22]+=ZR26(ZA[21]); -ZA[5]+=ZR15(ZA[10]); -ZA[5]+=ZA[7]; -ZA[5]+=ZR25(ZA[15]); -ZA[19]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[18],ZA[14]); -ZA[22]+=ZR30(ZA[14]); -ZA[24]+=ZCh(ZA[19],ZA[21],ZA[13]); -ZA[24]+=ZA[17]; -ZA[24]+=0xf40e3585U; -ZA[24]+=ZR26(ZA[19]); -ZA[15]+=ZR15(ZA[17]); -ZA[15]+=ZA[12]; -ZA[15]+=ZR25(ZA[16]); -ZA[18]+=ZA[24]; - -ZA[23]=ZA[24]; -ZA[23]+=ZMa(ZA[14],ZA[20],ZA[22]); -ZA[23]+=ZR30(ZA[22]); -ZA[13]+=ZCh(ZA[18],ZA[19],ZA[21]); -ZA[13]+=ZA[5]; -ZA[13]+=0x106aa070U; -ZA[13]+=ZR26(ZA[18]); -ZA[16]+=ZR15(ZA[5]); -ZA[16]+=ZA[4]; -ZA[16]+=ZR25(ZA[0]); -ZA[20]+=ZA[13]; -ZA[13]+=ZMa(ZA[22],ZA[14],ZA[23]); -ZA[13]+=ZR30(ZA[23]); -ZA[21]+=ZCh(ZA[20],ZA[18],ZA[19]); -ZA[21]+=ZA[15]; -ZA[21]+=0x19a4c116U; -ZA[21]+=ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[15]); +ZA[22]+=ZR26(ZA[14]); +ZA[4]+=ZR15(ZA[16]); +ZA[4]+=ZA[6]; +ZA[4]+=ZR25(ZA[18]); +ZA[24]+=ZA[22]; +ZA[22]+=ZMa(ZA[20],ZA[21],ZA[23]); +ZA[22]+=ZR30(ZA[23]); +ZA[7]+=ZCh(ZA[24],ZA[14],ZA[10]); +ZA[7]+=ZA[17]; +ZA[7]+=0xf40e3585U; +ZA[7]+=ZR26(ZA[24]); +ZA[18]+=ZR15(ZA[17]); +ZA[18]+=ZA[12]; +ZA[18]+=ZR25(ZA[19]); +ZA[21]+=ZA[7]; +ZA[7]+=ZMa(ZA[23],ZA[20],ZA[22]); +ZA[7]+=ZR30(ZA[22]); +ZA[10]+=ZCh(ZA[21],ZA[24],ZA[14]); +ZA[10]+=ZA[4]; +ZA[10]+=0x106aa070U; +ZA[10]+=ZR26(ZA[21]); +ZA[19]+=ZR15(ZA[4]); +ZA[19]+=ZA[8]; +ZA[19]+=ZR25(ZA[0]); +ZA[20]+=ZA[10]; +ZA[10]+=ZMa(ZA[22],ZA[23],ZA[7]); +ZA[10]+=ZR30(ZA[7]); +ZA[14]+=ZCh(ZA[20],ZA[21],ZA[24]); +ZA[14]+=ZA[18]; +ZA[14]+=0x19a4c116U; +ZA[14]+=ZR26(ZA[20]); +ZA[0]+=ZR15(ZA[18]); ZA[0]+=ZA[9]; ZA[0]+=ZR25(ZA[3]); -ZA[14]+=ZA[21]; - -ZA[24]=ZA[21]; -ZA[24]+=ZMa(ZA[23],ZA[22],ZA[13]); -ZA[24]+=ZR30(ZA[13]); -ZA[19]+=ZCh(ZA[14],ZA[20],ZA[18]); -ZA[19]+=ZA[16]; -ZA[19]+=0x1e376c08U; -ZA[19]+=ZR26(ZA[14]); -ZA[3]+=ZR15(ZA[16]); -ZA[3]+=ZA[6]; +ZA[23]+=ZA[14]; +ZA[14]+=ZMa(ZA[7],ZA[22],ZA[10]); +ZA[14]+=ZR30(ZA[10]); +ZA[24]+=ZCh(ZA[23],ZA[20],ZA[21]); +ZA[24]+=ZA[19]; +ZA[24]+=0x1e376c08U; +ZA[24]+=ZR26(ZA[23]); +ZA[3]+=ZR15(ZA[19]); +ZA[3]+=ZA[15]; ZA[3]+=ZR25(ZA[1]); -ZA[22]+=ZA[19]; -ZA[19]+=ZMa(ZA[13],ZA[23],ZA[24]); -ZA[19]+=ZR30(ZA[24]); -ZA[18]+=ZCh(ZA[22],ZA[14],ZA[20]); -ZA[18]+=ZA[0]; -ZA[18]+=0x2748774cU; -ZA[18]+=ZR26(ZA[22]); +ZA[22]+=ZA[24]; +ZA[24]+=ZMa(ZA[10],ZA[7],ZA[14]); +ZA[24]+=ZR30(ZA[14]); +ZA[21]+=ZCh(ZA[22],ZA[23],ZA[20]); +ZA[21]+=ZA[0]; +ZA[21]+=0x2748774cU; +ZA[21]+=ZR26(ZA[22]); ZA[1]+=ZR15(ZA[0]); -ZA[1]+=ZA[10]; +ZA[1]+=ZA[16]; ZA[1]+=ZR25(ZA[2]); -ZA[23]+=ZA[18]; - -ZA[21]=ZA[18]; -ZA[21]+=ZMa(ZA[24],ZA[13],ZA[19]); -ZA[21]+=ZR30(ZA[19]); -ZA[20]+=ZCh(ZA[23],ZA[22],ZA[14]); +ZA[7]+=ZA[21]; +ZA[21]+=ZMa(ZA[14],ZA[10],ZA[24]); +ZA[21]+=ZR30(ZA[24]); +ZA[20]+=ZCh(ZA[7],ZA[22],ZA[23]); ZA[20]+=ZA[3]; ZA[20]+=0x34b0bcb5U; -ZA[20]+=ZR26(ZA[23]); +ZA[20]+=ZR26(ZA[7]); ZA[2]+=ZR15(ZA[3]); ZA[2]+=ZA[17]; -ZA[2]+=ZR25(ZA[8]); -ZA[13]+=ZA[20]; -ZA[20]+=ZMa(ZA[19],ZA[24],ZA[21]); +ZA[2]+=ZR25(ZA[13]); +ZA[10]+=ZA[20]; +ZA[20]+=ZMa(ZA[24],ZA[14],ZA[21]); ZA[20]+=ZR30(ZA[21]); -ZA[14]+=ZCh(ZA[13],ZA[23],ZA[22]); -ZA[14]+=ZA[1]; -ZA[14]+=0x391c0cb3U; -ZA[14]+=ZR26(ZA[13]); -ZA[8]+=ZR15(ZA[1]); -ZA[8]+=ZA[5]; -ZA[8]+=ZR25(ZA[11]); -ZA[24]+=ZA[14]; - -ZA[18]=ZA[14]; -ZA[18]+=ZMa(ZA[21],ZA[19],ZA[20]); -ZA[18]+=ZR30(ZA[20]); -ZA[22]+=ZCh(ZA[24],ZA[13],ZA[23]); +ZA[23]+=ZCh(ZA[10],ZA[7],ZA[22]); +ZA[23]+=ZA[1]; +ZA[23]+=0x391c0cb3U; +ZA[23]+=ZR26(ZA[10]); +ZA[13]+=ZR15(ZA[1]); +ZA[13]+=ZA[4]; +ZA[13]+=ZR25(ZA[11]); +ZA[14]+=ZA[23]; +ZA[23]+=ZMa(ZA[21],ZA[24],ZA[20]); +ZA[23]+=ZR30(ZA[20]); +ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); ZA[22]+=ZA[2]; ZA[22]+=0x4ed8aa4aU; -ZA[22]+=ZR26(ZA[24]); +ZA[22]+=ZR26(ZA[14]); ZA[11]+=ZR15(ZA[2]); -ZA[11]+=ZA[15]; -ZA[11]+=ZR25(ZA[7]); -ZA[19]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[21],ZA[18]); -ZA[22]+=ZR30(ZA[18]); -ZA[23]+=ZCh(ZA[19],ZA[24],ZA[13]); -ZA[23]+=ZA[8]; -ZA[23]+=0x5b9cca4fU; -ZA[23]+=ZR26(ZA[19]); -ZA[7]+=ZR15(ZA[8]); -ZA[7]+=ZA[16]; -ZA[7]+=ZR25(ZA[12]); -ZA[21]+=ZA[23]; -ZA[23]+=ZMa(ZA[18],ZA[20],ZA[22]); -ZA[23]+=ZR30(ZA[22]); -ZA[13]+=ZCh(ZA[21],ZA[19],ZA[24]); -ZA[13]+=ZA[11]; -ZA[13]+=0x682e6ff3U; -ZA[13]+=ZR26(ZA[21]); +ZA[11]+=ZA[18]; +ZA[11]+=ZR25(ZA[6]); +ZA[24]+=ZA[22]; +ZA[22]+=ZMa(ZA[20],ZA[21],ZA[23]); +ZA[22]+=ZR30(ZA[23]); +ZA[7]+=ZCh(ZA[24],ZA[14],ZA[10]); +ZA[7]+=ZA[13]; +ZA[7]+=0x5b9cca4fU; +ZA[7]+=ZR26(ZA[24]); +ZA[6]+=ZR15(ZA[13]); +ZA[6]+=ZA[19]; +ZA[6]+=ZR25(ZA[12]); +ZA[21]+=ZA[7]; +ZA[7]+=ZMa(ZA[23],ZA[20],ZA[22]); +ZA[7]+=ZR30(ZA[22]); +ZA[10]+=ZCh(ZA[21],ZA[24],ZA[14]); +ZA[10]+=ZA[11]; +ZA[10]+=0x682e6ff3U; +ZA[10]+=ZR26(ZA[21]); ZA[0]+=ZR15(ZA[11]); -ZA[0]+=ZR25(ZA[4]); +ZA[0]+=ZR25(ZA[8]); ZA[0]+=ZA[12]; -ZA[12]=ZA[20]; -ZA[12]+=ZA[13]; +ZA[20]+=ZA[10]; +ZA[10]+=ZMa(ZA[22],ZA[23],ZA[7]); +ZA[10]+=ZR30(ZA[7]); -ZA[16]=ZA[13]; -ZA[16]+=ZMa(ZA[22],ZA[18],ZA[23]); -ZA[16]+=ZR30(ZA[23]); - -ZA[20]=ZCh(ZA[12],ZA[21],ZA[19]); -ZA[20]+=ZA[24]; -ZA[20]+=ZA[7]; -ZA[20]+=0x748f82eeU; -ZA[20]+=ZR26(ZA[12]); -ZA[3]+=ZR15(ZA[7]); +ZA[14]+=ZCh(ZA[20],ZA[21],ZA[24]); +ZA[14]+=ZA[6]; +ZA[14]+=0x748f82eeU; +ZA[14]+=ZR26(ZA[20]); +ZA[3]+=ZR15(ZA[6]); ZA[3]+=ZR25(ZA[9]); -ZA[3]+=ZA[4]; -ZA[18]+=ZA[20]; -ZA[20]+=ZMa(ZA[23],ZA[22],ZA[16]); -ZA[20]+=ZR30(ZA[16]); -ZA[19]+=ZCh(ZA[18],ZA[12],ZA[21]); -ZA[19]+=ZA[0]; -ZA[19]+=0x78a5636fU; -ZA[19]+=ZR26(ZA[18]); +ZA[3]+=ZA[8]; +ZA[23]+=ZA[14]; +ZA[14]+=ZMa(ZA[7],ZA[22],ZA[10]); +ZA[14]+=ZR30(ZA[10]); +ZA[24]+=ZCh(ZA[23],ZA[20],ZA[21]); +ZA[24]+=ZA[0]; +ZA[24]+=0x78a5636fU; +ZA[24]+=ZR26(ZA[23]); ZA[1]+=ZR15(ZA[0]); -ZA[1]+=ZR25(ZA[6]); +ZA[1]+=ZR25(ZA[15]); ZA[1]+=ZA[9]; -ZA[9]=ZA[22]; -ZA[9]+=ZA[19]; +ZA[22]+=ZA[24]; -ZA[4]=ZA[19]; -ZA[4]+=ZMa(ZA[16],ZA[23],ZA[20]); -ZA[4]+=ZR30(ZA[20]); +ZA[24]+=ZMa(ZA[10],ZA[7],ZA[14]); +ZA[24]+=ZR30(ZA[14]); -ZA[0]=ZCh(ZA[9],ZA[18],ZA[12]); -ZA[0]+=ZA[21]; -ZA[0]+=ZA[3]; -ZA[0]+=0x84c87814U; -ZA[0]+=ZR26(ZA[9]); +ZA[21]+=ZCh(ZA[22],ZA[23],ZA[20]); +ZA[21]+=ZA[3]; +ZA[21]+=0x84c87814U; +ZA[21]+=ZR26(ZA[22]); ZA[2]+=ZR15(ZA[3]); -ZA[2]+=ZR25(ZA[10]); -ZA[2]+=ZA[6]; - -ZA[6]=ZA[23]; -ZA[6]+=ZA[0]; -ZA[0]+=ZMa(ZA[20],ZA[16],ZA[4]); -ZA[0]+=ZR30(ZA[4]); -ZA[12]+=ZCh(ZA[6],ZA[9],ZA[18]); -ZA[12]+=ZA[1]; -ZA[12]+=0x8cc70208U; -ZA[12]+=ZR26(ZA[6]); -ZA[8]+=ZR15(ZA[1]); -ZA[8]+=ZR25(ZA[17]); -ZA[8]+=ZA[10]; -ZA[16]+=ZA[12]; - -ZA[10]=ZA[12]; -ZA[10]+=ZMa(ZA[4],ZA[20],ZA[0]); -ZA[10]+=ZR30(ZA[0]); +ZA[2]+=ZR25(ZA[16]); +ZA[2]+=ZA[15]; -ZA[1]=ZCh(ZA[16],ZA[6],ZA[9]); -ZA[1]+=ZA[18]; -ZA[1]+=ZA[2]; -ZA[1]+=0x90befffaU; -ZA[1]+=ZR26(ZA[16]); +ZA[7]+=ZA[21]; +ZA[21]+=ZMa(ZA[14],ZA[10],ZA[24]); +ZA[21]+=ZR30(ZA[24]); +ZA[20]+=ZCh(ZA[7],ZA[22],ZA[23]); +ZA[20]+=ZA[1]; +ZA[20]+=0x8cc70208U; +ZA[20]+=ZR26(ZA[7]); +ZA[13]+=ZR15(ZA[1]); +ZA[13]+=ZR25(ZA[17]); +ZA[13]+=ZA[16]; +ZA[10]+=ZA[20]; +ZA[20]+=ZMa(ZA[24],ZA[14],ZA[21]); +ZA[20]+=ZR30(ZA[21]); -ZA[3]=ZA[20]; -ZA[3]+=ZA[1]; -ZA[1]+=ZMa(ZA[0],ZA[4],ZA[10]); -ZA[1]+=ZR30(ZA[10]); -ZA[9]+=ZCh(ZA[3],ZA[16],ZA[6]); -ZA[9]+=ZA[8]; -ZA[9]+=0xa4506cebU; -ZA[9]+=ZR26(ZA[3]); - -ZA[12]=ZA[9]; -ZA[12]+=ZMa(ZA[10],ZA[0],ZA[1]); -ZA[12]+=ZR30(ZA[1]); -ZA[4]+=ZA[9]; -ZA[6]+=ZCh(ZA[4],ZA[3],ZA[16]); -ZA[6]+=ZR15(ZA[2]); -ZA[6]+=ZA[11]; -ZA[6]+=ZR25(ZA[5]); -ZA[6]+=0xbef9a3f7U; -ZA[6]+=ZR26(ZA[4]); -ZA[6]+=ZA[17]; +ZA[23]+=ZCh(ZA[10],ZA[7],ZA[22]); +ZA[23]+=ZA[2]; +ZA[23]+=0x90befffaU; +ZA[23]+=ZR26(ZA[10]); -ZA[17]=ZA[0]; -ZA[17]+=ZA[6]; +ZA[14]+=ZA[23]; +ZA[23]+=ZMa(ZA[21],ZA[24],ZA[20]); +ZA[23]+=ZR30(ZA[20]); +ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); +ZA[22]+=ZA[13]; +ZA[22]+=0xa4506cebU; +ZA[22]+=ZR26(ZA[14]); -ZA[9]=ZA[6]; -ZA[9]+=ZMa(ZA[1],ZA[10],ZA[12]); -ZA[9]+=ZR30(ZA[12]); -ZA[7]+=ZCh(ZA[17],ZA[4],ZA[3]); -ZA[7]+=ZA[16]; -ZA[7]+=ZR15(ZA[8]); -ZA[7]+=ZR25(ZA[15]); -ZA[7]+=ZA[5]; -ZA[7]+=0xc67178f2U; -ZA[7]+=ZR26(ZA[17]); +ZA[16]=ZA[22]; +ZA[16]+=ZMa(ZA[20],ZA[21],ZA[23]); +ZA[16]+=ZR30(ZA[23]); +ZA[24]+=ZA[22]; +ZA[7]+=ZCh(ZA[24],ZA[14],ZA[10]); +ZA[7]+=ZR15(ZA[2]); +ZA[7]+=ZA[11]; +ZA[7]+=ZR25(ZA[4]); +ZA[7]+=0xbef9a3f7U; +ZA[7]+=ZR26(ZA[24]); +ZA[7]+=ZA[17]; +ZA[21]+=ZA[7]; +ZA[7]+=ZMa(ZA[23],ZA[20],ZA[16]); +ZA[7]+=ZR30(ZA[16]); +ZA[6]+=ZCh(ZA[21],ZA[24],ZA[14]); +ZA[6]+=ZA[10]; +ZA[6]+=ZR15(ZA[13]); +ZA[6]+=ZR25(ZA[18]); +ZA[6]+=ZA[4]; +ZA[6]+=0xc67178f2U; +ZA[6]+=ZR26(ZA[21]); -ZA[5]=state1; -ZA[5]+=ZA[9]; +ZA[4]=state1; +ZA[4]+=ZA[7]; -ZA[9]=ZMa(ZA[12],ZA[1],ZA[9])+ZR30(ZA[9]); -ZA[9]+=ZA[7]; -ZA[9]+=state0; +ZA[7]=ZMa(ZA[16],ZA[23],ZA[7])+ZR30(ZA[7]); +ZA[7]+=ZA[6]; +ZA[7]+=state0; -ZA[15]=ZA[9]; -ZA[15]+=0x98c7e2a2U; +ZA[18]=ZA[7]; +ZA[18]+=0x98c7e2a2U; -ZA[0]=ZCh(ZA[15],0x510e527fU,0x9b05688cU); -ZA[0]+=ZA[5]; -ZA[0]+=0x90bb1e3cU; -ZA[0]+=ZR26(ZA[15]); -ZA[12]+=state2; +ZA[17]=ZCh(ZA[18],0x510e527fU,0x9b05688cU); +ZA[17]+=ZA[4]; +ZA[17]+=0x90bb1e3cU; +ZA[17]+=ZR26(ZA[18]); +ZA[16]+=state2; -ZA[2]=ZA[9]; +ZA[2]=ZA[7]; ZA[2]+=0xfc08884dU; -ZA[8]=ZA[0]; -ZA[8]+=0x3c6ef372U; +ZA[13]=ZA[17]; +ZA[13]+=0x3c6ef372U; -ZA[11]=ZCh(ZA[8],ZA[15],0x510e527fU); -ZA[11]+=ZA[12]; +ZA[11]=ZCh(ZA[13],ZA[18],0x510e527fU); +ZA[11]+=ZA[16]; ZA[11]+=0x50c6645bU; -ZA[11]+=ZR26(ZA[8]); -ZA[1]+=state3; -ZA[0]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); -ZA[0]+=ZR30(ZA[2]); - -ZA[6]=ZA[11]; -ZA[6]+=0xbb67ae85U; - -ZA[15]=ZCh(ZA[6],ZA[8],ZA[15]); -ZA[15]+=ZR26(ZA[6]); -ZA[15]+=ZA[1]; -ZA[15]+=0x3ac42e24U; -ZA[10]+=state4; -ZA[10]+=ZA[7]; +ZA[11]+=ZR26(ZA[13]); +ZA[23]+=state3; +ZA[17]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); +ZA[17]+=ZR30(ZA[2]); -ZA[7]=ZA[15]; -ZA[7]+=0x6a09e667U; -ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[0]); -ZA[11]+=ZR30(ZA[0]); -ZA[17]+=state5; +ZA[22]=ZA[11]; +ZA[22]+=0xbb67ae85U; -ZA[16]=ZCh(ZA[7],ZA[6],ZA[8]); -ZA[16]+=ZA[10]; -ZA[16]+=ZA[9]; -ZA[16]+=0xd21ea4fdU; -ZA[16]+=ZR26(ZA[7]); - -ZA[24]=ZA[16]; -ZA[24]+=ZA[2]; - -ZA[2]=ZMa(ZA[0],ZA[2],ZA[11]); -ZA[2]+=ZA[15]; -ZA[2]+=ZR30(ZA[11]); -ZA[4]+=state6; -ZA[8]+=ZCh(ZA[24],ZA[7],ZA[6]); -ZA[8]+=ZA[17]; -ZA[8]+=0x59f111f1U; -ZA[8]+=ZR26(ZA[24]); - -ZA[15]=ZA[0]; -ZA[15]+=ZA[8]; -ZA[16]+=ZMa(ZA[11],ZA[0],ZA[2]); -ZA[16]+=ZR30(ZA[2]); -ZA[3]+=state7; -ZA[6]+=ZCh(ZA[15],ZA[24],ZA[7]); -ZA[6]+=ZA[4]; -ZA[6]+=0x923f82a4U; -ZA[6]+=ZR26(ZA[15]); - -ZA[0]=ZA[11]; -ZA[0]+=ZA[6]; -ZA[8]+=ZMa(ZA[2],ZA[11],ZA[16]); -ZA[8]+=ZR30(ZA[16]); -ZA[7]+=ZCh(ZA[0],ZA[15],ZA[24]); -ZA[7]+=ZA[3]; -ZA[7]+=0xab1c5ed5U; -ZA[7]+=ZR26(ZA[0]); - -ZA[11]=ZA[7]; -ZA[11]+=ZA[2]; - -ZA[2]=ZMa(ZA[16],ZA[2],ZA[8]); -ZA[2]+=ZA[6]; -ZA[2]+=ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[11],ZA[0],ZA[15]); -ZA[24]+=0x5807aa98U; -ZA[24]+=ZR26(ZA[11]); - -ZA[6]=ZA[16]; -ZA[6]+=ZA[24]; -ZA[7]+=ZMa(ZA[8],ZA[16],ZA[2]); -ZA[7]+=ZR30(ZA[2]); -ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); -ZA[15]+=0x12835b01U; -ZA[15]+=ZR26(ZA[6]); - -ZA[16]=ZA[15]; -ZA[16]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[24]; -ZA[8]+=ZR30(ZA[7]); -ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); -ZA[0]+=0x243185beU; -ZA[0]+=ZR26(ZA[16]); - -ZA[14]=ZA[0]; -ZA[14]+=ZA[2]; +ZA[18]=ZCh(ZA[22],ZA[13],ZA[18]); +ZA[18]+=ZR26(ZA[22]); +ZA[18]+=ZA[23]; +ZA[18]+=0x3ac42e24U; +ZA[20]+=state4; +ZA[20]+=ZA[6]; + +ZA[6]=ZA[18]; +ZA[6]+=0x6a09e667U; +ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[17]); +ZA[11]+=ZR30(ZA[17]); +ZA[21]+=state5; + +ZA[10]=ZCh(ZA[6],ZA[22],ZA[13]); +ZA[10]+=ZA[20]; +ZA[10]+=ZA[7]; +ZA[10]+=0xd21ea4fdU; +ZA[10]+=ZR26(ZA[6]); -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[15]; -ZA[2]+=ZR30(ZA[8]); -ZA[11]+=ZCh(ZA[14],ZA[16],ZA[6]); +ZA[12]=ZA[10]; +ZA[12]+=ZA[2]; +ZA[18]+=ZMa(ZA[17],ZA[2],ZA[11]); +ZA[18]+=ZR30(ZA[11]); +ZA[24]+=state6; +ZA[13]+=ZCh(ZA[12],ZA[6],ZA[22]); +ZA[13]+=ZA[21]; +ZA[13]+=0x59f111f1U; +ZA[13]+=ZR26(ZA[12]); + +ZA[2]=ZA[17]; +ZA[2]+=ZA[13]; +ZA[10]+=ZMa(ZA[11],ZA[17],ZA[18]); +ZA[10]+=ZR30(ZA[18]); +ZA[14]+=state7; +ZA[22]+=ZCh(ZA[2],ZA[12],ZA[6]); +ZA[22]+=ZA[24]; +ZA[22]+=0x923f82a4U; +ZA[22]+=ZR26(ZA[2]); + +ZA[17]=ZA[11]; +ZA[17]+=ZA[22]; +ZA[13]+=ZMa(ZA[18],ZA[11],ZA[10]); +ZA[13]+=ZR30(ZA[10]); +ZA[6]+=ZCh(ZA[17],ZA[2],ZA[12]); +ZA[6]+=ZA[14]; +ZA[6]+=0xab1c5ed5U; +ZA[6]+=ZR26(ZA[17]); + +ZA[11]=ZA[6]; +ZA[11]+=ZA[18]; +ZA[22]+=ZMa(ZA[10],ZA[18],ZA[13]); +ZA[22]+=ZR30(ZA[13]); +ZA[12]+=ZCh(ZA[11],ZA[17],ZA[2]); +ZA[12]+=0x5807aa98U; +ZA[12]+=ZR26(ZA[11]); + +ZA[18]=ZA[10]; +ZA[18]+=ZA[12]; +ZA[6]+=ZMa(ZA[13],ZA[10],ZA[22]); +ZA[6]+=ZR30(ZA[22]); +ZA[2]+=ZCh(ZA[18],ZA[11],ZA[17]); +ZA[2]+=0x12835b01U; +ZA[2]+=ZR26(ZA[18]); + +ZA[10]=ZA[2]; +ZA[10]+=ZA[13]; +ZA[12]+=ZMa(ZA[22],ZA[13],ZA[6]); +ZA[12]+=ZR30(ZA[6]); +ZA[17]+=ZCh(ZA[10],ZA[18],ZA[11]); +ZA[17]+=0x243185beU; +ZA[17]+=ZR26(ZA[10]); + +ZA[5]=ZA[17]; +ZA[5]+=ZA[22]; +ZA[2]+=ZMa(ZA[6],ZA[22],ZA[12]); +ZA[2]+=ZR30(ZA[12]); +ZA[11]+=ZCh(ZA[5],ZA[10],ZA[18]); ZA[11]+=0x550c7dc3U; -ZA[11]+=ZR26(ZA[14]); +ZA[11]+=ZR26(ZA[5]); + +ZA[22]=ZA[11]; +ZA[22]+=ZA[6]; +ZA[17]+=ZMa(ZA[12],ZA[6],ZA[2]); +ZA[17]+=ZR30(ZA[2]); +ZA[18]+=ZCh(ZA[22],ZA[5],ZA[10]); +ZA[18]+=0x72be5d74U; +ZA[18]+=ZR26(ZA[22]); -ZA[15]=ZA[11]; -ZA[15]+=ZA[7]; +ZA[6]=ZA[18]; +ZA[6]+=ZA[12]; +ZA[11]+=ZMa(ZA[2],ZA[12],ZA[17]); +ZA[11]+=ZR30(ZA[17]); +ZA[10]+=ZCh(ZA[6],ZA[22],ZA[5]); +ZA[10]+=0x80deb1feU; +ZA[10]+=ZR26(ZA[6]); -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[0]; -ZA[7]+=ZR30(ZA[2]); -ZA[6]+=ZCh(ZA[15],ZA[14],ZA[16]); -ZA[6]+=0x72be5d74U; -ZA[6]+=ZR26(ZA[15]); +ZA[12]=ZA[10]; +ZA[12]+=ZA[2]; +ZA[18]+=ZMa(ZA[17],ZA[2],ZA[11]); +ZA[18]+=ZR30(ZA[11]); +ZA[5]+=ZCh(ZA[12],ZA[6],ZA[22]); +ZA[5]+=0x9bdc06a7U; +ZA[5]+=ZR26(ZA[12]); +ZA[7]+=ZR25(ZA[4]); + +ZA[2]=ZA[5]; +ZA[2]+=ZA[17]; +ZA[10]+=ZMa(ZA[11],ZA[17],ZA[18]); +ZA[10]+=ZR30(ZA[18]); +ZA[22]+=ZCh(ZA[2],ZA[12],ZA[6]); +ZA[22]+=0xc19bf274U; +ZA[22]+=ZR26(ZA[2]); +ZA[4]+=ZR25(ZA[16]); +ZA[4]+=0x00a00000U; + +ZA[17]=ZA[22]; +ZA[17]+=ZA[11]; +ZA[5]+=ZMa(ZA[18],ZA[11],ZA[10]); +ZA[5]+=ZR30(ZA[10]); +ZA[6]+=ZCh(ZA[17],ZA[2],ZA[12]); +ZA[6]+=ZA[7]; +ZA[6]+=0xe49b69c1U; +ZA[6]+=ZR26(ZA[17]); ZA[0]=ZA[6]; -ZA[0]+=ZA[8]; +ZA[0]+=ZA[18]; +ZA[22]+=ZMa(ZA[10],ZA[18],ZA[5]); +ZA[22]+=ZR30(ZA[5]); +ZA[12]+=ZCh(ZA[0],ZA[17],ZA[2]); +ZA[12]+=ZA[4]; +ZA[12]+=0xefbe4786U; +ZA[12]+=ZR26(ZA[0]); +ZA[16]+=ZR15(ZA[7]); +ZA[16]+=ZR25(ZA[23]); +ZA[23]+=ZR15(ZA[4]); +ZA[23]+=ZR25(ZA[20]); + +ZA[6]+=ZMa(ZA[5],ZA[10],ZA[22]); +ZA[6]+=ZR30(ZA[22]); + +ZA[10]+=ZA[12]; +ZA[2]+=ZCh(ZA[10],ZA[0],ZA[17]); +ZA[2]+=0x0fc19dc6U; +ZA[2]+=ZA[16]; +ZA[2]+=ZR26(ZA[10]); + +ZA[20]+=ZR15(ZA[16]); +ZA[20]+=ZR25(ZA[21]); + +ZA[12]+=ZMa(ZA[22],ZA[5],ZA[6]); +ZA[12]+=ZR30(ZA[6]); -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[11]; -ZA[8]+=ZR30(ZA[7]); -ZA[16]+=ZCh(ZA[0],ZA[15],ZA[14]); -ZA[16]+=0x80deb1feU; -ZA[16]+=ZR26(ZA[0]); - -ZA[11]=ZA[16]; -ZA[11]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[6]; -ZA[2]+=ZR30(ZA[8]); -ZA[14]+=ZCh(ZA[11],ZA[0],ZA[15]); -ZA[14]+=0x9bdc06a7U; -ZA[14]+=ZR26(ZA[11]); -ZA[9]+=ZR25(ZA[5]); - -ZA[6]=ZA[14]; -ZA[6]+=ZA[7]; +ZA[5]+=ZA[2]; +ZA[17]+=ZCh(ZA[5],ZA[10],ZA[0]); +ZA[17]+=ZA[23]; +ZA[17]+=0x240ca1ccU; +ZA[17]+=ZR26(ZA[5]); +ZA[21]+=ZR15(ZA[23]); +ZA[21]+=ZR25(ZA[24]); + +ZA[2]+=ZMa(ZA[6],ZA[22],ZA[12]); +ZA[2]+=ZR30(ZA[12]); + +ZA[22]+=ZA[17]; +ZA[0]+=ZCh(ZA[22],ZA[5],ZA[10]); +ZA[0]+=ZA[20]; +ZA[0]+=0x2de92c6fU; +ZA[0]+=ZR26(ZA[22]); +ZA[24]+=ZR15(ZA[20]); +ZA[24]+=0x00000100U; +ZA[24]+=ZR25(ZA[14]); + +ZA[17]+=ZMa(ZA[12],ZA[6],ZA[2]); +ZA[17]+=ZR30(ZA[2]); -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[16]; -ZA[7]+=ZR30(ZA[2]); -ZA[15]+=ZCh(ZA[6],ZA[11],ZA[0]); -ZA[15]+=0xc19bf274U; -ZA[15]+=ZR26(ZA[6]); -ZA[5]+=ZR25(ZA[12]); -ZA[5]+=0x00a00000U; - -ZA[16]=ZA[15]; -ZA[16]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[14]; -ZA[8]+=ZR30(ZA[7]); -ZA[0]+=ZCh(ZA[16],ZA[6],ZA[11]); -ZA[0]+=ZA[9]; -ZA[0]+=0xe49b69c1U; -ZA[0]+=ZR26(ZA[16]); +ZA[6]+=ZA[0]; +ZA[10]+=ZCh(ZA[6],ZA[22],ZA[5]); +ZA[10]+=ZA[21]; +ZA[10]+=0x4a7484aaU; +ZA[10]+=ZR26(ZA[6]); +ZA[14]+=ZA[7]; +ZA[14]+=ZR15(ZA[21]); +ZA[14]+=0x11002000U; -ZA[21]=ZA[0]; -ZA[21]+=ZA[2]; +ZA[0]+=ZMa(ZA[2],ZA[12],ZA[17]); +ZA[0]+=ZR30(ZA[17]); -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[15]; -ZA[2]+=ZR30(ZA[8]); -ZA[11]+=ZCh(ZA[21],ZA[16],ZA[6]); -ZA[11]+=ZA[5]; -ZA[11]+=0xefbe4786U; -ZA[11]+=ZR26(ZA[21]); -ZA[12]+=ZR15(ZA[9]); -ZA[12]+=ZR25(ZA[1]); -ZA[1]+=ZR15(ZA[5]); -ZA[1]+=ZR25(ZA[10]); - -ZA[15]=ZA[11]; -ZA[15]+=ZA[7]; - -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[0]; -ZA[7]+=ZR30(ZA[2]); -ZA[6]+=ZCh(ZA[15],ZA[21],ZA[16]); -ZA[6]+=0x0fc19dc6U; -ZA[6]+=ZA[12]; -ZA[6]+=ZR26(ZA[15]); +ZA[12]+=ZA[10]; +ZA[5]+=ZCh(ZA[12],ZA[6],ZA[22]); +ZA[5]+=ZA[24]; +ZA[5]+=0x5cb0a9dcU; +ZA[5]+=ZR26(ZA[12]); -ZA[0]=ZR15(ZA[12]); -ZA[0]+=ZR25(ZA[17]); -ZA[0]+=ZA[10]; +ZA[19]=ZR15(ZA[24]); +ZA[19]+=ZA[4]; +ZA[19]+=0x80000000U; -ZA[10]=ZA[6]; -ZA[10]+=ZA[8]; +ZA[9]=ZA[5]; +ZA[9]+=ZA[2]; +ZA[10]+=ZMa(ZA[17],ZA[2],ZA[0]); +ZA[10]+=ZR30(ZA[0]); +ZA[22]+=ZCh(ZA[9],ZA[12],ZA[6]); +ZA[22]+=ZA[14]; +ZA[22]+=0x76f988daU; +ZA[22]+=ZR26(ZA[9]); + +ZA[2]=ZR15(ZA[14]); +ZA[2]+=ZA[16]; + +ZA[1]=ZA[22]; +ZA[1]+=ZA[17]; +ZA[5]+=ZMa(ZA[0],ZA[17],ZA[10]); +ZA[5]+=ZR30(ZA[10]); +ZA[6]+=ZCh(ZA[1],ZA[9],ZA[12]); +ZA[6]+=ZA[19]; +ZA[6]+=0x983e5152U; +ZA[6]+=ZR26(ZA[1]); -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[11]; -ZA[8]+=ZR30(ZA[7]); -ZA[16]+=ZCh(ZA[10],ZA[15],ZA[21]); -ZA[16]+=ZA[1]; -ZA[16]+=0x240ca1ccU; -ZA[16]+=ZR26(ZA[10]); -ZA[17]+=ZR15(ZA[1]); -ZA[17]+=ZR25(ZA[4]); +ZA[17]=ZR15(ZA[19]); +ZA[17]+=ZA[23]; -ZA[11]=ZA[16]; -ZA[11]+=ZA[2]; +ZA[15]=ZA[6]; +ZA[15]+=ZA[0]; +ZA[22]+=ZMa(ZA[10],ZA[0],ZA[5]); +ZA[22]+=ZR30(ZA[5]); +ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); +ZA[12]+=ZA[2]; +ZA[12]+=0xa831c66dU; +ZA[12]+=ZR26(ZA[15]); -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[6]; -ZA[2]+=ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[11],ZA[10],ZA[15]); -ZA[21]+=ZA[0]; -ZA[21]+=0x2de92c6fU; -ZA[21]+=ZR26(ZA[11]); -ZA[4]+=ZR15(ZA[0]); -ZA[4]+=0x00000100U; -ZA[4]+=ZR25(ZA[3]); +ZA[0]=ZR15(ZA[2]); +ZA[0]+=ZA[20]; -ZA[6]=ZA[21]; -ZA[6]+=ZA[7]; +ZA[13]=ZA[12]; +ZA[13]+=ZA[10]; +ZA[10]=ZMa(ZA[5],ZA[10],ZA[22]); +ZA[10]+=ZA[6]; +ZA[10]+=ZR30(ZA[22]); +ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); +ZA[9]+=ZA[17]; +ZA[9]+=0xb00327c8U; +ZA[9]+=ZR26(ZA[13]); -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[16]; -ZA[7]+=ZR30(ZA[2]); -ZA[15]+=ZCh(ZA[6],ZA[11],ZA[10]); -ZA[15]+=ZA[17]; -ZA[15]+=0x4a7484aaU; -ZA[15]+=ZR26(ZA[6]); -ZA[3]+=ZA[9]; -ZA[3]+=ZR15(ZA[17]); -ZA[3]+=0x11002000U; - -ZA[16]=ZA[15]; -ZA[16]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[21]; -ZA[8]+=ZR30(ZA[7]); -ZA[10]+=ZCh(ZA[16],ZA[6],ZA[11]); -ZA[10]+=ZA[4]; -ZA[10]+=0x5cb0a9dcU; -ZA[10]+=ZR26(ZA[16]); +ZA[6]=ZR15(ZA[17]); +ZA[6]+=ZA[21]; -ZA[13]=ZR15(ZA[4]); -ZA[13]+=ZA[5]; -ZA[13]+=0x80000000U; +ZA[8]=ZA[9]; +ZA[8]+=ZA[5]; -ZA[22]=ZA[10]; -ZA[22]+=ZA[2]; +ZA[12]+=ZMa(ZA[22],ZA[5],ZA[10]); +ZA[12]+=ZR30(ZA[10]); +ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); +ZA[1]+=ZA[0]; +ZA[1]+=0xbf597fc7U; +ZA[1]+=ZR26(ZA[8]); -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[15]; -ZA[2]+=ZR30(ZA[8]); -ZA[11]+=ZCh(ZA[22],ZA[16],ZA[6]); -ZA[11]+=ZA[3]; -ZA[11]+=0x76f988daU; -ZA[11]+=ZR26(ZA[22]); - -ZA[15]=ZR15(ZA[3]); -ZA[15]+=ZA[12]; - -ZA[18]=ZA[11]; -ZA[18]+=ZA[7]; - -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[10]; -ZA[7]+=ZR30(ZA[2]); -ZA[6]+=ZCh(ZA[18],ZA[22],ZA[16]); -ZA[6]+=ZA[13]; -ZA[6]+=0x983e5152U; -ZA[6]+=ZR26(ZA[18]); +ZA[11]=ZR15(ZA[0]); +ZA[11]+=ZA[24]; -ZA[10]=ZR15(ZA[13]); -ZA[10]+=ZA[1]; +ZA[3]=ZA[1]; +ZA[3]+=ZA[22]; -ZA[23]=ZA[6]; -ZA[23]+=ZA[8]; +ZA[9]+=ZMa(ZA[10],ZA[22],ZA[12]); +ZA[9]+=ZR30(ZA[12]); +ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); +ZA[15]+=ZA[6]; +ZA[15]+=0xc6e00bf3U; +ZA[15]+=ZR26(ZA[3]); -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[11]; -ZA[8]+=ZR30(ZA[7]); -ZA[16]+=ZCh(ZA[23],ZA[18],ZA[22]); -ZA[16]+=ZA[15]; -ZA[16]+=0xa831c66dU; -ZA[16]+=ZR26(ZA[23]); +ZA[5]=ZR15(ZA[6]); +ZA[5]+=ZA[14]; +ZA[5]+=0x00400022U; -ZA[11]=ZR15(ZA[15]); -ZA[11]+=ZA[0]; +ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); +ZA[1]+=ZR30(ZA[9]); -ZA[24]=ZA[16]; -ZA[24]+=ZA[2]; +ZA[10]+=ZA[15]; +ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); +ZA[13]+=ZA[11]; +ZA[13]+=0xd5a79147U; +ZA[13]+=ZR26(ZA[10]); -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[6]; -ZA[2]+=ZR30(ZA[8]); -ZA[22]+=ZCh(ZA[24],ZA[23],ZA[18]); -ZA[22]+=ZA[10]; -ZA[22]+=0xb00327c8U; -ZA[22]+=ZR26(ZA[24]); +ZA[22]=ZR15(ZA[11]); +ZA[22]+=ZA[19]; +ZA[22]+=ZR25(ZA[7]); +ZA[22]+=0x00000100U; -ZA[6]=ZR15(ZA[10]); -ZA[6]+=ZA[17]; +ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); +ZA[15]+=ZR30(ZA[1]); -ZA[19]=ZA[22]; -ZA[19]+=ZA[7]; +ZA[12]+=ZA[13]; +ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); +ZA[8]+=ZA[5]; +ZA[8]+=0x06ca6351U; +ZA[8]+=ZR26(ZA[12]); +ZA[7]+=ZR15(ZA[5]); +ZA[7]+=ZR25(ZA[4]); +ZA[7]+=ZA[2]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[16]; -ZA[7]+=ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); -ZA[18]+=ZA[11]; -ZA[18]+=0xbf597fc7U; -ZA[18]+=ZR26(ZA[19]); +ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); +ZA[13]+=ZR30(ZA[15]); -ZA[14]=ZR15(ZA[11]); -ZA[14]+=ZA[4]; +ZA[9]+=ZA[8]; +ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); +ZA[3]+=ZA[22]; +ZA[3]+=0x14292967U; +ZA[3]+=ZR26(ZA[9]); +ZA[4]+=ZR15(ZA[22]); +ZA[4]+=ZR25(ZA[16]); +ZA[4]+=ZA[17]; + +ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); +ZA[8]+=ZR30(ZA[13]); + +ZA[1]+=ZA[3]; +ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); +ZA[10]+=ZA[7]; +ZA[10]+=0x27b70a85U; +ZA[10]+=ZR26(ZA[1]); +ZA[16]+=ZR15(ZA[7]); +ZA[16]+=ZA[0]; +ZA[16]+=ZR25(ZA[23]); -ZA[20]=ZA[18]; -ZA[20]+=ZA[8]; +ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); +ZA[3]+=ZR30(ZA[8]); -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[22]; -ZA[8]+=ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); +ZA[15]+=ZA[10]; +ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); +ZA[12]+=ZA[4]; +ZA[12]+=0x2e1b2138U; +ZA[12]+=ZR26(ZA[15]); +ZA[23]+=ZR15(ZA[4]); ZA[23]+=ZA[6]; -ZA[23]+=0xc6e00bf3U; -ZA[23]+=ZR26(ZA[20]); +ZA[23]+=ZR25(ZA[20]); + +ZA[10]+=ZMa(ZA[8],ZA[13],ZA[3]); +ZA[10]+=ZR30(ZA[3]); + +ZA[13]+=ZA[12]; +ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); +ZA[9]+=ZA[16]; +ZA[9]+=0x4d2c6dfcU; +ZA[9]+=ZR26(ZA[13]); +ZA[20]+=ZR15(ZA[16]); +ZA[20]+=ZR25(ZA[21]); +ZA[20]+=ZA[11]; -ZA[16]=ZR15(ZA[6]); -ZA[16]+=ZA[3]; -ZA[16]+=0x00400022U; +ZA[12]+=ZMa(ZA[3],ZA[8],ZA[10]); +ZA[12]+=ZR30(ZA[10]); -ZA[21]=ZA[23]; -ZA[21]+=ZA[2]; +ZA[8]+=ZA[9]; +ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); +ZA[1]+=ZA[23]; +ZA[1]+=0x53380d13U; +ZA[1]+=ZR26(ZA[8]); +ZA[21]+=ZR15(ZA[23]); +ZA[21]+=ZA[5]; +ZA[21]+=ZR25(ZA[24]); -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[18]; -ZA[2]+=ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); -ZA[24]+=ZA[14]; -ZA[24]+=0xd5a79147U; -ZA[24]+=ZR26(ZA[21]); +ZA[9]+=ZMa(ZA[10],ZA[3],ZA[12]); +ZA[9]+=ZR30(ZA[12]); -ZA[22]=ZR15(ZA[14]); -ZA[22]+=ZA[13]; -ZA[22]+=ZR25(ZA[9]); -ZA[22]+=0x00000100U; +ZA[3]+=ZA[1]; +ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); +ZA[15]+=ZA[20]; +ZA[15]+=0x650a7354U; +ZA[15]+=ZR26(ZA[3]); +ZA[24]+=ZR15(ZA[20]); +ZA[24]+=ZA[22]; +ZA[24]+=ZR25(ZA[14]); -ZA[18]=ZA[24]; -ZA[18]+=ZA[7]; +ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); +ZA[1]+=ZR30(ZA[9]); -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[23]; -ZA[7]+=ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); -ZA[19]+=ZA[16]; -ZA[19]+=0x06ca6351U; -ZA[19]+=ZR26(ZA[18]); -ZA[9]+=ZR15(ZA[16]); -ZA[9]+=ZR25(ZA[5]); -ZA[9]+=ZA[15]; - -ZA[23]=ZA[19]; -ZA[23]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); +ZA[10]+=ZA[15]; +ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); +ZA[13]+=ZA[21]; +ZA[13]+=0x766a0abbU; +ZA[13]+=ZR26(ZA[10]); +ZA[14]+=ZR15(ZA[21]); +ZA[14]+=ZA[7]; +ZA[14]+=ZR25(ZA[19]); + +ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); +ZA[15]+=ZR30(ZA[1]); + +ZA[12]+=ZA[13]; +ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); ZA[8]+=ZA[24]; -ZA[8]+=ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); -ZA[20]+=ZA[22]; -ZA[20]+=0x14292967U; -ZA[20]+=ZR26(ZA[23]); -ZA[5]+=ZR15(ZA[22]); -ZA[5]+=ZR25(ZA[12]); -ZA[5]+=ZA[10]; - -ZA[24]=ZA[20]; -ZA[24]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[19]; -ZA[2]+=ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); -ZA[21]+=ZA[9]; -ZA[21]+=0x27b70a85U; -ZA[21]+=ZR26(ZA[24]); -ZA[12]+=ZR15(ZA[9]); -ZA[12]+=ZA[11]; -ZA[12]+=ZR25(ZA[1]); - -ZA[19]=ZA[21]; -ZA[19]+=ZA[7]; - -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[20]; -ZA[7]+=ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); -ZA[18]+=ZA[5]; -ZA[18]+=0x2e1b2138U; -ZA[18]+=ZR26(ZA[19]); -ZA[1]+=ZR15(ZA[5]); -ZA[1]+=ZA[6]; -ZA[1]+=ZR25(ZA[0]); +ZA[8]+=0x81c2c92eU; +ZA[8]+=ZR26(ZA[12]); +ZA[19]+=ZR15(ZA[24]); +ZA[19]+=ZA[4]; +ZA[19]+=ZR25(ZA[2]); -ZA[20]=ZA[18]; -ZA[20]+=ZA[8]; +ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); +ZA[13]+=ZR30(ZA[15]); -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[21]; -ZA[8]+=ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); -ZA[23]+=ZA[12]; -ZA[23]+=0x4d2c6dfcU; -ZA[23]+=ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[12]); -ZA[0]+=ZR25(ZA[17]); -ZA[0]+=ZA[14]; - -ZA[21]=ZA[23]; -ZA[21]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[18]; -ZA[2]+=ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); -ZA[24]+=ZA[1]; -ZA[24]+=0x53380d13U; -ZA[24]+=ZR26(ZA[21]); -ZA[17]+=ZR15(ZA[1]); -ZA[17]+=ZA[16]; -ZA[17]+=ZR25(ZA[4]); +ZA[9]+=ZA[8]; +ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); +ZA[3]+=ZA[14]; +ZA[3]+=0x92722c85U; +ZA[3]+=ZR26(ZA[9]); +ZA[2]+=ZR15(ZA[14]); +ZA[2]+=ZA[16]; +ZA[2]+=ZR25(ZA[17]); + +ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); +ZA[8]+=ZR30(ZA[13]); + +ZA[1]+=ZA[3]; +ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); +ZA[10]+=ZA[19]; +ZA[10]+=0xa2bfe8a1U; +ZA[10]+=ZR26(ZA[1]); +ZA[17]+=ZR15(ZA[19]); +ZA[17]+=ZA[23]; +ZA[17]+=ZR25(ZA[0]); + +ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); +ZA[3]+=ZR30(ZA[8]); -ZA[18]=ZA[24]; -ZA[18]+=ZA[7]; +ZA[15]+=ZA[10]; +ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); +ZA[12]+=ZA[2]; +ZA[12]+=0xa81a664bU; +ZA[12]+=ZR26(ZA[15]); +ZA[0]+=ZR15(ZA[2]); +ZA[0]+=ZA[20]; +ZA[0]+=ZR25(ZA[6]); + +ZA[10]+=ZMa(ZA[8],ZA[13],ZA[3]); +ZA[10]+=ZR30(ZA[3]); + +ZA[13]+=ZA[12]; +ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); +ZA[9]+=ZA[17]; +ZA[9]+=0xc24b8b70U; +ZA[9]+=ZR26(ZA[13]); +ZA[6]+=ZR15(ZA[17]); +ZA[6]+=ZA[21]; +ZA[6]+=ZR25(ZA[11]); + +ZA[12]+=ZMa(ZA[3],ZA[8],ZA[10]); +ZA[12]+=ZR30(ZA[10]); + +ZA[8]+=ZA[9]; +ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); +ZA[1]+=ZA[0]; +ZA[1]+=0xc76c51a3U; +ZA[1]+=ZR26(ZA[8]); +ZA[11]+=ZR15(ZA[0]); +ZA[11]+=ZA[24]; +ZA[11]+=ZR25(ZA[5]); + +ZA[9]+=ZMa(ZA[10],ZA[3],ZA[12]); +ZA[9]+=ZR30(ZA[12]); -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[23]; -ZA[7]+=ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); -ZA[19]+=ZA[0]; -ZA[19]+=0x650a7354U; -ZA[19]+=ZR26(ZA[18]); -ZA[4]+=ZR15(ZA[0]); -ZA[4]+=ZA[22]; -ZA[4]+=ZR25(ZA[3]); - -ZA[23]=ZA[19]; -ZA[23]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[24]; -ZA[8]+=ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); -ZA[20]+=ZA[17]; -ZA[20]+=0x766a0abbU; -ZA[20]+=ZR26(ZA[23]); -ZA[3]+=ZR15(ZA[17]); -ZA[3]+=ZA[9]; -ZA[3]+=ZR25(ZA[13]); - -ZA[24]=ZA[20]; -ZA[24]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[19]; -ZA[2]+=ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); -ZA[21]+=ZA[4]; -ZA[21]+=0x81c2c92eU; -ZA[21]+=ZR26(ZA[24]); -ZA[13]+=ZR15(ZA[4]); -ZA[13]+=ZA[5]; -ZA[13]+=ZR25(ZA[15]); - -ZA[19]=ZA[21]; -ZA[19]+=ZA[7]; - -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[20]; -ZA[7]+=ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); -ZA[18]+=ZA[3]; -ZA[18]+=0x92722c85U; -ZA[18]+=ZR26(ZA[19]); -ZA[15]+=ZR15(ZA[3]); -ZA[15]+=ZA[12]; -ZA[15]+=ZR25(ZA[10]); - -ZA[20]=ZA[18]; -ZA[20]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[21]; -ZA[8]+=ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); -ZA[23]+=ZA[13]; -ZA[23]+=0xa2bfe8a1U; -ZA[23]+=ZR26(ZA[20]); -ZA[10]+=ZR15(ZA[13]); -ZA[10]+=ZA[1]; -ZA[10]+=ZR25(ZA[11]); - -ZA[21]=ZA[23]; -ZA[21]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[18]; -ZA[2]+=ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); -ZA[24]+=ZA[15]; -ZA[24]+=0xa81a664bU; -ZA[24]+=ZR26(ZA[21]); -ZA[11]+=ZR15(ZA[15]); -ZA[11]+=ZA[0]; -ZA[11]+=ZR25(ZA[6]); +ZA[3]+=ZA[1]; +ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); +ZA[15]+=ZA[6]; +ZA[15]+=0xd192e819U; +ZA[15]+=ZR26(ZA[3]); +ZA[5]+=ZR15(ZA[6]); +ZA[5]+=ZA[14]; +ZA[5]+=ZR25(ZA[22]); -ZA[18]=ZA[24]; -ZA[18]+=ZA[7]; +ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); +ZA[1]+=ZR30(ZA[9]); -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[23]; -ZA[7]+=ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); -ZA[19]+=ZA[10]; -ZA[19]+=0xc24b8b70U; -ZA[19]+=ZR26(ZA[18]); -ZA[6]+=ZR15(ZA[10]); -ZA[6]+=ZA[17]; -ZA[6]+=ZR25(ZA[14]); - -ZA[23]=ZA[19]; -ZA[23]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[24]; -ZA[8]+=ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); +ZA[10]+=ZA[15]; +ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); +ZA[13]+=ZA[11]; +ZA[13]+=0xd6990624U; +ZA[13]+=ZR26(ZA[10]); +ZA[22]+=ZR15(ZA[11]); +ZA[22]+=ZA[19]; +ZA[22]+=ZR25(ZA[7]); + +ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); +ZA[15]+=ZR30(ZA[1]); + +ZA[12]+=ZA[13]; +ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); +ZA[8]+=ZA[5]; +ZA[8]+=0xf40e3585U; +ZA[8]+=ZR26(ZA[12]); +ZA[7]+=ZR15(ZA[5]); +ZA[7]+=ZA[2]; +ZA[7]+=ZR25(ZA[4]); + +ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); +ZA[13]+=ZR30(ZA[15]); + +ZA[9]+=ZA[8]; +ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); +ZA[3]+=ZA[22]; +ZA[3]+=0x106aa070U; +ZA[3]+=ZR26(ZA[9]); +ZA[4]+=ZR15(ZA[22]); +ZA[4]+=ZA[17]; +ZA[4]+=ZR25(ZA[16]); + +ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); +ZA[8]+=ZR30(ZA[13]); + +ZA[1]+=ZA[3]; +ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); +ZA[10]+=ZA[7]; +ZA[10]+=0x19a4c116U; +ZA[10]+=ZR26(ZA[1]); +ZA[16]+=ZR15(ZA[7]); +ZA[16]+=ZA[0]; +ZA[16]+=ZR25(ZA[23]); + +ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); +ZA[3]+=ZR30(ZA[8]); + +ZA[15]+=ZA[10]; +ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); +ZA[12]+=ZA[4]; +ZA[12]+=0x1e376c08U; +ZA[12]+=ZR26(ZA[15]); +ZA[23]+=ZR15(ZA[4]); +ZA[23]+=ZA[6]; +ZA[23]+=ZR25(ZA[20]); + +ZA[10]+=ZMa(ZA[8],ZA[13],ZA[3]); +ZA[10]+=ZR30(ZA[3]); + +ZA[13]+=ZA[12]; +ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); +ZA[9]+=ZA[16]; +ZA[9]+=0x2748774cU; +ZA[9]+=ZR26(ZA[13]); +ZA[20]+=ZR15(ZA[16]); ZA[20]+=ZA[11]; -ZA[20]+=0xc76c51a3U; -ZA[20]+=ZR26(ZA[23]); -ZA[14]+=ZR15(ZA[11]); -ZA[14]+=ZA[4]; -ZA[14]+=ZR25(ZA[16]); - -ZA[24]=ZA[20]; -ZA[24]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[19]; -ZA[2]+=ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); -ZA[21]+=ZA[6]; -ZA[21]+=0xd192e819U; -ZA[21]+=ZR26(ZA[24]); -ZA[16]+=ZR15(ZA[6]); -ZA[16]+=ZA[3]; -ZA[16]+=ZR25(ZA[22]); - -ZA[19]=ZA[21]; -ZA[19]+=ZA[7]; - -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[20]; -ZA[7]+=ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); -ZA[18]+=ZA[14]; -ZA[18]+=0xd6990624U; -ZA[18]+=ZR26(ZA[19]); -ZA[22]+=ZR15(ZA[14]); -ZA[22]+=ZA[13]; -ZA[22]+=ZR25(ZA[9]); +ZA[20]+=ZR25(ZA[21]); -ZA[20]=ZA[18]; -ZA[20]+=ZA[8]; +ZA[12]+=ZMa(ZA[3],ZA[8],ZA[10]); +ZA[12]+=ZR30(ZA[10]); -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[21]; -ZA[8]+=ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[20],ZA[19],ZA[24]); -ZA[23]+=ZA[16]; -ZA[23]+=0xf40e3585U; -ZA[23]+=ZR26(ZA[20]); -ZA[9]+=ZR15(ZA[16]); -ZA[9]+=ZA[15]; -ZA[9]+=ZR25(ZA[5]); - -ZA[21]=ZA[23]; -ZA[21]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[18]; -ZA[2]+=ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[21],ZA[20],ZA[19]); +ZA[8]+=ZA[9]; +ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); +ZA[1]+=ZA[23]; +ZA[1]+=0x34b0bcb5U; +ZA[1]+=ZR26(ZA[8]); +ZA[21]+=ZR15(ZA[23]); +ZA[21]+=ZA[5]; +ZA[21]+=ZR25(ZA[24]); + +ZA[9]+=ZMa(ZA[10],ZA[3],ZA[12]); +ZA[9]+=ZR30(ZA[12]); + +ZA[3]+=ZA[1]; +ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); +ZA[15]+=ZA[20]; +ZA[15]+=0x391c0cb3U; +ZA[15]+=ZR26(ZA[3]); +ZA[24]+=ZR15(ZA[20]); ZA[24]+=ZA[22]; -ZA[24]+=0x106aa070U; -ZA[24]+=ZR26(ZA[21]); -ZA[5]+=ZR15(ZA[22]); -ZA[5]+=ZA[10]; -ZA[5]+=ZR25(ZA[12]); +ZA[24]+=ZR25(ZA[14]); -ZA[18]=ZA[24]; -ZA[18]+=ZA[7]; +ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); +ZA[1]+=ZR30(ZA[9]); -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[23]; -ZA[7]+=ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[18],ZA[21],ZA[20]); -ZA[19]+=ZA[9]; -ZA[19]+=0x19a4c116U; -ZA[19]+=ZR26(ZA[18]); -ZA[12]+=ZR15(ZA[9]); -ZA[12]+=ZA[11]; -ZA[12]+=ZR25(ZA[1]); - -ZA[23]=ZA[19]; -ZA[23]+=ZA[8]; - -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[24]; -ZA[8]+=ZR30(ZA[7]); -ZA[20]+=ZCh(ZA[23],ZA[18],ZA[21]); -ZA[20]+=ZA[5]; -ZA[20]+=0x1e376c08U; -ZA[20]+=ZR26(ZA[23]); -ZA[1]+=ZR15(ZA[5]); -ZA[1]+=ZA[6]; -ZA[1]+=ZR25(ZA[0]); - -ZA[24]=ZA[20]; -ZA[24]+=ZA[2]; - -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[19]; -ZA[2]+=ZR30(ZA[8]); -ZA[21]+=ZCh(ZA[24],ZA[23],ZA[18]); -ZA[21]+=ZA[12]; -ZA[21]+=0x2748774cU; -ZA[21]+=ZR26(ZA[24]); -ZA[0]+=ZR15(ZA[12]); -ZA[0]+=ZA[14]; -ZA[0]+=ZR25(ZA[17]); - -ZA[19]=ZA[21]; -ZA[19]+=ZA[7]; - -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[20]; -ZA[7]+=ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[19],ZA[24],ZA[23]); -ZA[18]+=ZA[1]; -ZA[18]+=0x34b0bcb5U; -ZA[18]+=ZR26(ZA[19]); -ZA[17]+=ZR15(ZA[1]); -ZA[17]+=ZA[16]; -ZA[17]+=ZR25(ZA[4]); +ZA[10]+=ZA[15]; +ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); +ZA[13]+=ZA[21]; +ZA[13]+=0x4ed8aa4aU; +ZA[13]+=ZR26(ZA[10]); +ZA[7]+=ZR15(ZA[21]); +ZA[7]+=ZR25(ZA[19]); +ZA[7]+=ZA[14]; -ZA[16]=ZA[18]; -ZA[16]+=ZA[8]; +ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); +ZA[15]+=ZR30(ZA[1]); -ZA[8]=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[8]+=ZA[21]; -ZA[8]+=ZR30(ZA[7]); -ZA[23]+=ZCh(ZA[16],ZA[19],ZA[24]); -ZA[23]+=ZA[0]; -ZA[23]+=0x391c0cb3U; -ZA[23]+=ZR26(ZA[16]); -ZA[4]+=ZR15(ZA[0]); -ZA[4]+=ZA[22]; -ZA[4]+=ZR25(ZA[3]); +ZA[12]+=ZA[13]; +ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); +ZA[8]+=ZA[24]; +ZA[8]+=0x5b9cca4fU; +ZA[8]+=ZR26(ZA[12]); +ZA[19]+=ZR15(ZA[24]); +ZA[19]+=ZA[4]; +ZA[19]+=ZR25(ZA[2]); -ZA[22]=ZA[23]; -ZA[22]+=ZA[2]; +ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); +ZA[13]+=ZR30(ZA[15]); -ZA[2]=ZMa(ZA[7],ZA[2],ZA[8]); -ZA[2]+=ZA[18]; -ZA[2]+=ZR30(ZA[8]); -ZA[24]+=ZCh(ZA[22],ZA[16],ZA[19]); -ZA[24]+=ZA[17]; -ZA[24]+=0x4ed8aa4aU; -ZA[24]+=ZR26(ZA[22]); -ZA[9]+=ZR15(ZA[17]); -ZA[9]+=ZR25(ZA[13]); -ZA[9]+=ZA[3]; - -ZA[3]=ZA[24]; +ZA[9]+=ZA[8]; +ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); ZA[3]+=ZA[7]; +ZA[3]+=0x682e6ff3U; +ZA[3]+=ZR26(ZA[9]); +ZA[16]+=ZR15(ZA[7]); +ZA[16]+=ZR25(ZA[17]); +ZA[16]+=ZA[2]; -ZA[7]=ZMa(ZA[8],ZA[7],ZA[2]); -ZA[7]+=ZA[23]; -ZA[7]+=ZR30(ZA[2]); -ZA[19]+=ZCh(ZA[3],ZA[22],ZA[16]); -ZA[19]+=ZA[4]; -ZA[19]+=0x5b9cca4fU; -ZA[19]+=ZR26(ZA[3]); -ZA[13]+=ZR15(ZA[4]); -ZA[13]+=ZA[5]; -ZA[13]+=ZR25(ZA[15]); - -ZA[4]=ZA[8]; -ZA[4]+=ZA[19]; - -ZA[5]=ZA[24]; -ZA[5]+=ZMa(ZA[2],ZA[8],ZA[7]); -ZA[5]+=ZR30(ZA[7]); -ZA[16]+=ZCh(ZA[4],ZA[3],ZA[22]); -ZA[16]+=ZA[9]; -ZA[16]+=0x682e6ff3U; -ZA[16]+=ZR26(ZA[4]); -ZA[12]+=ZR15(ZA[9]); -ZA[12]+=ZR25(ZA[10]); -ZA[12]+=ZA[15]; - -ZA[15]=ZA[2]; -ZA[15]+=ZA[16]; - -ZA[9]=ZA[19]; -ZA[9]+=ZMa(ZA[7],ZA[2],ZA[5]); -ZA[9]+=ZR30(ZA[5]); -ZA[22]+=ZCh(ZA[15],ZA[4],ZA[3]); -ZA[22]+=ZA[13]; -ZA[22]+=0x748f82eeU; -ZA[22]+=ZR26(ZA[15]); +ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); +ZA[8]+=ZR30(ZA[13]); -ZA[13]=ZR15(ZA[13]); -ZA[13]+=ZA[10]; -ZA[13]+=ZA[1]; -ZA[13]+=ZR25(ZA[11]); +ZA[1]+=ZA[3]; +ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); +ZA[10]+=ZA[19]; +ZA[10]+=0x748f82eeU; +ZA[10]+=ZR26(ZA[1]); -ZA[10]=ZA[7]; -ZA[10]+=ZA[22]; +ZA[17]+=ZR15(ZA[19]); +ZA[17]+=ZA[23]; +ZA[17]+=ZR25(ZA[0]); -ZA[1]=ZA[16]; -ZA[1]+=ZMa(ZA[5],ZA[7],ZA[9]); -ZA[1]+=ZR30(ZA[9]); -ZA[3]+=ZCh(ZA[10],ZA[15],ZA[4]); -ZA[3]+=ZA[5]; -ZA[3]+=ZA[12]; -ZA[3]+=0x78a5636fU; -ZA[3]+=ZR26(ZA[10]); -ZA[4]+=ZR26(ZA[3]); -ZA[4]+=ZCh(ZA[3],ZA[10],ZA[15]); -ZA[4]+=ZA[9]; -ZA[4]+=ZA[13]; -ZA[4]+=0x84c87814U; -ZA[15]+=ZR26(ZA[4]); -ZA[15]+=ZCh(ZA[4],ZA[3],ZA[10]); -ZA[15]+=ZA[1]; -ZA[15]+=ZR15(ZA[12]); -ZA[15]+=ZA[0]; -ZA[15]+=ZR25(ZA[6]); -ZA[15]+=ZA[11]; -ZA[15]+=0x8cc70208U; +ZA[3]+=ZR30(ZA[8]); +ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); +ZA[15]+=ZA[10]; +ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); +ZA[12]+=ZA[13]; +ZA[12]+=ZA[16]; +ZA[12]+=0x78a5636fU; +ZA[12]+=ZR26(ZA[15]); +ZA[9]+=ZR26(ZA[12]); +ZA[9]+=ZCh(ZA[12],ZA[15],ZA[1]); +ZA[9]+=ZA[8]; +ZA[9]+=ZA[17]; +ZA[9]+=0x84c87814U; +ZA[1]+=ZR26(ZA[9]); +ZA[1]+=ZCh(ZA[9],ZA[12],ZA[15]); +ZA[1]+=ZA[3]; +ZA[1]+=ZR15(ZA[16]); +ZA[1]+=ZA[20]; +ZA[1]+=ZR25(ZA[6]); +ZA[1]+=ZA[0]; +ZA[1]+=0x8cc70208U; #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS2) || defined(VECTORS4) -ZA[10]+=ZR26(ZA[15]); -ZA[10]+=ZCh(ZA[15],ZA[4],ZA[3]); -ZA[10]+=ZA[22]; -ZA[10]+=ZMa(ZA[9],ZA[5],ZA[1]); -ZA[10]+=ZR30(ZA[1]); -ZA[10]+=ZR15(ZA[13]); -ZA[10]+=ZA[17]; -ZA[10]+=ZR25(ZA[14]); -ZA[10]+=ZA[6]; +ZA[15]+=ZR26(ZA[1]); +ZA[15]+=ZCh(ZA[1],ZA[9],ZA[12]); +ZA[15]+=ZA[10]; +ZA[15]+=ZMa(ZA[8],ZA[13],ZA[3]); +ZA[15]+=ZR30(ZA[3]); +ZA[15]+=ZR15(ZA[17]); +ZA[15]+=ZA[21]; +ZA[15]+=ZR25(ZA[11]); +ZA[15]+=ZA[6]; - if (any(ZA[10] == 0x136032EDU)) { - if (ZA[10].x == 0x136032EDU) + if (any(ZA[15] == 0x136032EDU)) { + if (ZA[15].x == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[10].y == 0x136032EDU) + if (ZA[15].y == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; #if defined(VECTORS4) - if (ZA[10].z == 0x136032EDU) + if (ZA[15].z == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z; - if (ZA[10].w == 0x136032EDU) + if (ZA[15].w == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w; #endif } #else - if (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) + if (ZA[15]+(ZCh(ZA[1],ZA[9],ZA[12])+ZA[10]+ZMa(ZA[8],ZA[13],ZA[3])+ + ZR30(ZA[3])+ZR15(ZA[17])+ZA[21]+ZR25(ZA[11])+ZA[6])+ZR26(ZA[1]) == 0x136032EDU) output[FOUND] = output[NFLAG & Znonce] = Znonce; #endif } From c137c505a60c7eaedb59357d6cc510c0baeb0b07 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 01:46:07 +1100 Subject: [PATCH 051/117] Diablo tidy. --- diablo120222.cl | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/diablo120222.cl b/diablo120222.cl index 8e74e06a..49c4b96f 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -218,7 +218,6 @@ ZA[15]=ZMa(ZA[8],ZA[12],ZA[14]); ZA[15]+=ZR30(ZA[14]); ZA[15]+=ZA[5]; ZA[5]+=ZA[6]; - ZA[7]+=ZCh(ZA[5],ZA[4],ZA[10]); ZA[7]+=ZA[13]; ZA[7]+=0x5cb0a9dcU; @@ -243,7 +242,6 @@ ZA[17]=ZA[10]; ZA[17]+=ZMa(ZA[15],ZA[14],ZA[16]); ZA[17]+=ZR30(ZA[16]); ZA[10]+=ZA[8]; - ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]); ZA[4]+=ZA[6]; ZA[4]+=0x983e5152U; @@ -266,7 +264,6 @@ ZA[18]=ZMa(ZA[17],ZA[16],ZA[4]); ZA[18]+=ZR30(ZA[4]); ZA[18]+=ZA[5]; ZA[5]+=ZA[15]; - ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); ZA[7]+=ZA[8]; ZA[7]+=0xb00327c8U; @@ -279,7 +276,6 @@ ZA[19]=ZA[7]; ZA[19]+=ZMa(ZA[4],ZA[17],ZA[18]); ZA[19]+=ZR30(ZA[18]); ZA[7]+=ZA[16]; - ZA[10]+=ZCh(ZA[7],ZA[5],ZA[14]); ZA[10]+=ZA[9]; ZA[10]+=0xbf597fc7U; @@ -318,7 +314,6 @@ ZA[22]=ZA[5]; ZA[22]+=ZMa(ZA[20],ZA[19],ZA[21]); ZA[22]+=ZR30(ZA[21]); ZA[5]+=ZA[18]; - ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); ZA[7]+=ZA[17]; ZA[7]+=0x06ca6351U; @@ -621,7 +616,6 @@ ZA[1]+=ZR25(ZA[15]); ZA[1]+=ZA[9]; ZA[22]+=ZA[24]; - ZA[24]+=ZMa(ZA[10],ZA[7],ZA[14]); ZA[24]+=ZR30(ZA[14]); @@ -651,7 +645,6 @@ ZA[23]+=ZCh(ZA[10],ZA[7],ZA[22]); ZA[23]+=ZA[2]; ZA[23]+=0x90befffaU; ZA[23]+=ZR26(ZA[10]); - ZA[14]+=ZA[23]; ZA[23]+=ZMa(ZA[21],ZA[24],ZA[20]); ZA[23]+=ZR30(ZA[20]); @@ -659,7 +652,6 @@ ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); ZA[22]+=ZA[13]; ZA[22]+=0xa4506cebU; ZA[22]+=ZR26(ZA[14]); - ZA[16]=ZA[22]; ZA[16]+=ZMa(ZA[20],ZA[21],ZA[23]); ZA[16]+=ZR30(ZA[23]); @@ -963,7 +955,6 @@ ZA[6]+=ZA[21]; ZA[8]=ZA[9]; ZA[8]+=ZA[5]; - ZA[12]+=ZMa(ZA[22],ZA[5],ZA[10]); ZA[12]+=ZR30(ZA[10]); ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); @@ -976,7 +967,6 @@ ZA[11]+=ZA[24]; ZA[3]=ZA[1]; ZA[3]+=ZA[22]; - ZA[9]+=ZMa(ZA[10],ZA[22],ZA[12]); ZA[9]+=ZR30(ZA[12]); ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); From e1d580be702741646d348619c1c5c2e759f61369 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 09:49:50 +1100 Subject: [PATCH 052/117] Tidy up first half of poclbm. --- poclbm120222.cl | 156 ++++++++++++++++++++++++++++++------------------ 1 file changed, 98 insertions(+), 58 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index f006112d..7a4439f2 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -106,6 +106,7 @@ Vals[6]=Vals[2]; Vals[6]+=g1; Vals[3]+=Ma2(g1,Vals[4],f1); Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma2(f1,Vals[3],Vals[4]); Vals[1]=B1addK6; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); @@ -113,74 +114,86 @@ Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[5]=Vals[1]; Vals[5]+=f1; -Vals[2]+=Ma2(f1,Vals[3],Vals[4]); + Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[7]; -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[8]; Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[9]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[10]; Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[11]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[12]; Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[13]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[14]; Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=0xC19BF3F4U; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=W16addK16; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=W17addK17; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); W[2]=(rotr(nonce,7)^rotr(nonce,18)^(nonce>>3U)); W[2]+=fw2; @@ -188,7 +201,6 @@ Vals[5]+=W[2]; Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[18]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); @@ -201,6 +213,7 @@ Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[19]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); W[4]=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); W[4]+=0x80000000U; @@ -208,7 +221,6 @@ Vals[3]+=W[4]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[20]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); @@ -220,6 +232,7 @@ Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[21]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); W[6]=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); W[6]+=0x00000280U; @@ -227,7 +240,6 @@ Vals[1]+=W[6]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[22]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); @@ -238,9 +250,9 @@ Vals[0]+=W[7]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[23]; - Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[8]=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); W[8]+=fw1; @@ -248,7 +260,6 @@ Vals[7]+=W[8]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[24]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); @@ -259,9 +270,9 @@ Vals[6]+=W[9]; Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[25]; - Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); W[10]=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); @@ -269,7 +280,6 @@ Vals[5]+=W[10]; Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[26]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); @@ -282,6 +292,7 @@ Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[27]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); W[12]=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); @@ -289,7 +300,6 @@ Vals[3]+=W[12]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[28]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); @@ -302,6 +312,7 @@ Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[29]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); W[14]=0x00a00055U; W[14]+=W[7]; @@ -310,7 +321,6 @@ Vals[1]+=W[14]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[30]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); @@ -324,6 +334,7 @@ Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[31]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[0]=fw01r; W[0]+=W[9]; @@ -332,7 +343,6 @@ Vals[7]+=W[0]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=K[32]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); @@ -347,303 +357,333 @@ Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[33]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; +W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); Vals[5]+=K[34]; Vals[5]+=W[2]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; +W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[35]; -W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); Vals[4]+=W[3]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; +W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); Vals[3]+=K[36]; Vals[3]+=W[4]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; +W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[37]; -W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); Vals[2]+=W[5]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; +W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); Vals[1]+=K[38]; Vals[1]+=W[6]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; +W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[39]; -W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); Vals[0]+=W[7]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; +W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); Vals[7]+=K[40]; Vals[7]+=W[8]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; +W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[41]; -W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); Vals[6]+=W[9]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; +W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); Vals[5]+=K[42]; Vals[5]+=W[10]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; +W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[43]; -W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=W[11]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; +W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); Vals[3]+=K[44]; Vals[3]+=W[12]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); W[13]+=W[6]; +W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[45]; -W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); Vals[2]+=W[13]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; +W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); Vals[1]+=K[46]; Vals[1]+=W[14]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; +W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[47]; -W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); Vals[0]+=W[15]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); W[0]+=W[9]; +W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); Vals[7]+=K[48]; Vals[7]+=W[0]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; +W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[49]; -W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); Vals[6]+=W[1]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; +W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); Vals[5]+=K[50]; Vals[5]+=W[2]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; +W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[51]; -W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); Vals[4]+=W[3]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; +W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); Vals[3]+=K[52]; Vals[3]+=W[4]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; +W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[53]; -W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); Vals[2]+=W[5]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; +W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); Vals[1]+=K[54]; Vals[1]+=W[6]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; +W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[55]; -W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); Vals[0]+=W[7]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; +W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); Vals[7]+=K[56]; Vals[7]+=W[8]; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; +W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[57]; -W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); Vals[6]+=W[9]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; +W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); Vals[5]+=K[58]; Vals[5]+=W[10]; -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; +W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[59]; -W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=W[11]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; +W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); Vals[3]+=K[60]; Vals[3]+=W[12]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); W[13]+=W[6]; +W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[61]; -W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); Vals[2]+=W[13]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; +W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); Vals[1]+=K[62]; Vals[1]+=W[14]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; +W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[63]; -W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); Vals[0]+=W[15]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); From 00796251e8d3884cd5837110995f60df1a941051 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 10:07:11 +1100 Subject: [PATCH 053/117] More tidying of poclbm. --- poclbm120222.cl | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index 7a4439f2..7d27d7fb 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -94,6 +94,7 @@ Vals[3]+=D1A; Vals[7]=Vals[3]; Vals[7]+=h1; + Vals[4]=PreVal4addT1; Vals[4]+=nonce; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); @@ -690,12 +691,12 @@ Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); W[0]=Vals[0]; +W[0]+=state0; W[7]=state7; W[7]+=Vals[7]; Vals[7]=0xF377ED68U; -W[0]+=state0; Vals[7]+=W[0]; W[3]=state3; @@ -703,9 +704,7 @@ W[3]+=Vals[3]; Vals[3]=0xa54ff53aU; Vals[3]+=Vals[7]; - -W[1]=Vals[1]; -W[1]+=state1; +Vals[7]+=0x08909ae5U; W[6]=state6; W[6]+=Vals[6]; @@ -714,14 +713,17 @@ Vals[6]=0x90BB1E3CU; Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=(0x9b05688cU^(Vals[3]&0xca0b3af3U)); +W[1]=Vals[1]; +W[1]+=state1; +Vals[6]+=W[1]; + W[2]=state2; W[2]+=Vals[2]; Vals[2]=0x3c6ef372U; -Vals[6]+=W[1]; Vals[2]+=Vals[6]; -Vals[7]+=0x08909ae5U; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma2(0xbb67ae85U,Vals[7],0x6a09e667U); W[5]=state5; W[5]+=Vals[5]; @@ -733,8 +735,8 @@ Vals[5]+=W[2]; Vals[1]=0xbb67ae85U; Vals[1]+=Vals[5]; -Vals[6]+=Ma2(0xbb67ae85U,Vals[7],0x6a09e667U); Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma2(0x6a09e667U,Vals[6],Vals[7]); W[4]=state4; W[4]+=Vals[4]; @@ -746,79 +748,91 @@ Vals[4]+=W[3]; Vals[0]=Vals[4]; Vals[0]+=0x6a09e667U; -Vals[5]+=Ma2(0x6a09e667U,Vals[6],Vals[7]); + Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[4]; Vals[3]+=W[4]; -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[5]; Vals[2]+=W[5]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[6]; Vals[1]+=W[6]; -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=K[7]; Vals[0]+=W[7]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); Vals[7]+=0x5807AA98U; -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); Vals[6]+=K[9]; Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); Vals[5]+=K[10]; Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); Vals[4]+=K[11]; Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); Vals[3]+=K[12]; Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); Vals[2]+=K[13]; Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); Vals[1]+=K[14]; Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); Vals[0]+=0xC19BF274U; From 0af7bbd74ff76a380c010b731e2f556aee821521 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 10:09:10 +1100 Subject: [PATCH 054/117] Swap Vals and W variables where they can overlap in poclbm. --- poclbm120222.cl | 1198 +++++++++++++++++++++++------------------------ 1 file changed, 595 insertions(+), 603 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index 7d27d7fb..5748b6cd 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -690,657 +690,649 @@ Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); -W[0]=Vals[0]; -W[0]+=state0; +Vals[0]+=state0; + +Vals[7]+=state7; + +W[7]=0xF377ED68U; +W[7]+=Vals[0]; + +Vals[3]+=state3; + +W[3]=0xa54ff53aU; +W[3]+=W[7]; +W[7]+=0x08909ae5U; + +Vals[6]+=state6; + +W[6]=0x90BB1E3CU; +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=(0x9b05688cU^(W[3]&0xca0b3af3U)); + +Vals[1]+=state1; +W[6]+=Vals[1]; + +Vals[2]+=state2; + +W[2]=0x3c6ef372U; +W[2]+=W[6]; +W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); +W[6]+=Ma2(0xbb67ae85U,W[7],0x6a09e667U); + +Vals[5]+=state5; + +W[5]=0x50C6645BU; +W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); +W[5]+=ch(W[2],W[3],0x510e527fU); +W[5]+=Vals[2]; + +W[1]=0xbb67ae85U; +W[1]+=W[5]; +W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); +W[5]+=Ma2(0x6a09e667U,W[6],W[7]); + +Vals[4]+=state4; + +W[4]=0x3AC42E24U; +W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); +W[4]+=ch(W[1],W[2],W[3]); +W[4]+=Vals[3]; + +W[0]=W[4]; +W[0]+=0x6a09e667U; + +W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); +W[4]+=Ma(W[7],W[5],W[6]); + +W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); +W[3]+=ch(W[0],W[1],W[2]); +W[3]+=K[4]; +W[3]+=Vals[4]; +W[7]+=W[3]; +W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); +W[3]+=Ma(W[6],W[4],W[5]); + +W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); +W[2]+=ch(W[7],W[0],W[1]); +W[2]+=K[5]; +W[2]+=Vals[5]; +W[6]+=W[2]; +W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); +W[2]+=Ma(W[5],W[3],W[4]); + +W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[1]+=ch(W[6],W[7],W[0]); +W[1]+=K[6]; +W[1]+=Vals[6]; +W[5]+=W[1]; +W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); +W[1]+=Ma(W[4],W[2],W[3]); + +W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[0]+=ch(W[5],W[6],W[7]); +W[0]+=K[7]; +W[0]+=Vals[7]; +W[4]+=W[0]; +W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); +W[0]+=Ma(W[3],W[1],W[2]); + +W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); +W[7]+=ch(W[4],W[5],W[6]); +W[7]+=0x5807AA98U; +W[3]+=W[7]; +W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); +W[7]+=Ma(W[2],W[0],W[1]); + +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=ch(W[3],W[4],W[5]); +W[6]+=K[9]; +W[2]+=W[6]; +W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); +W[6]+=Ma(W[1],W[7],W[0]); + +W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); +W[5]+=ch(W[2],W[3],W[4]); +W[5]+=K[10]; +W[1]+=W[5]; +W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); +W[5]+=Ma(W[0],W[6],W[7]); + +W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); +W[4]+=ch(W[1],W[2],W[3]); +W[4]+=K[11]; +W[0]+=W[4]; +W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); +W[4]+=Ma(W[7],W[5],W[6]); + +W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); +W[3]+=ch(W[0],W[1],W[2]); +W[3]+=K[12]; +W[7]+=W[3]; +W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); +W[3]+=Ma(W[6],W[4],W[5]); + +W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); +W[2]+=ch(W[7],W[0],W[1]); +W[2]+=K[13]; +W[6]+=W[2]; +W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); +W[2]+=Ma(W[5],W[3],W[4]); + +W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[1]+=ch(W[6],W[7],W[0]); +W[1]+=K[14]; +W[5]+=W[1]; +W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); +W[1]+=Ma(W[4],W[2],W[3]); + +W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[0]+=ch(W[5],W[6],W[7]); +W[0]+=0xC19BF274U; +W[4]+=W[0]; +W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); +W[0]+=Ma(W[3],W[1],W[2]); + +Vals[0]+=(rotr(Vals[1],7)^rotr(Vals[1],18)^(Vals[1]>>3U)); +W[7]+=Vals[0]; +W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); +W[7]+=ch(W[4],W[5],W[6]); +W[7]+=K[16]; +W[3]+=W[7]; +W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); +W[7]+=Ma(W[2],W[0],W[1]); + +Vals[1]+=(rotr(Vals[2],7)^rotr(Vals[2],18)^(Vals[2]>>3U)); +Vals[1]+=0x00a00000U; +W[6]+=Vals[1]; +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=ch(W[3],W[4],W[5]); +W[6]+=K[17]; +W[2]+=W[6]; +W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); +W[6]+=Ma(W[1],W[7],W[0]); + +Vals[2]+=(rotr(Vals[3],7)^rotr(Vals[3],18)^(Vals[3]>>3U)); +Vals[2]+=(rotr(Vals[0],17)^rotr(Vals[0],19)^(Vals[0]>>10U)); +W[5]+=Vals[2]; +W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); +W[5]+=ch(W[2],W[3],W[4]); +W[5]+=K[18]; +W[1]+=W[5]; +W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); +W[5]+=Ma(W[0],W[6],W[7]); + +Vals[3]+=(rotr(Vals[4],7)^rotr(Vals[4],18)^(Vals[4]>>3U)); +Vals[3]+=(rotr(Vals[1],17)^rotr(Vals[1],19)^(Vals[1]>>10U)); +W[4]+=Vals[3]; +W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); +W[4]+=ch(W[1],W[2],W[3]); +W[4]+=K[19]; +W[0]+=W[4]; +W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); +W[4]+=Ma(W[7],W[5],W[6]); + +Vals[4]+=(rotr(Vals[5],7)^rotr(Vals[5],18)^(Vals[5]>>3U)); +Vals[4]+=(rotr(Vals[2],17)^rotr(Vals[2],19)^(Vals[2]>>10U)); +W[3]+=Vals[4]; +W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); +W[3]+=ch(W[0],W[1],W[2]); +W[3]+=K[20]; +W[7]+=W[3]; +W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); +W[3]+=Ma(W[6],W[4],W[5]); + +Vals[5]+=(rotr(Vals[6],7)^rotr(Vals[6],18)^(Vals[6]>>3U)); +Vals[5]+=(rotr(Vals[3],17)^rotr(Vals[3],19)^(Vals[3]>>10U)); +W[2]+=Vals[5]; +W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); +W[2]+=ch(W[7],W[0],W[1]); +W[2]+=K[21]; +W[6]+=W[2]; +W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); +W[2]+=Ma(W[5],W[3],W[4]); + +Vals[6]+=(rotr(Vals[7],7)^rotr(Vals[7],18)^(Vals[7]>>3U)); +Vals[6]+=0x00000100U; +Vals[6]+=(rotr(Vals[4],17)^rotr(Vals[4],19)^(Vals[4]>>10U)); +W[1]+=Vals[6]; +W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[1]+=ch(W[6],W[7],W[0]); +W[1]+=K[22]; +W[5]+=W[1]; +W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); +W[1]+=Ma(W[4],W[2],W[3]); + +Vals[7]+=0x11002000U; +Vals[7]+=Vals[0]; +Vals[7]+=(rotr(Vals[5],17)^rotr(Vals[5],19)^(Vals[5]>>10U)); +W[0]+=Vals[7]; +W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[0]+=ch(W[5],W[6],W[7]); +W[0]+=K[23]; +W[4]+=W[0]; +W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); +W[0]+=Ma(W[3],W[1],W[2]); -W[7]=state7; -W[7]+=Vals[7]; - -Vals[7]=0xF377ED68U; -Vals[7]+=W[0]; - -W[3]=state3; -W[3]+=Vals[3]; - -Vals[3]=0xa54ff53aU; -Vals[3]+=Vals[7]; -Vals[7]+=0x08909ae5U; - -W[6]=state6; -W[6]+=Vals[6]; - -Vals[6]=0x90BB1E3CU; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=(0x9b05688cU^(Vals[3]&0xca0b3af3U)); - -W[1]=Vals[1]; -W[1]+=state1; -Vals[6]+=W[1]; - -W[2]=state2; -W[2]+=Vals[2]; - -Vals[2]=0x3c6ef372U; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma2(0xbb67ae85U,Vals[7],0x6a09e667U); - -W[5]=state5; -W[5]+=Vals[5]; - -Vals[5]=0x50C6645BU; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],0x510e527fU); -Vals[5]+=W[2]; - -Vals[1]=0xbb67ae85U; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma2(0x6a09e667U,Vals[6],Vals[7]); - -W[4]=state4; -W[4]+=Vals[4]; - -Vals[4]=0x3AC42E24U; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=W[3]; - -Vals[0]=Vals[4]; -Vals[0]+=0x6a09e667U; - -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[4]; -Vals[3]+=W[4]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[5]; -Vals[2]+=W[5]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[6]; -Vals[1]+=W[6]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[7]; -Vals[0]+=W[7]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=0x5807AA98U; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[9]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[10]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); - -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[11]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[12]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[13]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[14]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=0xC19BF274U; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); -Vals[7]+=W[0]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[16]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); -W[1]+=0x00a00000U; -Vals[6]+=W[1]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[17]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - -W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); -W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=W[2]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[18]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); - -W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); -W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=W[3]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[19]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - -W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); -W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=W[4]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[20]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); -W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=W[5]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[21]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); -W[6]+=0x00000100U; -W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=W[6]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[22]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - -W[7]+=0x11002000U; -W[7]+=W[0]; -W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=W[7]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[23]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -W[8]=0x80000000U; -W[8]+=W[1]; -W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=W[8]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[24]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -W[9]=W[2]; -W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=W[9]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[25]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - -W[10]=W[3]; -W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=W[10]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[26]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); - -W[11]=W[4]; -W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=W[11]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[27]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - -W[12]=W[5]; -W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[3]+=W[12]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[28]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -W[13]=W[6]; -W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -Vals[2]+=W[13]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[29]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -W[14]=0x00400022U; -W[14]+=W[7]; -W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -Vals[1]+=W[14]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[30]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - -W[15]=0x00000100U; -W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); -W[15]+=W[8]; -W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -Vals[0]+=W[15]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[31]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); -W[0]+=W[9]; -W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -Vals[7]+=W[0]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[32]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); -W[1]+=W[10]; -W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -Vals[6]+=W[1]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[33]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - -W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); -W[2]+=W[11]; -W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=W[2]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[34]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); - -W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); +W[8]=0x80000000U; +W[8]+=Vals[1]; +W[8]+=(rotr(Vals[6],17)^rotr(Vals[6],19)^(Vals[6]>>10U)); +W[7]+=W[8]; +W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); +W[7]+=ch(W[4],W[5],W[6]); +W[7]+=K[24]; +W[3]+=W[7]; +W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); +W[7]+=Ma(W[2],W[0],W[1]); + +W[9]=Vals[2]; +W[9]+=(rotr(Vals[7],17)^rotr(Vals[7],19)^(Vals[7]>>10U)); +W[6]+=W[9]; +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=ch(W[3],W[4],W[5]); +W[6]+=K[25]; +W[2]+=W[6]; +W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); +W[6]+=Ma(W[1],W[7],W[0]); + +W[10]=Vals[3]; +W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); +W[5]+=W[10]; +W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); +W[5]+=ch(W[2],W[3],W[4]); +W[5]+=K[26]; +W[1]+=W[5]; +W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); +W[5]+=Ma(W[0],W[6],W[7]); + +W[11]=Vals[4]; +W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +W[4]+=W[11]; +W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); +W[4]+=ch(W[1],W[2],W[3]); +W[4]+=K[27]; +W[0]+=W[4]; +W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); +W[4]+=Ma(W[7],W[5],W[6]); + +W[12]=Vals[5]; +W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); W[3]+=W[12]; -W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=W[3]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[35]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - -W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); -W[4]+=W[13]; -W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=W[4]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[36]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); -W[5]+=W[14]; -W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=W[5]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[37]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); +W[3]+=ch(W[0],W[1],W[2]); +W[3]+=K[28]; +W[7]+=W[3]; +W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); +W[3]+=Ma(W[6],W[4],W[5]); + +W[13]=Vals[6]; +W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); +W[2]+=W[13]; +W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); +W[2]+=ch(W[7],W[0],W[1]); +W[2]+=K[29]; +W[6]+=W[2]; +W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); +W[2]+=Ma(W[5],W[3],W[4]); -W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); -W[6]+=W[15]; -W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=W[6]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[38]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +W[14]=0x00400022U; +W[14]+=Vals[7]; +W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); +W[1]+=W[14]; +W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[1]+=ch(W[6],W[7],W[0]); +W[1]+=K[30]; +W[5]+=W[1]; +W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); +W[1]+=Ma(W[4],W[2],W[3]); -W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); -W[7]+=W[0]; -W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=W[7]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[39]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +W[15]=0x00000100U; +W[15]+=(rotr(Vals[0],7)^rotr(Vals[0],18)^(Vals[0]>>3U)); +W[15]+=W[8]; +W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); +W[0]+=W[15]; +W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[0]+=ch(W[5],W[6],W[7]); +W[0]+=K[31]; +W[4]+=W[0]; +W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); +W[0]+=Ma(W[3],W[1],W[2]); + +Vals[0]+=(rotr(Vals[1],7)^rotr(Vals[1],18)^(Vals[1]>>3U)); +Vals[0]+=W[9]; +Vals[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); +W[7]+=Vals[0]; +W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); +W[7]+=ch(W[4],W[5],W[6]); +W[7]+=K[32]; +W[3]+=W[7]; +W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); +W[7]+=Ma(W[2],W[0],W[1]); + +Vals[1]+=(rotr(Vals[2],7)^rotr(Vals[2],18)^(Vals[2]>>3U)); +Vals[1]+=W[10]; +Vals[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); +W[6]+=Vals[1]; +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=ch(W[3],W[4],W[5]); +W[6]+=K[33]; +W[2]+=W[6]; +W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); +W[6]+=Ma(W[1],W[7],W[0]); + +Vals[2]+=(rotr(Vals[3],7)^rotr(Vals[3],18)^(Vals[3]>>3U)); +Vals[2]+=W[11]; +Vals[2]+=(rotr(Vals[0],17)^rotr(Vals[0],19)^(Vals[0]>>10U)); +W[5]+=Vals[2]; +W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); +W[5]+=ch(W[2],W[3],W[4]); +W[5]+=K[34]; +W[1]+=W[5]; +W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); +W[5]+=Ma(W[0],W[6],W[7]); + +Vals[3]+=(rotr(Vals[4],7)^rotr(Vals[4],18)^(Vals[4]>>3U)); +Vals[3]+=W[12]; +Vals[3]+=(rotr(Vals[1],17)^rotr(Vals[1],19)^(Vals[1]>>10U)); +W[4]+=Vals[3]; +W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); +W[4]+=ch(W[1],W[2],W[3]); +W[4]+=K[35]; +W[0]+=W[4]; +W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); +W[4]+=Ma(W[7],W[5],W[6]); + +Vals[4]+=(rotr(Vals[5],7)^rotr(Vals[5],18)^(Vals[5]>>3U)); +Vals[4]+=W[13]; +Vals[4]+=(rotr(Vals[2],17)^rotr(Vals[2],19)^(Vals[2]>>10U)); +W[3]+=Vals[4]; +W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); +W[3]+=ch(W[0],W[1],W[2]); +W[3]+=K[36]; +W[7]+=W[3]; +W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); +W[3]+=Ma(W[6],W[4],W[5]); + +Vals[5]+=(rotr(Vals[6],7)^rotr(Vals[6],18)^(Vals[6]>>3U)); +Vals[5]+=W[14]; +Vals[5]+=(rotr(Vals[3],17)^rotr(Vals[3],19)^(Vals[3]>>10U)); +W[2]+=Vals[5]; +W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); +W[2]+=ch(W[7],W[0],W[1]); +W[2]+=K[37]; +W[6]+=W[2]; +W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); +W[2]+=Ma(W[5],W[3],W[4]); + +Vals[6]+=(rotr(Vals[7],7)^rotr(Vals[7],18)^(Vals[7]>>3U)); +Vals[6]+=W[15]; +Vals[6]+=(rotr(Vals[4],17)^rotr(Vals[4],19)^(Vals[4]>>10U)); +W[1]+=Vals[6]; +W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[1]+=ch(W[6],W[7],W[0]); +W[1]+=K[38]; +W[5]+=W[1]; +W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); +W[1]+=Ma(W[4],W[2],W[3]); + +Vals[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); +Vals[7]+=Vals[0]; +Vals[7]+=(rotr(Vals[5],17)^rotr(Vals[5],19)^(Vals[5]>>10U)); +W[0]+=Vals[7]; +W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[0]+=ch(W[5],W[6],W[7]); +W[0]+=K[39]; +W[4]+=W[0]; +W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); +W[0]+=Ma(W[3],W[1],W[2]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); -W[8]+=W[1]; -W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=W[8]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[40]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +W[8]+=Vals[1]; +W[8]+=(rotr(Vals[6],17)^rotr(Vals[6],19)^(Vals[6]>>10U)); +W[7]+=W[8]; +W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); +W[7]+=ch(W[4],W[5],W[6]); +W[7]+=K[40]; +W[3]+=W[7]; +W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); +W[7]+=Ma(W[2],W[0],W[1]); W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); -W[9]+=W[2]; -W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=W[9]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[41]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +W[9]+=Vals[2]; +W[9]+=(rotr(Vals[7],17)^rotr(Vals[7],19)^(Vals[7]>>10U)); +W[6]+=W[9]; +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=ch(W[3],W[4],W[5]); +W[6]+=K[41]; +W[2]+=W[6]; +W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); +W[6]+=Ma(W[1],W[7],W[0]); W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); -W[10]+=W[3]; +W[10]+=Vals[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=W[10]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[42]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +W[5]+=W[10]; +W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); +W[5]+=ch(W[2],W[3],W[4]); +W[5]+=K[42]; +W[1]+=W[5]; +W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); +W[5]+=Ma(W[0],W[6],W[7]); W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); -W[11]+=W[4]; +W[11]+=Vals[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=W[11]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[43]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +W[4]+=W[11]; +W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); +W[4]+=ch(W[1],W[2],W[3]); +W[4]+=K[43]; +W[0]+=W[4]; +W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); +W[4]+=Ma(W[7],W[5],W[6]); W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); -W[12]+=W[5]; +W[12]+=Vals[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[3]+=W[12]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[44]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +W[3]+=W[12]; +W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); +W[3]+=ch(W[0],W[1],W[2]); +W[3]+=K[44]; +W[7]+=W[3]; +W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); +W[3]+=Ma(W[6],W[4],W[5]); W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); -W[13]+=W[6]; +W[13]+=Vals[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -Vals[2]+=W[13]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[45]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +W[2]+=W[13]; +W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); +W[2]+=ch(W[7],W[0],W[1]); +W[2]+=K[45]; +W[6]+=W[2]; +W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); +W[2]+=Ma(W[5],W[3],W[4]); W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); -W[14]+=W[7]; +W[14]+=Vals[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -Vals[1]+=W[14]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[46]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - -W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); +W[1]+=W[14]; +W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[1]+=ch(W[6],W[7],W[0]); +W[1]+=K[46]; +W[5]+=W[1]; +W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); +W[1]+=Ma(W[4],W[2],W[3]); + +W[15]+=(rotr(Vals[0],7)^rotr(Vals[0],18)^(Vals[0]>>3U)); W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -Vals[0]+=W[15]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[47]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); -W[0]+=W[9]; -W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -Vals[7]+=W[0]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[48]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); -W[1]+=W[10]; -W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -Vals[6]+=W[1]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[49]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - -W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); -W[2]+=W[11]; -W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=W[2]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[50]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); - -W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); -W[3]+=W[12]; -W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=W[3]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[51]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - -W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); -W[4]+=W[13]; -W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=W[4]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[52]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); -W[5]+=W[14]; -W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=W[5]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[53]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); -W[6]+=W[15]; -W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=W[6]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[54]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - -W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); -W[7]+=W[0]; -W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=W[7]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[55]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +W[0]+=W[15]; +W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[0]+=ch(W[5],W[6],W[7]); +W[0]+=K[47]; +W[4]+=W[0]; +W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); +W[0]+=Ma(W[3],W[1],W[2]); + +Vals[0]+=(rotr(Vals[1],7)^rotr(Vals[1],18)^(Vals[1]>>3U)); +Vals[0]+=W[9]; +Vals[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); +W[7]+=Vals[0]; +W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); +W[7]+=ch(W[4],W[5],W[6]); +W[7]+=K[48]; +W[3]+=W[7]; +W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); +W[7]+=Ma(W[2],W[0],W[1]); + +Vals[1]+=(rotr(Vals[2],7)^rotr(Vals[2],18)^(Vals[2]>>3U)); +Vals[1]+=W[10]; +Vals[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); +W[6]+=Vals[1]; +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=ch(W[3],W[4],W[5]); +W[6]+=K[49]; +W[2]+=W[6]; +W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); +W[6]+=Ma(W[1],W[7],W[0]); + +Vals[2]+=(rotr(Vals[3],7)^rotr(Vals[3],18)^(Vals[3]>>3U)); +Vals[2]+=W[11]; +Vals[2]+=(rotr(Vals[0],17)^rotr(Vals[0],19)^(Vals[0]>>10U)); +W[5]+=Vals[2]; +W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); +W[5]+=ch(W[2],W[3],W[4]); +W[5]+=K[50]; +W[1]+=W[5]; +W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); +W[5]+=Ma(W[0],W[6],W[7]); + +Vals[3]+=(rotr(Vals[4],7)^rotr(Vals[4],18)^(Vals[4]>>3U)); +Vals[3]+=W[12]; +Vals[3]+=(rotr(Vals[1],17)^rotr(Vals[1],19)^(Vals[1]>>10U)); +W[4]+=Vals[3]; +W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); +W[4]+=ch(W[1],W[2],W[3]); +W[4]+=K[51]; +W[0]+=W[4]; +W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); +W[4]+=Ma(W[7],W[5],W[6]); + +Vals[4]+=(rotr(Vals[5],7)^rotr(Vals[5],18)^(Vals[5]>>3U)); +Vals[4]+=W[13]; +Vals[4]+=(rotr(Vals[2],17)^rotr(Vals[2],19)^(Vals[2]>>10U)); +W[3]+=Vals[4]; +W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); +W[3]+=ch(W[0],W[1],W[2]); +W[3]+=K[52]; +W[7]+=W[3]; +W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); +W[3]+=Ma(W[6],W[4],W[5]); + +Vals[5]+=(rotr(Vals[6],7)^rotr(Vals[6],18)^(Vals[6]>>3U)); +Vals[5]+=W[14]; +Vals[5]+=(rotr(Vals[3],17)^rotr(Vals[3],19)^(Vals[3]>>10U)); +W[2]+=Vals[5]; +W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); +W[2]+=ch(W[7],W[0],W[1]); +W[2]+=K[53]; +W[6]+=W[2]; +W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); +W[2]+=Ma(W[5],W[3],W[4]); + +Vals[6]+=(rotr(Vals[7],7)^rotr(Vals[7],18)^(Vals[7]>>3U)); +Vals[6]+=W[15]; +Vals[6]+=(rotr(Vals[4],17)^rotr(Vals[4],19)^(Vals[4]>>10U)); +W[1]+=Vals[6]; +W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[1]+=ch(W[6],W[7],W[0]); +W[1]+=K[54]; +W[5]+=W[1]; +W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); +W[1]+=Ma(W[4],W[2],W[3]); + +Vals[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); +Vals[7]+=Vals[0]; +Vals[7]+=(rotr(Vals[5],17)^rotr(Vals[5],19)^(Vals[5]>>10U)); +W[0]+=Vals[7]; +W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[0]+=ch(W[5],W[6],W[7]); +W[0]+=K[55]; +W[4]+=W[0]; +W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); +W[0]+=Ma(W[3],W[1],W[2]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); -W[8]+=W[1]; -W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=W[8]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[56]; -Vals[3]+=Vals[7]; +W[8]+=Vals[1]; +W[8]+=(rotr(Vals[6],17)^rotr(Vals[6],19)^(Vals[6]>>10U)); +W[7]+=W[8]; +W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); +W[7]+=ch(W[4],W[5],W[6]); +W[7]+=K[56]; +W[3]+=W[7]; W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); -W[9]+=W[2]; -W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=W[9]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[57]; -Vals[6]+=Vals[2]; +W[9]+=Vals[2]; +W[9]+=(rotr(Vals[7],17)^rotr(Vals[7],19)^(Vals[7]>>10U)); +W[6]+=W[9]; +W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); +W[6]+=ch(W[3],W[4],W[5]); +W[6]+=K[57]; +W[6]+=W[2]; W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); -W[10]+=W[3]; +W[10]+=Vals[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=W[10]; -Vals[5]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[5]+=ch(Vals[6],Vals[3],Vals[4]); -Vals[5]+=K[58]; -Vals[5]+=Vals[1]; -Vals[4]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[4]+=ch(Vals[5],Vals[6],Vals[3]); -Vals[4]+=W[11]; -Vals[4]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); -Vals[4]+=W[4]; -Vals[4]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=K[59]; -Vals[4]+=Vals[0]; +W[5]+=W[10]; +W[5]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); +W[5]+=ch(W[6],W[3],W[4]); +W[5]+=K[58]; +W[5]+=W[1]; +W[4]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); +W[4]+=ch(W[5],W[6],W[3]); +W[4]+=W[11]; +W[4]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); +W[4]+=Vals[4]; +W[4]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +W[4]+=K[59]; +W[4]+=W[0]; #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS2) || defined(VECTORS4) - Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); - Vals[7]+=W[12]; - Vals[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); - Vals[7]+=W[5]; - Vals[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); - Vals[7]+=Vals[3]; - Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); - Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); - - if (any(Vals[7] == 0x136032edU)) { - if (Vals[7].x == 0x136032edU) + W[7]+=Ma(W[2],W[0],W[1]); + W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); + W[7]+=W[12]; + W[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); + W[7]+=Vals[5]; + W[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); + W[7]+=W[3]; + W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); + W[7]+=ch(W[4],W[5],W[6]); + + if (any(W[7] == 0x136032edU)) { + if (W[7].x == 0x136032edU) output[FOUND] = output[NFLAG & nonce.x] = nonce.x; - if (Vals[7].y == 0x136032edU) + if (W[7].y == 0x136032edU) output[FOUND] = output[NFLAG & nonce.y] = nonce.y; #if defined(VECTORS4) - if (Vals[7].z == 0x136032edU) + if (W[7].z == 0x136032edU) output[FOUND] = output[NFLAG & nonce.z] = nonce.z; - if (Vals[7].w == 0x136032edU) + if (W[7].w == 0x136032edU) output[FOUND] = output[NFLAG & nonce.w] = nonce.w; #endif } #else - if ((Vals[7]+ - Ma(Vals[2],Vals[0],Vals[1])+ - (rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22))+ + if ((W[7]+ + Ma(W[2],W[0],W[1])+ + (rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22))+ W[12]+ (rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U))+ - W[5]+ + Vals[5]+ (rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U))+ - Vals[3]+ - (rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25))+ - ch(Vals[4],Vals[5],Vals[6])) == 0x136032edU) + W[3]+ + (rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25))+ + ch(W[4],W[5],W[6])) == 0x136032edU) output[FOUND] = output[NFLAG & nonce] = nonce; #endif } From ab3e63ff429136687da3bbed7c9eb3fcd310828e Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 10:39:43 +1100 Subject: [PATCH 055/117] More tidying of poclbm. --- poclbm120222.cl | 51 ++++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index 5748b6cd..40897a02 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -691,87 +691,78 @@ Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); Vals[0]+=state0; - -Vals[7]+=state7; - -W[7]=0xF377ED68U; -W[7]+=Vals[0]; - -Vals[3]+=state3; +W[7]=Vals[0]; +W[7]+=0xF377ED68U; W[3]=0xa54ff53aU; W[3]+=W[7]; W[7]+=0x08909ae5U; -Vals[6]+=state6; - -W[6]=0x90BB1E3CU; +Vals[1]+=state1; +W[6]=Vals[1]; +W[6]+=0x90BB1E3CU; W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); W[6]+=(0x9b05688cU^(W[3]&0xca0b3af3U)); -Vals[1]+=state1; -W[6]+=Vals[1]; - -Vals[2]+=state2; - W[2]=0x3c6ef372U; W[2]+=W[6]; W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); W[6]+=Ma2(0xbb67ae85U,W[7],0x6a09e667U); -Vals[5]+=state5; - -W[5]=0x50C6645BU; +Vals[2]+=state2; +W[5]=Vals[2]; +W[5]+=0x50C6645BU; W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); W[5]+=ch(W[2],W[3],0x510e527fU); -W[5]+=Vals[2]; W[1]=0xbb67ae85U; W[1]+=W[5]; W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); W[5]+=Ma2(0x6a09e667U,W[6],W[7]); -Vals[4]+=state4; - -W[4]=0x3AC42E24U; +Vals[3]+=state3; +W[4]=Vals[3]; +W[4]+=0x3AC42E24U; W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); W[4]+=ch(W[1],W[2],W[3]); -W[4]+=Vals[3]; - -W[0]=W[4]; -W[0]+=0x6a09e667U; +W[0]=0x6a09e667U; +W[0]+=W[4]; W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); W[4]+=Ma(W[7],W[5],W[6]); +Vals[4]+=state4; +W[3]+=Vals[4]; W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); W[3]+=ch(W[0],W[1],W[2]); W[3]+=K[4]; -W[3]+=Vals[4]; W[7]+=W[3]; W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); W[3]+=Ma(W[6],W[4],W[5]); +Vals[5]+=state5; +W[2]+=Vals[5]; W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); W[2]+=ch(W[7],W[0],W[1]); W[2]+=K[5]; -W[2]+=Vals[5]; W[6]+=W[2]; W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); W[2]+=Ma(W[5],W[3],W[4]); +Vals[6]+=state6; +W[1]+=Vals[6]; W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); W[1]+=ch(W[6],W[7],W[0]); W[1]+=K[6]; -W[1]+=Vals[6]; W[5]+=W[1]; W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); W[1]+=Ma(W[4],W[2],W[3]); +Vals[7]+=state7; +W[0]+=Vals[7]; W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); W[0]+=ch(W[5],W[6],W[7]); W[0]+=K[7]; -W[0]+=Vals[7]; W[4]+=W[0]; W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); W[0]+=Ma(W[3],W[1],W[2]); From 325246d30971f77c1e9e4ba060b4b84c6770c9a0 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 11:37:20 +1100 Subject: [PATCH 056/117] Spaces for non-aligned variables in poclbm. --- poclbm120222.cl | 52 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index 40897a02..b32dcc9d 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -95,10 +95,12 @@ Vals[3]+=D1A; Vals[7]=Vals[3]; Vals[7]+=h1; + Vals[4]=PreVal4addT1; Vals[4]+=nonce; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); + Vals[2]=C1addK5; Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],b1); @@ -109,6 +111,7 @@ Vals[3]+=Ma2(g1,Vals[4],f1); Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma2(f1,Vals[3],Vals[4]); + Vals[1]=B1addK6; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); @@ -196,6 +199,7 @@ Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + W[2]=(rotr(nonce,7)^rotr(nonce,18)^(nonce>>3U)); W[2]+=fw2; Vals[5]+=W[2]; @@ -206,6 +210,7 @@ Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + W[3]=nonce; W[3]+=fw3; Vals[4]+=W[3]; @@ -216,8 +221,9 @@ Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); -W[4]=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -W[4]+=0x80000000U; + +W[4]=0x80000000U; +W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); Vals[3]+=W[4]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); @@ -226,6 +232,7 @@ Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + W[5]=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); Vals[2]+=W[5]; Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); @@ -235,8 +242,9 @@ Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); -W[6]=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -W[6]+=0x00000280U; + +W[6]=0x00000280U; +W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); Vals[1]+=W[6]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); @@ -245,8 +253,9 @@ Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); -W[7]=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -W[7]+=fw0; + +W[7]=fw0; +W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); Vals[0]+=W[7]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); @@ -255,8 +264,9 @@ Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); -W[8]=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -W[8]+=fw1; + +W[8]=fw1; +W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); Vals[7]+=W[8]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); @@ -265,6 +275,7 @@ Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + W[9]=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); Vals[6]+=W[9]; @@ -275,6 +286,7 @@ Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + W[10]=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); Vals[5]+=W[10]; @@ -285,6 +297,7 @@ Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + W[11]=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=W[11]; @@ -295,6 +308,7 @@ Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + W[12]=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); Vals[3]+=W[12]; @@ -305,6 +319,7 @@ Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + W[13]=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); Vals[2]+=W[13]; @@ -315,6 +330,7 @@ Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + W[14]=0x00a00055U; W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); @@ -326,6 +342,7 @@ Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + W[15]=fw15; W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); @@ -337,6 +354,7 @@ Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + W[0]=fw01r; W[0]+=W[9]; W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); @@ -348,6 +366,7 @@ Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + W[1]=fw1; W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; @@ -689,43 +708,50 @@ Vals[0]+=W[15]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - Vals[0]+=state0; + W[7]=Vals[0]; W[7]+=0xF377ED68U; + W[3]=0xa54ff53aU; W[3]+=W[7]; W[7]+=0x08909ae5U; Vals[1]+=state1; + W[6]=Vals[1]; W[6]+=0x90BB1E3CU; W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); W[6]+=(0x9b05688cU^(W[3]&0xca0b3af3U)); + W[2]=0x3c6ef372U; W[2]+=W[6]; W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); W[6]+=Ma2(0xbb67ae85U,W[7],0x6a09e667U); Vals[2]+=state2; + W[5]=Vals[2]; W[5]+=0x50C6645BU; W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); W[5]+=ch(W[2],W[3],0x510e527fU); + W[1]=0xbb67ae85U; W[1]+=W[5]; W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); W[5]+=Ma2(0x6a09e667U,W[6],W[7]); Vals[3]+=state3; + W[4]=Vals[3]; W[4]+=0x3AC42E24U; W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); W[4]+=ch(W[1],W[2],W[3]); + W[0]=0x6a09e667U; W[0]+=W[4]; W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); @@ -904,6 +930,7 @@ W[4]+=W[0]; W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); W[0]+=Ma(W[3],W[1],W[2]); + W[8]=0x80000000U; W[8]+=Vals[1]; W[8]+=(rotr(Vals[6],17)^rotr(Vals[6],19)^(Vals[6]>>10U)); @@ -915,6 +942,7 @@ W[3]+=W[7]; W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); W[7]+=Ma(W[2],W[0],W[1]); + W[9]=Vals[2]; W[9]+=(rotr(Vals[7],17)^rotr(Vals[7],19)^(Vals[7]>>10U)); W[6]+=W[9]; @@ -925,6 +953,7 @@ W[2]+=W[6]; W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); W[6]+=Ma(W[1],W[7],W[0]); + W[10]=Vals[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); W[5]+=W[10]; @@ -935,6 +964,7 @@ W[1]+=W[5]; W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); W[5]+=Ma(W[0],W[6],W[7]); + W[11]=Vals[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); W[4]+=W[11]; @@ -945,6 +975,7 @@ W[0]+=W[4]; W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); W[4]+=Ma(W[7],W[5],W[6]); + W[12]=Vals[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); W[3]+=W[12]; @@ -955,6 +986,7 @@ W[7]+=W[3]; W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); W[3]+=Ma(W[6],W[4],W[5]); + W[13]=Vals[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); W[2]+=W[13]; @@ -965,6 +997,7 @@ W[6]+=W[2]; W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); W[2]+=Ma(W[5],W[3],W[4]); + W[14]=0x00400022U; W[14]+=Vals[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); @@ -976,6 +1009,7 @@ W[5]+=W[1]; W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); W[1]+=Ma(W[4],W[2],W[3]); + W[15]=0x00000100U; W[15]+=(rotr(Vals[0],7)^rotr(Vals[0],18)^(Vals[0]>>3U)); W[15]+=W[8]; From db873ba202b8ac633fcbb92edb032915417ea120 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 16:19:15 +1100 Subject: [PATCH 057/117] Add worksize and vector attribute hints to the poclbm kernel. --- poclbm120222.cl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index b32dcc9d..8fb00901 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -67,7 +67,10 @@ __constant uint K[64] = { // problems. (this is used 4 times, and likely optimized out by the compiler.) #define Ma2(x, y, z) ((y & z) | (x & (y | z))) -__kernel void search(const uint state0, const uint state1, const uint state2, const uint state3, +__kernel + __attribute__((vec_type_hint(u))) + __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) + void search(const uint state0, const uint state1, const uint state2, const uint state3, const uint state4, const uint state5, const uint state6, const uint state7, const uint b1, const uint c1, const uint f1, const uint g1, const uint h1, From 5fd7d462abced7e4038d3b9399a7aa1b50fd95ea Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 16:22:18 +1100 Subject: [PATCH 058/117] Add vector type hint to diablo kernel. --- diablo120222.cl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/diablo120222.cl b/diablo120222.cl index 49c4b96f..c8a6c484 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -44,7 +44,10 @@ #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( +__kernel +__attribute__((vec_type_hint(z))) +__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, From 2a3b7359eb033bacb5ee3220697eb53be8f361b9 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 16:44:53 +1100 Subject: [PATCH 059/117] Clean up use of macros in poclbm and use bitselect everywhere possible. --- poclbm120222.cl | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/poclbm120222.cl b/poclbm120222.cl index 8fb00901..a0a964cc 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -36,7 +36,10 @@ __constant uint K[64] = { #ifdef BITALIGN #pragma OPENCL EXTENSION cl_amd_media_ops : enable #define rotr(x, y) amd_bitalign((u)x, (u)x, (u)y) - #ifdef BFI_INT +#else + #define rotr(x, y) rotate((u)x, (u)(32 - y)) +#endif +#ifdef BFI_INT // Well, slight problem... It turns out BFI_INT isn't actually exposed to // OpenCL (or CAL IL for that matter) in any way. However, there is // a similar instruction, BYTE_ALIGN_INT, which is exposed to OpenCL via @@ -49,23 +52,19 @@ __constant uint K[64] = { // Ma can also be implemented in terms of BFI_INT... #define Ma(x, y, z) amd_bytealign( (z^x), (y), (x) ) - #else // BFI_INT - // Later SDKs optimise this to BFI INT without patching and GCN - // actually fails if manually patched with BFI_INT + + // AMD's KernelAnalyzer throws errors compiling the kernel if we use + // amd_bytealign on constants with vectors enabled, so we use this to avoid + // problems. (this is used 4 times, and likely optimized out by the compiler.) + #define Ma2(x, y, z) bitselect((u)x, (u)y, (u)z ^ (u)x) +#else // BFI_INT + //GCN actually fails if manually patched with BFI_INT #define ch(x, y, z) bitselect((u)z, (u)y, (u)x) #define Ma(x, y, z) bitselect((u)x, (u)y, (u)z ^ (u)x) -#endif -#else // BITALIGN - #define ch(x, y, z) (z ^ (x & (y ^ z))) - #define Ma(x, y, z) ((x & z) | (y & (x | z))) - #define rotr(x, y) rotate((u)x, (u)(32 - y)) + #define Ma2(x, y, z) Ma(x, y, z) #endif -// AMD's KernelAnalyzer throws errors compiling the kernel if we use -// amd_bytealign on constants with vectors enabled, so we use this to avoid -// problems. (this is used 4 times, and likely optimized out by the compiler.) -#define Ma2(x, y, z) ((y & z) | (x & (y | z))) __kernel __attribute__((vec_type_hint(u))) From 746fe8b2e694fa74cd65df28e9764f74a766e263 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 5 Mar 2012 16:52:17 +1100 Subject: [PATCH 060/117] Remove unused constant passed to poclbm. --- device-gpu.c | 1 - poclbm120222.cl | 25 ++++++++++++------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/device-gpu.c b/device-gpu.c index 70dea39f..9aef31e6 100644 --- a/device-gpu.c +++ b/device-gpu.c @@ -777,7 +777,6 @@ static cl_int queue_poclbm_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint t CL_SET_BLKARG(fW15); CL_SET_BLKARG(fW01r); - CL_SET_BLKARG(fcty_e2); CL_SET_BLKARG(D1A); CL_SET_BLKARG(C1addK5); CL_SET_BLKARG(B1addK6); diff --git a/poclbm120222.cl b/poclbm120222.cl index a0a964cc..bc73ce97 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -67,19 +67,18 @@ __constant uint K[64] = { __kernel - __attribute__((vec_type_hint(u))) - __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) - void search(const uint state0, const uint state1, const uint state2, const uint state3, - const uint state4, const uint state5, const uint state6, const uint state7, - const uint b1, const uint c1, - const uint f1, const uint g1, const uint h1, - const u base, - const uint fw0, const uint fw1, const uint fw2, const uint fw3, const uint fw15, const uint fw01r, - const uint fcty_e2, - const uint D1A, const uint C1addK5, const uint B1addK6, - const uint W16addK16, const uint W17addK17, - const uint PreVal4addT1, const uint Preval0, - __global uint * output) +__attribute__((vec_type_hint(u))) +__attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) +void search(const uint state0, const uint state1, const uint state2, const uint state3, + const uint state4, const uint state5, const uint state6, const uint state7, + const uint b1, const uint c1, + const uint f1, const uint g1, const uint h1, + const u base, + const uint fw0, const uint fw1, const uint fw2, const uint fw3, const uint fw15, const uint fw01r, + const uint D1A, const uint C1addK5, const uint B1addK6, + const uint W16addK16, const uint W17addK17, + const uint PreVal4addT1, const uint Preval0, + __global uint * output) { u W[24]; u *Vals = &W[16]; // Now put at W[16] to be in same array From 39395eb1e0844017c3d8884ad27c191ba2b79fe9 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Tue, 27 Mar 2012 19:58:51 +1100 Subject: [PATCH 061/117] Use poclbm preferentially on Tahiti now regardless of SDK. --- ocl.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/ocl.c b/ocl.c index aebad65f..04992cbd 100644 --- a/ocl.c +++ b/ocl.c @@ -342,28 +342,23 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) char numbuf[10]; if (gpus[gpu].kernel == KL_NONE) { - if (strstr(vbuff, "844.4") || // Linux 64 bit ATI 2.6 SDK - strstr(vbuff, "851.4") || // Windows 64 bit "" - strstr(vbuff, "831.4")) { // Windows & Linux 32 bit "" - if (strstr(name, "Tahiti")) { - applog(LOG_INFO, "Selecting poclbm kernel"); - clState->chosen_kernel = KL_POCLBM; - } else { + /* Detect all 2.6 SDKs not with Tahiti and use diablo kernel */ + if (!strstr(name, "Tahiti") && + (strstr(vbuff, "844.4") || // Linux 64 bit ATI 2.6 SDK + strstr(vbuff, "851.4") || // Windows 64 bit "" + strstr(vbuff, "831.4") || + strstr(vbuff, "898.1"))) { // 12.2 driver SDK applog(LOG_INFO, "Selecting diablo kernel"); clState->chosen_kernel = KL_DIABLO; - } - } else if (strstr(vbuff, "898.1") || // Windows 64 bit 12.2 driver - strstr(name, "Tahiti")) { // All non SDK 2.6 79x0 - applog(LOG_INFO, "Selecting diablo kernel"); - clState->chosen_kernel = KL_DIABLO; - } else if (clState->hasBitAlign) { - applog(LOG_INFO, "Selecting phatk kernel"); - clState->chosen_kernel = KL_PHATK; - } else { + /* Detect all 7970s, older ATI and NVIDIA and use poclbm */ + } else if (strstr(name, "Tahiti") || !clState->hasBitAlign) { applog(LOG_INFO, "Selecting poclbm kernel"); clState->chosen_kernel = KL_POCLBM; + /* Use phatk for the rest R5xxx R6xxx */ + } else { + applog(LOG_INFO, "Selecting phatk kernel"); + clState->chosen_kernel = KL_PHATK; } - gpus[gpu].kernel = clState->chosen_kernel; } else clState->chosen_kernel = gpus[gpu].kernel; From 621bcca7f5c83bad1966780acf6e06e97c316723 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Tue, 27 Mar 2012 22:10:17 +1100 Subject: [PATCH 062/117] Use global offset parameter to diablo and poclbm kernel ONLY for 1 vector kernels. --- device-gpu.c | 47 +++++++++++++++++++++++++++++++---------------- diablo120222.cl | 6 ++++++ ocl.c | 12 ++++++++++-- ocl.h | 1 + poclbm120222.cl | 7 ++++++- 5 files changed, 54 insertions(+), 19 deletions(-) diff --git a/device-gpu.c b/device-gpu.c index 9aef31e6..34c115d0 100644 --- a/device-gpu.c +++ b/device-gpu.c @@ -743,10 +743,8 @@ static _clState *clStates[MAX_GPUDEVICES]; static cl_int queue_poclbm_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint threads) { cl_kernel *kernel = &clState->kernel; - cl_uint vwidth = clState->vwidth; - unsigned int i, num = 0; + unsigned int num = 0; cl_int status = 0; - uint *nonces; CL_SET_BLKARG(ctx_a); CL_SET_BLKARG(ctx_b); @@ -765,10 +763,15 @@ static cl_int queue_poclbm_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint t CL_SET_BLKARG(cty_g); CL_SET_BLKARG(cty_h); - nonces = alloca(sizeof(uint) * vwidth); - for (i = 0; i < vwidth; i++) - nonces[i] = blk->nonce + (i * threads); - CL_SET_VARG(vwidth, nonces); + if (!clState->goffset) { + cl_uint vwidth = clState->vwidth; + uint *nonces = alloca(sizeof(uint) * vwidth); + unsigned int i; + + for (i = 0; i < vwidth; i++) + nonces[i] = blk->nonce + (i * threads); + CL_SET_VARG(vwidth, nonces); + } CL_SET_BLKARG(fW0); CL_SET_BLKARG(fW1); @@ -896,15 +899,19 @@ static cl_int queue_diakgcn_kernel(_clState *clState, dev_blk_ctx *blk, static cl_int queue_diablo_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint threads) { cl_kernel *kernel = &clState->kernel; - cl_uint vwidth = clState->vwidth; - unsigned int i, num = 0; + unsigned int num = 0; cl_int status = 0; - uint *nonces; - nonces = alloca(sizeof(uint) * vwidth); - for (i = 0; i < vwidth; i++) - nonces[i] = blk->nonce + (i * threads); - CL_SET_VARG(vwidth, nonces); + if (!clState->goffset) { + cl_uint vwidth = clState->vwidth; + uint *nonces = alloca(sizeof(uint) * vwidth); + unsigned int i; + + for (i = 0; i < vwidth; i++) + nonces[i] = blk->nonce + (i * threads); + CL_SET_VARG(vwidth, nonces); + } + CL_SET_BLKARG(PreVal0); CL_SET_BLKARG(PreVal0addK7); @@ -1338,8 +1345,16 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work, memset(thrdata->res, 0, BUFFERSIZE); clFinish(clState->commandQueue); } - status = clEnqueueNDRangeKernel(clState->commandQueue, *kernel, 1, NULL, - globalThreads, localThreads, 0, NULL, NULL); + + if (clState->goffset) { + size_t global_work_offset[1]; + + global_work_offset[0] = work->blk.nonce; + status = clEnqueueNDRangeKernel(clState->commandQueue, *kernel, 1, global_work_offset, + globalThreads, localThreads, 0, NULL, NULL); + } else + status = clEnqueueNDRangeKernel(clState->commandQueue, *kernel, 1, NULL, + globalThreads, localThreads, 0, NULL, NULL); if (unlikely(status != CL_SUCCESS)) { applog(LOG_ERR, "Error: Enqueueing kernel onto command queue. (clEnqueueNDRangeKernel)"); return 0; diff --git a/diablo120222.cl b/diablo120222.cl index c8a6c484..01d3a4ca 100644 --- a/diablo120222.cl +++ b/diablo120222.cl @@ -48,7 +48,9 @@ __kernel __attribute__((vec_type_hint(z))) __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( +#ifndef GOFFSET const z base, +#endif const uint PreVal4_state0, const uint PreVal4_state0_k7, const uint PreVal4_T1, const uint W18, const uint W19, @@ -65,7 +67,11 @@ void search( z ZA[25]; +#ifdef GOFFSET + const z Znonce = (uint)(get_global_id(0)); +#else const z Znonce = base + (uint)(get_global_id(0)); +#endif ZA[2]=Znonce; ZA[2]+=PreVal4_state0; diff --git a/ocl.c b/ocl.c index 04992cbd..a15fc455 100644 --- a/ocl.c +++ b/ocl.c @@ -335,7 +335,7 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) /* Create binary filename based on parameters passed to opencl * compiler to ensure we only load a binary that matches what would * have otherwise created. The filename is: - * name + kernelname + v + vectors + w + work_size + l + sizeof(long) + .bin + * name + kernelname +/- g(offset) + v + vectors + w + work_size + l + sizeof(long) + .bin */ char binaryfilename[255]; char filename[255]; @@ -398,6 +398,10 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) gpus[gpu].vwidth = preferred_vwidth; } + if ((clState->chosen_kernel == KL_POCLBM || clState->chosen_kernel == KL_DIABLO) && + clState->vwidth == 1 && clState->hasOpenCL11plus) + clState->goffset = true; + if (gpus[gpu].work_size && gpus[gpu].work_size <= clState->max_work_size) clState->wsize = gpus[gpu].work_size; else if (strstr(name, "Tahiti")) @@ -431,7 +435,8 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) } strcat(binaryfilename, name); - + if (clState->goffset) + strcat(binaryfilename, "g"); strcat(binaryfilename, "v"); sprintf(numbuf, "%d", clState->vwidth); strcat(binaryfilename, numbuf); @@ -533,6 +538,9 @@ build: } else applog(LOG_DEBUG, "BFI_INT patch requiring device not found, will not BFI_INT patch"); + if (clState->goffset) + strcat(CompilerOptions, " -D GOFFSET"); + applog(LOG_DEBUG, "CompilerOptions: %s", CompilerOptions); status = clBuildProgram(clState->program, 1, &devices[gpu], CompilerOptions , NULL, NULL); free(CompilerOptions); diff --git a/ocl.h b/ocl.h index 6a4b728f..2f2f2c24 100644 --- a/ocl.h +++ b/ocl.h @@ -21,6 +21,7 @@ typedef struct { cl_mem outputBuffer; bool hasBitAlign; bool hasOpenCL11plus; + bool goffset; cl_uint vwidth; size_t max_work_size; size_t wsize; diff --git a/poclbm120222.cl b/poclbm120222.cl index bc73ce97..92bc7071 100644 --- a/poclbm120222.cl +++ b/poclbm120222.cl @@ -73,7 +73,9 @@ void search(const uint state0, const uint state1, const uint state2, const uint const uint state4, const uint state5, const uint state6, const uint state7, const uint b1, const uint c1, const uint f1, const uint g1, const uint h1, +#ifndef GOFFSET const u base, +#endif const uint fw0, const uint fw1, const uint fw2, const uint fw3, const uint fw15, const uint fw01r, const uint D1A, const uint C1addK5, const uint B1addK6, const uint W16addK16, const uint W17addK17, @@ -83,8 +85,11 @@ void search(const uint state0, const uint state1, const uint state2, const uint u W[24]; u *Vals = &W[16]; // Now put at W[16] to be in same array +#ifdef GOFFSET + const u nonce = (uint)(get_global_id(0)); +#else const u nonce = base + (uint)(get_global_id(0)); - +#endif Vals[0]=Preval0; Vals[0]+=nonce; From 4325cff2b0193d3554dc88dc70bf5da7135d3556 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Tue, 27 Mar 2012 23:01:24 +1100 Subject: [PATCH 063/117] Update version numbers of poclbm and diablo kernels as their APIs have also changed. --- configure.ac | 4 ++-- diablo120222.cl => diablo120327.cl | 0 poclbm120222.cl => poclbm120327.cl | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename diablo120222.cl => diablo120327.cl (100%) rename poclbm120222.cl => poclbm120327.cl (100%) diff --git a/configure.ac b/configure.ac index f505383a..f9f431f5 100644 --- a/configure.ac +++ b/configure.ac @@ -324,8 +324,8 @@ fi AC_DEFINE_UNQUOTED([CGMINER_PREFIX], ["$prefix/bin"], [Path to cgminer install]) -AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120223"], [Filename for phatk kernel]) -AC_DEFINE_UNQUOTED([POCLBM_KERNNAME], ["poclbm120222"], [Filename for poclbm kernel]) +AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120327"], [Filename for phatk kernel]) +AC_DEFINE_UNQUOTED([POCLBM_KERNNAME], ["poclbm120327"], [Filename for poclbm kernel]) AC_DEFINE_UNQUOTED([DIAKGCN_KERNNAME], ["diakgcn120223"], [Filename for diakgcn kernel]) AC_DEFINE_UNQUOTED([DIABLO_KERNNAME], ["diablo120222"], [Filename for diablo kernel]) diff --git a/diablo120222.cl b/diablo120327.cl similarity index 100% rename from diablo120222.cl rename to diablo120327.cl diff --git a/poclbm120222.cl b/poclbm120327.cl similarity index 100% rename from poclbm120222.cl rename to poclbm120327.cl From 6d4314d47ff723e900b40d42c53d62bd5fac57a2 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Tue, 27 Mar 2012 23:04:17 +1100 Subject: [PATCH 064/117] Add extensive instructions on how to make a native windows build. --- README | 2 +- windows-build.txt | 224 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 windows-build.txt diff --git a/README b/README index ba9d86ad..43606346 100644 --- a/README +++ b/README @@ -101,7 +101,7 @@ Basic WIN32 build instructions (LIKELY OUTDATED INFO. requires mingw32): make ./mknsis.sh -Native WIN32 build instructions (on mingw32, on windows): +Native WIN32 build instructions (outdated, see windows-build.txt) Install the Microsoft platform SDK Install AMD APP sdk, (if you want GPU mining) Install AMD ADL sdk, (if you want GPU monitoring) diff --git a/windows-build.txt b/windows-build.txt new file mode 100644 index 00000000..05e659a3 --- /dev/null +++ b/windows-build.txt @@ -0,0 +1,224 @@ +###################################################################################### +# # +# Native WIN32 setup and build instructions (on mingw32/Windows): # +# # +###################################################################################### + +************************************************************************************** +* Introduction * +************************************************************************************** +The following instructions have been tested on both Windows 7 and Windows XP. +Most of what is described below (copying files, downloading files, etc.) can be done +directly in the MinGW MSYS shell; these instructions do not do so because package +versions and links change over time. The best way is to use your browser, go to the +links directly, and see for yourself which versions you want to install. + +If you think that this documentation was helpful and you wish to donate, you can +do so at the following address. 12KaKtrK52iQjPdtsJq7fJ7smC32tXWbWr + +************************************************************************************** +* A tip that might help you along the way * +************************************************************************************** +Enable "QuickEdit Mode" in your Command Prompt Window or MinGW Command Prompt +Window (No need to go into the context menu to choose edit-mark/copy/paste): +Right-click on the title bar and click Properties. Under the Options tab, check +the box for "QuickEdit Mode". Alternately, if you want this change to be +permanent on all of your Command Prompt Windows; you can click Defaults instead +of Properties as described above. Now you can drag and select text you want to +copy, right-click to copy the text to the clipboard and right-click once again to +paste it at the desired location. You could for example, copy some text from this +document to the clipboard and right click in your Command Prompt Window to paste +what you copied. + +************************************************************************************** +* Install mingw32 * +************************************************************************************** +Go to this url ==> http://www.mingw.org/wiki/Getting_Started +Click the link that says "Download and run the latest mingw-get-inst version." +Download and run the latest file. Install MinGW in the default directory. +(I downloaded the one labeled "mingw-get-inst-20111118" - note that this could +be a different version later.) +Make sure to check the option for "Download latest repository catalogs". +I just selected all the check boxes (excluding "Fortran Compiler") so that everything +was installed. + +************************************************************************************** +* Create mstcpip.h * +************************************************************************************** +Open notepad and copy the following into it. Save it as "\MinGW\include\mstcpip.h". +Make sure it does not have the ".txt" extension (If it does then rename it). + +struct tcp_keepalive +{ + u_long onoff; + u_long keepalivetime; + u_long keepaliveinterval; +}; + +#ifndef USE_WS_PREFIX + +#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR, 4) + +#else + +#define WS_SIO_KEEPALIVE_VALS _WSAIOW(WS_IOC_VENDOR, 4) + +#endif + +************************************************************************************** +* Run the MSYS shell for the first time to create your user directory * +************************************************************************************** +(Start Icon/keyboard key ==> All Programs ==> MinGW ==> MinGW Shell). +This will create your user directory for you. + +************************************************************************************** +* Install libpdcurses * +************************************************************************************** +Type the lines below to install libpdcurses. +mingw-get install mingw32-libpdcurses +mingw-get install mingw32-pdcurses +Ctrl-D or typing "logout" and pressing the enter key should get you out of the +window. + +************************************************************************************** +* Copy CGMiner source to your MSYS working directory * +************************************************************************************** +Copy CGMiner source code directory into: +\MinGW\msys\1.0\home\(folder with your user name) + +************************************************************************************** +* Install AMD APP SDK, latest version (only if you want GPU mining) * +************************************************************************************** +Note: You do not need to install the AMD APP SDK if you are only using Nvidia GPU's +Go to this url for the latest AMD APP SDK: + http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx +Go to this url for legacy AMD APP SDK's: + http://developer.amd.com/sdks/AMDAPPSDK/downloads/pages/AMDAPPSDKDownloadArchive.aspx +Download and install whichever version you like best. +Copy the folders in \Program Files (x86)\AMD APP\include to \MinGW\include +Copy \Program Files (x86)\AMD APP\lib\x86\libOpenCL.a to \MinGW\lib +Note: If you are on a 32 bit version of windows "Program Files (x86)" will be +"Program Files". +Note2: If you update your APP SDK later you might want to recopy the above files + +************************************************************************************** +* Install AMD ADL SDK, latest version (only if you want GPU monitoring) * +************************************************************************************** +Note: You do not need to install the AMD ADL SDK if you are only using Nvidia GPU's +Go to this url ==> http://developer.amd.com/sdks/ADLSDK/Pages/default.aspx +Download and unzip the file you downloaded. +Pull adl_defines.h, adl_sdk.h, and adl_structures.h out of the include folder +Put those files into the ADL_SDK folder in your source tree as shown below. +\MinGW\msys\1.0\home\(folder with your user name)\cgminer-x.x.x\ADL_SDK + +************************************************************************************** +* Install GTK-WIN, required for Pkg-config in the next step * +************************************************************************************** +Go to this url ==> http://sourceforge.net/projects/gtk-win/ +Download the file. +After you have downloaded the file Double click/run it and this will install GTK+ +I chose all the selection boxes when I installed. +Copy libglib-2.0-0.dll and intl.dll from \Program Files (x86)\gtk2-runtime\bin to +\MinGW\bin +Note: If you are on a 32 bit version of windows "Program Files (x86)" will be +"Program Files". + +************************************************************************************** +* Install pkg-config * +************************************************************************************** +Go to this url ==> http://www.gtk.org/download/win32.php +Scroll down to where it shows pkg-cfg. +Download the file from the tool link. Extract "pkg-config.exe" from bin and place in +your \MinGW\bin directory. +Download the file from the "Dev" link. Extract "pkg.m4" from share\aclocal and place +in your \MingW\share\aclocal directory. + +************************************************************************************** +* Install libcurl * +************************************************************************************** +Go to this url ==> http://curl.haxx.se/download.html#Win32 +At the section where it says "Win32 - Generic", Click on the link that indicates +Win32 2000.XP 7.24.0 libcurl SSL and download it. +The one I downloaded may not be current for you. Choose the latest. +Extract the files that are in the zip (bin, include, and lib) to their respective +locations in MinGW (\MinGW\bin, \MinGW\include, and \MinGW\lib). +Edit the file \MinGW\lib\pkgconfig\libcurl.pc and change "-lcurl" to +"-lcurl -lcurldll". +Ref. http://old.nabble.com/gcc-working-with-libcurl-td20506927.html + +************************************************************************************** +* Build cgminer.exe * +************************************************************************************** +Run the MinGW MSYS shell +(Start Icon/keyboard key ==> All Programs ==> MinGW ==> MinGW Shell). +Change the working directory to your CGMiner project folder. +Example: cd cgminer-2.1.2 [Enter Key] if you are unsure then type "ls -la" +Another way is to type "cd cg" and then press the tab key; It will auto fill. +Type the lines below one at a time. Look for problems after each one before going on +to the next. + + adl.sh (optional - see below) + autoreconf -fvi + CFLAGS="-O2 -msse2" ./configure (additional config options, see below) + make + +************************************************************************************** +* Copy files to a build directory/folder * +************************************************************************************** +Make a directory and copy the following files into it. This will be your CGMiner +Folder that you use for mining. Remember the .cl filenames could change on later +releases. If you installed a different version of libcurl then some of those dll's +may be different as well. + cgminer.exe from \MinGW\msys\1.0\home\(username)\cgminer-x.x.x + *.cl from \MinGW\msys\1.0\home\(username)\cgminer-x.x.x + README from \MinGW\msys\1.0\home\(username)\cgminer-x.x.x + libcurl.dll from \MinGW\bin + libeay32.dll from \MinGW\bin + libidn-11.dll from \MinGW\bin + libssl32.dll from \MinGW\bin + libpdcurses.dll from \MinGW\bin + pthreadGC2.dll from \MinGW\bin + +************************************************************************************** +* Optional - Install Git into MinGW/MSYS * +************************************************************************************** +Go to this url ==> http://code.google.com/p/msysgit/ +Click on the Downloads tab. +Download the latest "Portable" git archive. +Extract the git*.exe files from the bin folder and put them into \MinGW\bin. +Extract the share\git-core folder and place it into \MinGW\share. +To test if it is working, open a MinGW shell and type the following: + git config -–global core.autocrlf false (note: one time run only) + git clone git://github.com/ckolivas/cgminer.git + +If you simply just want to update the source after you have already cloned, type: + git pull git://github.com/ckolivas/cgminer.git + +Now you can get the latest source directly from github. + +************************************************************************************** +* Optional - Make a .sh file to automate copying over ADL files * +************************************************************************************** +Make a folder/directory in your home folder and name it ADL_SDK. + (ref: \MinGW\msys\1.0\home\(folder with your user name)\ADL_SDK) +Copy the ADL .h files into that folder/directory. +Open your favorite text editor and type the following into it. + cp -av ../ADL_SDK/*.h ADL_SDK +Save the file as "adl.sh" and then place the file into "\MinGW\msys\1.0\bin". +From now on when your current working directory is the cgminer source directory +You can simply type "adl.sh" and it will place the ADL header files into place +For you. Make sure you never remove the ADL_SDK folder from your home folder. + +************************************************************************************** +* Some ./configure options * +************************************************************************************** +--disable-opencl Override detection and disable building with opencl +--disable-adl Override detection and disable building with adl +--enable-bitforce Compile support for BitForce FPGAs(default disabled) +--enable-icarus Compile support for Icarus Board(default disabled) + +###################################################################################### +# # +# Native WIN32 setup and build instructions (on mingw32/Windows) complete # +# # +###################################################################################### \ No newline at end of file From 0699061ade403a3a823bd2320bb01c67a35b4268 Mon Sep 17 00:00:00 2001 From: Kano Date: Wed, 28 Mar 2012 10:50:28 +1100 Subject: [PATCH 065/117] api.c devicecode/osinfo incorrectly swapped for json --- api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.c b/api.c index 8a95a626..1879c38f 100644 --- a/api.c +++ b/api.c @@ -681,7 +681,7 @@ static void minerconfig(__maybe_unused SOCKETTYPE c, __maybe_unused char *param, strcpy(io_buffer, message(MSG_MINECON, 0, NULL, isjson)); if (isjson) - sprintf(buf, "," JSON_MINECON "{\"GPU Count\":%d,\"PGA Count\":%d,\"CPU Count\":%d,\"Pool Count\":%d,\"ADL\":\"%s\",\"ADL in use\":\"%s\",\"Strategy\":\"%s\",\"Log Interval\":%d,\"Device Code\":\"%s\",\"OS\":\"%s\"}" JSON_CLOSE, nDevs, pgacount, cpucount, total_pools, adl, adlinuse, strategies[pool_strategy].s, opt_log_interval, OSINFO, DEVICECODE); + sprintf(buf, "," JSON_MINECON "{\"GPU Count\":%d,\"PGA Count\":%d,\"CPU Count\":%d,\"Pool Count\":%d,\"ADL\":\"%s\",\"ADL in use\":\"%s\",\"Strategy\":\"%s\",\"Log Interval\":%d,\"Device Code\":\"%s\",\"OS\":\"%s\"}" JSON_CLOSE, nDevs, pgacount, cpucount, total_pools, adl, adlinuse, strategies[pool_strategy].s, opt_log_interval, DEVICECODE, OSINFO); else sprintf(buf, _MINECON ",GPU Count=%d,PGA Count=%d,CPU Count=%d,Pool Count=%d,ADL=%s,ADL in use=%s,Strategy=%s,Log Interval=%d,Device Code=%s,OS=%s%c", nDevs, pgacount, cpucount, total_pools, adl, adlinuse, strategies[pool_strategy].s, opt_log_interval, DEVICECODE, OSINFO, SEPARATOR); From 3f3c8361b33b5a07ecaa862dceaf53ce168f4175 Mon Sep 17 00:00:00 2001 From: ckolivas Date: Wed, 28 Mar 2012 13:21:40 +1100 Subject: [PATCH 066/117] Change the version number on the correct kernels. --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index f9f431f5..34efabaa 100644 --- a/configure.ac +++ b/configure.ac @@ -324,10 +324,10 @@ fi AC_DEFINE_UNQUOTED([CGMINER_PREFIX], ["$prefix/bin"], [Path to cgminer install]) -AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120327"], [Filename for phatk kernel]) +AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120223"], [Filename for phatk kernel]) AC_DEFINE_UNQUOTED([POCLBM_KERNNAME], ["poclbm120327"], [Filename for poclbm kernel]) AC_DEFINE_UNQUOTED([DIAKGCN_KERNNAME], ["diakgcn120223"], [Filename for diakgcn kernel]) -AC_DEFINE_UNQUOTED([DIABLO_KERNNAME], ["diablo120222"], [Filename for diablo kernel]) +AC_DEFINE_UNQUOTED([DIABLO_KERNNAME], ["diablo120327"], [Filename for diablo kernel]) AC_SUBST(OPENCL_LIBS) From 3c16c853bdcac58dca40749ac3393367a3b10559 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Wed, 28 Mar 2012 20:13:08 +1100 Subject: [PATCH 067/117] Reinstate old diablo kernel variable ordering from 120222, adding only goffset and vector size hint. The massive variable ordering change only helped one SDK on 7970 but hurt other devices. --- configure.ac | 2 +- diablo120327.cl | 1382 ----------------------------------------------- diablo120328.cl | 1274 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1275 insertions(+), 1383 deletions(-) delete mode 100644 diablo120327.cl create mode 100644 diablo120328.cl diff --git a/configure.ac b/configure.ac index 34efabaa..3db32e10 100644 --- a/configure.ac +++ b/configure.ac @@ -327,7 +327,7 @@ AC_DEFINE_UNQUOTED([CGMINER_PREFIX], ["$prefix/bin"], [Path to cgminer install]) AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120223"], [Filename for phatk kernel]) AC_DEFINE_UNQUOTED([POCLBM_KERNNAME], ["poclbm120327"], [Filename for poclbm kernel]) AC_DEFINE_UNQUOTED([DIAKGCN_KERNNAME], ["diakgcn120223"], [Filename for diakgcn kernel]) -AC_DEFINE_UNQUOTED([DIABLO_KERNNAME], ["diablo120327"], [Filename for diablo kernel]) +AC_DEFINE_UNQUOTED([DIABLO_KERNNAME], ["diablo120328"], [Filename for diablo kernel]) AC_SUBST(OPENCL_LIBS) diff --git a/diablo120327.cl b/diablo120327.cl deleted file mode 100644 index 01d3a4ca..00000000 --- a/diablo120327.cl +++ /dev/null @@ -1,1382 +0,0 @@ -/* - * DiabloMiner - OpenCL miner for BitCoin - * Copyright (C) 2010, 2011, 2012 Patrick McFarland - * - * 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 . - */ - -#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__((vec_type_hint(z))) -__attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) -void search( -#ifndef GOFFSET - const z base, -#endif - 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[25]; - -#ifdef GOFFSET - const z Znonce = (uint)(get_global_id(0)); -#else - const z Znonce = base + (uint)(get_global_id(0)); -#endif - -ZA[2]=Znonce; -ZA[2]+=PreVal4_state0; - -ZA[3]=ZCh(ZA[2],b1,c1); -ZA[3]+=d1; -ZA[3]+=ZR26(ZA[2]); - -ZA[8]=Znonce; -ZA[8]+=PreVal4_T1; - -ZA[4]=ZA[3]; -ZA[4]+=h1; - -ZA[5]=ZCh(ZA[4],ZA[2],b1); -ZA[5]+=c1_plus_k5; -ZA[5]+=ZR26(ZA[4]); -ZA[3]+=ZMa(f1,g1,ZA[8]); -ZA[3]+=ZR30(ZA[8]); - -ZA[6]=ZA[5]; -ZA[6]+=g1; - -ZA[2]=ZCh(ZA[6],ZA[4],ZA[2]); -ZA[2]+=ZR26(ZA[6]); -ZA[2]+=b1_plus_k6; -ZA[5]+=ZMa(ZA[8],f1,ZA[3]); -ZA[5]+=ZR30(ZA[3]); - -ZA[7]=ZA[2]; -ZA[7]+=f1; -ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5]); -ZA[2]+=ZR30(ZA[5]); - -ZA[10]=Znonce; -ZA[10]+=PreVal4_state0_k7; -ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4]); -ZA[10]+=ZR26(ZA[7]); -ZA[8]+=ZA[10]; -ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2]); -ZA[10]+=ZR30(ZA[2]); -ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6]); -ZA[4]+=0xd807aa98U; -ZA[4]+=ZR26(ZA[8]); -ZA[3]+=ZA[4]; -ZA[4]+=ZMa(ZA[2],ZA[5],ZA[10]); -ZA[4]+=ZR30(ZA[10]); -ZA[6]+=ZCh(ZA[3],ZA[8],ZA[7]); -ZA[6]+=0x12835b01U; -ZA[6]+=ZR26(ZA[3]); -ZA[5]+=ZA[6]; -ZA[6]+=ZMa(ZA[10],ZA[2],ZA[4]); -ZA[6]+=ZR30(ZA[4]); -ZA[7]+=ZCh(ZA[5],ZA[3],ZA[8]); -ZA[7]+=0x243185beU; -ZA[7]+=ZR26(ZA[5]); -ZA[2]+=ZA[7]; -ZA[7]+=ZMa(ZA[4],ZA[10],ZA[6]); -ZA[7]+=ZR30(ZA[6]); -ZA[8]+=ZCh(ZA[2],ZA[5],ZA[3]); -ZA[8]+=0x550c7dc3U; -ZA[8]+=ZR26(ZA[2]); -ZA[10]+=ZA[8]; -ZA[8]+=ZMa(ZA[6],ZA[4],ZA[7]); -ZA[8]+=ZR30(ZA[7]); -ZA[3]+=ZCh(ZA[10],ZA[2],ZA[5]); -ZA[3]+=0x72be5d74U; -ZA[3]+=ZR26(ZA[10]); -ZA[4]+=ZA[3]; -ZA[3]+=ZMa(ZA[7],ZA[6],ZA[8]); -ZA[3]+=ZR30(ZA[8]); -ZA[5]+=ZCh(ZA[4],ZA[10],ZA[2]); -ZA[5]+=0x80deb1feU; -ZA[5]+=ZR26(ZA[4]); -ZA[6]+=ZA[5]; -ZA[5]+=ZMa(ZA[8],ZA[7],ZA[3]); -ZA[5]+=ZR30(ZA[3]); -ZA[2]+=ZCh(ZA[6],ZA[4],ZA[10]); -ZA[2]+=0x9bdc06a7U; -ZA[2]+=ZR26(ZA[6]); -ZA[7]+=ZA[2]; -ZA[2]+=ZMa(ZA[3],ZA[8],ZA[5]); -ZA[2]+=ZR30(ZA[5]); -ZA[10]+=ZCh(ZA[7],ZA[6],ZA[4]); -ZA[10]+=0xc19bf3f4U; -ZA[10]+=ZR26(ZA[7]); -ZA[8]+=ZA[10]; -ZA[10]+=ZMa(ZA[5],ZA[3],ZA[2]); -ZA[10]+=ZR30(ZA[2]); -ZA[4]+=ZCh(ZA[8],ZA[7],ZA[6]); -ZA[4]+=W16_plus_K16; -ZA[4]+=ZR26(ZA[8]); - -ZA[0]=ZR25(Znonce); -ZA[0]+=W18; - -ZA[11]=ZMa(ZA[2],ZA[5],ZA[10]); -ZA[11]+=ZR30(ZA[10]); -ZA[11]+=ZA[4]; -ZA[4]+=ZA[3]; -ZA[6]+=ZCh(ZA[4],ZA[8],ZA[7]); -ZA[6]+=W17_plus_K17; -ZA[6]+=ZR26(ZA[4]); -ZA[5]+=ZA[6]; -ZA[6]+=ZMa(ZA[10],ZA[2],ZA[11]); -ZA[6]+=ZR30(ZA[11]); - -ZA[3]=Znonce; -ZA[3]+=W19; -ZA[7]+=ZCh(ZA[5],ZA[4],ZA[8]); -ZA[7]+=ZA[0]; -ZA[7]+=0x0fc19dc6U; -ZA[7]+=ZR26(ZA[5]); - -ZA[1]=ZR15(ZA[0]); -ZA[1]+=0x80000000U; - -ZA[12]=ZMa(ZA[11],ZA[10],ZA[6]); -ZA[12]+=ZR30(ZA[6]); -ZA[12]+=ZA[7]; -ZA[7]+=ZA[2]; -ZA[8]+=ZCh(ZA[7],ZA[5],ZA[4]); -ZA[8]+=ZA[3]; -ZA[8]+=0x240ca1ccU; -ZA[8]+=ZR26(ZA[7]); - -ZA[2]=ZR15(ZA[3]); - -ZA[10]+=ZA[8]; -ZA[8]+=ZMa(ZA[6],ZA[11],ZA[12]); -ZA[8]+=ZR30(ZA[12]); -ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]); -ZA[4]+=ZA[1]; -ZA[4]+=0x2de92c6fU; -ZA[4]+=ZR26(ZA[10]); - -ZA[13]=ZR15(ZA[1]); -ZA[13]+=0x00000280U; - -ZA[14]=ZMa(ZA[12],ZA[6],ZA[8]); -ZA[14]+=ZR30(ZA[8]); -ZA[14]+=ZA[4]; -ZA[4]+=ZA[11]; -ZA[5]+=ZCh(ZA[4],ZA[10],ZA[7]); -ZA[5]+=ZA[2]; -ZA[5]+=0x4a7484aaU; -ZA[5]+=ZR26(ZA[4]); - -ZA[11]=ZR15(ZA[2]); -ZA[11]+=W16; - -ZA[15]=ZMa(ZA[8],ZA[12],ZA[14]); -ZA[15]+=ZR30(ZA[14]); -ZA[15]+=ZA[5]; -ZA[5]+=ZA[6]; -ZA[7]+=ZCh(ZA[5],ZA[4],ZA[10]); -ZA[7]+=ZA[13]; -ZA[7]+=0x5cb0a9dcU; -ZA[7]+=ZR26(ZA[5]); - -ZA[6]=ZR15(ZA[13]); -ZA[6]+=W17; - -ZA[16]=ZMa(ZA[14],ZA[8],ZA[15]); -ZA[16]+=ZR30(ZA[15]); -ZA[16]+=ZA[7]; -ZA[7]+=ZA[12]; -ZA[10]+=ZCh(ZA[7],ZA[5],ZA[4]); -ZA[10]+=ZA[11]; -ZA[10]+=0x76f988daU; -ZA[10]+=ZR26(ZA[7]); - -ZA[12]=ZR15(ZA[11]); -ZA[12]+=ZA[0]; - -ZA[17]=ZA[10]; -ZA[17]+=ZMa(ZA[15],ZA[14],ZA[16]); -ZA[17]+=ZR30(ZA[16]); -ZA[10]+=ZA[8]; -ZA[4]+=ZCh(ZA[10],ZA[7],ZA[5]); -ZA[4]+=ZA[6]; -ZA[4]+=0x983e5152U; -ZA[4]+=ZR26(ZA[10]); - -ZA[8]=ZR15(ZA[6]); -ZA[8]+=ZA[3]; -ZA[14]+=ZA[4]; -ZA[4]+=ZMa(ZA[16],ZA[15],ZA[17]); -ZA[4]+=ZR30(ZA[17]); -ZA[5]+=ZCh(ZA[14],ZA[10],ZA[7]); -ZA[5]+=ZA[12]; -ZA[5]+=0xa831c66dU; -ZA[5]+=ZR26(ZA[14]); - -ZA[9]=ZR15(ZA[12]); -ZA[9]+=ZA[1]; - -ZA[18]=ZMa(ZA[17],ZA[16],ZA[4]); -ZA[18]+=ZR30(ZA[4]); -ZA[18]+=ZA[5]; -ZA[5]+=ZA[15]; -ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); -ZA[7]+=ZA[8]; -ZA[7]+=0xb00327c8U; -ZA[7]+=ZR26(ZA[5]); - -ZA[15]=ZR15(ZA[8]); -ZA[15]+=ZA[2]; - -ZA[19]=ZA[7]; -ZA[19]+=ZMa(ZA[4],ZA[17],ZA[18]); -ZA[19]+=ZR30(ZA[18]); -ZA[7]+=ZA[16]; -ZA[10]+=ZCh(ZA[7],ZA[5],ZA[14]); -ZA[10]+=ZA[9]; -ZA[10]+=0xbf597fc7U; -ZA[10]+=ZR26(ZA[7]); - -ZA[16]=ZR15(ZA[9]); -ZA[16]+=ZA[13]; - -ZA[20]=ZMa(ZA[18],ZA[4],ZA[19]); -ZA[20]+=ZR30(ZA[19]); -ZA[20]+=ZA[10]; -ZA[10]+=ZA[17]; -ZA[14]+=ZCh(ZA[10],ZA[7],ZA[5]); -ZA[14]+=ZA[15]; -ZA[14]+=0xc6e00bf3U; -ZA[14]+=ZR26(ZA[10]); - -ZA[17]=ZR15(ZA[15]); -ZA[17]+=ZA[11]; -ZA[17]+=0x00A00055U; - -ZA[21]=ZMa(ZA[19],ZA[18],ZA[20]); -ZA[21]+=ZR30(ZA[20]); -ZA[21]+=ZA[14]; -ZA[14]+=ZA[4]; -ZA[5]+=ZCh(ZA[14],ZA[10],ZA[7]); -ZA[5]+=ZA[16]; -ZA[5]+=0xd5a79147U; -ZA[5]+=ZR26(ZA[14]); - -ZA[4]=ZR15(ZA[16]); -ZA[4]+=ZA[6]; -ZA[4]+=W31; - -ZA[22]=ZA[5]; -ZA[22]+=ZMa(ZA[20],ZA[19],ZA[21]); -ZA[22]+=ZR30(ZA[21]); -ZA[5]+=ZA[18]; -ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); -ZA[7]+=ZA[17]; -ZA[7]+=0x06ca6351U; -ZA[7]+=ZR26(ZA[5]); - -ZA[18]=ZR15(ZA[17]); -ZA[18]+=ZA[12]; -ZA[18]+=W32; - -ZA[23]=ZA[7]; -ZA[23]+=ZMa(ZA[21],ZA[20],ZA[22]); -ZA[23]+=ZR30(ZA[22]); -ZA[7]+=ZA[19]; -ZA[10]+=ZCh(ZA[7],ZA[5],ZA[14]); -ZA[10]+=ZA[4]; -ZA[10]+=0x14292967U; -ZA[10]+=ZR26(ZA[7]); - -ZA[19]=ZR15(ZA[4]); -ZA[19]+=ZA[8]; -ZA[19]+=ZR25(ZA[0]); -ZA[19]+=W17; -ZA[20]+=ZA[10]; -ZA[10]+=ZMa(ZA[22],ZA[21],ZA[23]); -ZA[10]+=ZR30(ZA[23]); -ZA[14]+=ZCh(ZA[20],ZA[7],ZA[5]); -ZA[14]+=ZA[18]; -ZA[14]+=0x27b70a85U; -ZA[14]+=ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[18]); -ZA[0]+=ZR25(ZA[3]); -ZA[0]+=ZA[9]; - -ZA[24]=ZA[14]; -ZA[24]+=ZMa(ZA[23],ZA[22],ZA[10]); -ZA[24]+=ZR30(ZA[10]); -ZA[14]+=ZA[21]; -ZA[5]+=ZCh(ZA[14],ZA[20],ZA[7]); -ZA[5]+=ZA[19]; -ZA[5]+=0x2e1b2138U; -ZA[5]+=ZR26(ZA[14]); -ZA[3]+=ZR15(ZA[19]); -ZA[3]+=ZR25(ZA[1]); -ZA[3]+=ZA[15]; -ZA[22]+=ZA[5]; -ZA[5]+=ZMa(ZA[10],ZA[23],ZA[24]); -ZA[5]+=ZR30(ZA[24]); - -ZA[7]+=ZCh(ZA[22],ZA[14],ZA[20]); -ZA[7]+=ZA[0]; -ZA[7]+=0x4d2c6dfcU; -ZA[7]+=ZR26(ZA[22]); -ZA[1]+=ZR15(ZA[0]); -ZA[1]+=ZR25(ZA[2]); -ZA[1]+=ZA[16]; - -ZA[21]=ZA[7]; -ZA[21]+=ZMa(ZA[24],ZA[10],ZA[5]); -ZA[21]+=ZR30(ZA[5]); -ZA[7]+=ZA[23]; -ZA[20]+=ZCh(ZA[7],ZA[22],ZA[14]); -ZA[20]+=ZA[3]; -ZA[20]+=0x53380d13U; -ZA[20]+=ZR26(ZA[7]); -ZA[2]+=ZR15(ZA[3]); -ZA[2]+=ZR25(ZA[13]); -ZA[2]+=ZA[17]; - -ZA[10]+=ZA[20]; -ZA[20]+=ZMa(ZA[5],ZA[24],ZA[21]); -ZA[20]+=ZR30(ZA[21]); - -ZA[14]+=ZCh(ZA[10],ZA[7],ZA[22]); -ZA[14]+=ZA[1]; -ZA[14]+=0x650a7354U; -ZA[14]+=ZR26(ZA[10]); -ZA[13]+=ZR15(ZA[1]); -ZA[13]+=ZR25(ZA[11]); -ZA[13]+=ZA[4]; - -ZA[23]=ZA[14]; -ZA[23]+=ZMa(ZA[21],ZA[5],ZA[20]); -ZA[23]+=ZR30(ZA[20]); -ZA[14]+=ZA[24]; -ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); -ZA[22]+=ZA[2]; -ZA[22]+=0x766a0abbU; -ZA[22]+=ZR26(ZA[14]); -ZA[11]+=ZR15(ZA[2]); -ZA[11]+=ZR25(ZA[6]); -ZA[11]+=ZA[18]; - -ZA[5]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[21],ZA[23]); -ZA[22]+=ZR30(ZA[23]); - -ZA[7]+=ZCh(ZA[5],ZA[14],ZA[10]); -ZA[7]+=ZA[13]; -ZA[7]+=0x81c2c92eU; -ZA[7]+=ZR26(ZA[5]); -ZA[6]+=ZR15(ZA[13]); -ZA[6]+=ZR25(ZA[12]); -ZA[6]+=ZA[19]; -ZA[21]+=ZA[7]; -ZA[7]+=ZMa(ZA[23],ZA[20],ZA[22]); -ZA[7]+=ZR30(ZA[22]); -ZA[10]+=ZCh(ZA[21],ZA[5],ZA[14]); -ZA[10]+=ZA[11]; -ZA[10]+=0x92722c85U; -ZA[10]+=ZR26(ZA[21]); -ZA[12]+=ZR15(ZA[11]); -ZA[12]+=ZR25(ZA[8]); -ZA[12]+=ZA[0]; -ZA[20]+=ZA[10]; -ZA[10]+=ZMa(ZA[22],ZA[23],ZA[7]); -ZA[10]+=ZR30(ZA[7]); - -ZA[14]+=ZCh(ZA[20],ZA[21],ZA[5]); -ZA[14]+=ZA[6]; -ZA[14]+=0xa2bfe8a1U; -ZA[14]+=ZR26(ZA[20]); -ZA[8]+=ZR15(ZA[6]); -ZA[8]+=ZR25(ZA[9]); -ZA[8]+=ZA[3]; -ZA[23]+=ZA[14]; -ZA[14]+=ZMa(ZA[7],ZA[22],ZA[10]); -ZA[14]+=ZR30(ZA[10]); -ZA[5]+=ZCh(ZA[23],ZA[20],ZA[21]); -ZA[5]+=ZA[12]; -ZA[5]+=0xa81a664bU; -ZA[5]+=ZR26(ZA[23]); -ZA[9]+=ZR15(ZA[12]); -ZA[9]+=ZA[1]; -ZA[9]+=ZR25(ZA[15]); - -ZA[24]=ZA[5]; -ZA[24]+=ZMa(ZA[10],ZA[7],ZA[14]); -ZA[24]+=ZR30(ZA[14]); -ZA[22]+=ZA[5]; -ZA[21]+=ZCh(ZA[22],ZA[23],ZA[20]); -ZA[21]+=ZA[8]; -ZA[21]+=0xc24b8b70U; -ZA[21]+=ZR26(ZA[22]); -ZA[15]+=ZR15(ZA[8]); -ZA[15]+=ZA[2]; -ZA[15]+=ZR25(ZA[16]); - -ZA[7]+=ZA[21]; -ZA[21]+=ZMa(ZA[14],ZA[10],ZA[24]); -ZA[21]+=ZR30(ZA[24]); -ZA[20]+=ZCh(ZA[7],ZA[22],ZA[23]); -ZA[20]+=ZA[9]; -ZA[20]+=0xc76c51a3U; -ZA[20]+=ZR26(ZA[7]); -ZA[16]+=ZR15(ZA[9]); -ZA[16]+=ZR25(ZA[17]); -ZA[16]+=ZA[13]; -ZA[10]+=ZA[20]; -ZA[20]+=ZMa(ZA[24],ZA[14],ZA[21]); -ZA[20]+=ZR30(ZA[21]); -ZA[23]+=ZCh(ZA[10],ZA[7],ZA[22]); -ZA[23]+=ZA[15]; -ZA[23]+=0xd192e819U; -ZA[23]+=ZR26(ZA[10]); -ZA[17]+=ZR15(ZA[15]); -ZA[17]+=ZR25(ZA[4]); -ZA[17]+=ZA[11]; - -ZA[14]+=ZA[23]; -ZA[23]+=ZMa(ZA[21],ZA[24],ZA[20]); -ZA[23]+=ZR30(ZA[20]); -ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); -ZA[22]+=ZA[16]; -ZA[22]+=0xd6990624U; -ZA[22]+=ZR26(ZA[14]); -ZA[4]+=ZR15(ZA[16]); -ZA[4]+=ZA[6]; -ZA[4]+=ZR25(ZA[18]); -ZA[24]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[21],ZA[23]); -ZA[22]+=ZR30(ZA[23]); -ZA[7]+=ZCh(ZA[24],ZA[14],ZA[10]); -ZA[7]+=ZA[17]; -ZA[7]+=0xf40e3585U; -ZA[7]+=ZR26(ZA[24]); -ZA[18]+=ZR15(ZA[17]); -ZA[18]+=ZA[12]; -ZA[18]+=ZR25(ZA[19]); -ZA[21]+=ZA[7]; -ZA[7]+=ZMa(ZA[23],ZA[20],ZA[22]); -ZA[7]+=ZR30(ZA[22]); -ZA[10]+=ZCh(ZA[21],ZA[24],ZA[14]); -ZA[10]+=ZA[4]; -ZA[10]+=0x106aa070U; -ZA[10]+=ZR26(ZA[21]); -ZA[19]+=ZR15(ZA[4]); -ZA[19]+=ZA[8]; -ZA[19]+=ZR25(ZA[0]); -ZA[20]+=ZA[10]; -ZA[10]+=ZMa(ZA[22],ZA[23],ZA[7]); -ZA[10]+=ZR30(ZA[7]); -ZA[14]+=ZCh(ZA[20],ZA[21],ZA[24]); -ZA[14]+=ZA[18]; -ZA[14]+=0x19a4c116U; -ZA[14]+=ZR26(ZA[20]); -ZA[0]+=ZR15(ZA[18]); -ZA[0]+=ZA[9]; -ZA[0]+=ZR25(ZA[3]); -ZA[23]+=ZA[14]; -ZA[14]+=ZMa(ZA[7],ZA[22],ZA[10]); -ZA[14]+=ZR30(ZA[10]); -ZA[24]+=ZCh(ZA[23],ZA[20],ZA[21]); -ZA[24]+=ZA[19]; -ZA[24]+=0x1e376c08U; -ZA[24]+=ZR26(ZA[23]); -ZA[3]+=ZR15(ZA[19]); -ZA[3]+=ZA[15]; -ZA[3]+=ZR25(ZA[1]); -ZA[22]+=ZA[24]; -ZA[24]+=ZMa(ZA[10],ZA[7],ZA[14]); -ZA[24]+=ZR30(ZA[14]); -ZA[21]+=ZCh(ZA[22],ZA[23],ZA[20]); -ZA[21]+=ZA[0]; -ZA[21]+=0x2748774cU; -ZA[21]+=ZR26(ZA[22]); -ZA[1]+=ZR15(ZA[0]); -ZA[1]+=ZA[16]; -ZA[1]+=ZR25(ZA[2]); -ZA[7]+=ZA[21]; -ZA[21]+=ZMa(ZA[14],ZA[10],ZA[24]); -ZA[21]+=ZR30(ZA[24]); -ZA[20]+=ZCh(ZA[7],ZA[22],ZA[23]); -ZA[20]+=ZA[3]; -ZA[20]+=0x34b0bcb5U; -ZA[20]+=ZR26(ZA[7]); -ZA[2]+=ZR15(ZA[3]); -ZA[2]+=ZA[17]; -ZA[2]+=ZR25(ZA[13]); -ZA[10]+=ZA[20]; -ZA[20]+=ZMa(ZA[24],ZA[14],ZA[21]); -ZA[20]+=ZR30(ZA[21]); -ZA[23]+=ZCh(ZA[10],ZA[7],ZA[22]); -ZA[23]+=ZA[1]; -ZA[23]+=0x391c0cb3U; -ZA[23]+=ZR26(ZA[10]); -ZA[13]+=ZR15(ZA[1]); -ZA[13]+=ZA[4]; -ZA[13]+=ZR25(ZA[11]); -ZA[14]+=ZA[23]; -ZA[23]+=ZMa(ZA[21],ZA[24],ZA[20]); -ZA[23]+=ZR30(ZA[20]); -ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); -ZA[22]+=ZA[2]; -ZA[22]+=0x4ed8aa4aU; -ZA[22]+=ZR26(ZA[14]); -ZA[11]+=ZR15(ZA[2]); -ZA[11]+=ZA[18]; -ZA[11]+=ZR25(ZA[6]); -ZA[24]+=ZA[22]; -ZA[22]+=ZMa(ZA[20],ZA[21],ZA[23]); -ZA[22]+=ZR30(ZA[23]); -ZA[7]+=ZCh(ZA[24],ZA[14],ZA[10]); -ZA[7]+=ZA[13]; -ZA[7]+=0x5b9cca4fU; -ZA[7]+=ZR26(ZA[24]); -ZA[6]+=ZR15(ZA[13]); -ZA[6]+=ZA[19]; -ZA[6]+=ZR25(ZA[12]); -ZA[21]+=ZA[7]; -ZA[7]+=ZMa(ZA[23],ZA[20],ZA[22]); -ZA[7]+=ZR30(ZA[22]); -ZA[10]+=ZCh(ZA[21],ZA[24],ZA[14]); -ZA[10]+=ZA[11]; -ZA[10]+=0x682e6ff3U; -ZA[10]+=ZR26(ZA[21]); -ZA[0]+=ZR15(ZA[11]); -ZA[0]+=ZR25(ZA[8]); -ZA[0]+=ZA[12]; - -ZA[20]+=ZA[10]; -ZA[10]+=ZMa(ZA[22],ZA[23],ZA[7]); -ZA[10]+=ZR30(ZA[7]); - -ZA[14]+=ZCh(ZA[20],ZA[21],ZA[24]); -ZA[14]+=ZA[6]; -ZA[14]+=0x748f82eeU; -ZA[14]+=ZR26(ZA[20]); -ZA[3]+=ZR15(ZA[6]); -ZA[3]+=ZR25(ZA[9]); -ZA[3]+=ZA[8]; -ZA[23]+=ZA[14]; -ZA[14]+=ZMa(ZA[7],ZA[22],ZA[10]); -ZA[14]+=ZR30(ZA[10]); -ZA[24]+=ZCh(ZA[23],ZA[20],ZA[21]); -ZA[24]+=ZA[0]; -ZA[24]+=0x78a5636fU; -ZA[24]+=ZR26(ZA[23]); -ZA[1]+=ZR15(ZA[0]); -ZA[1]+=ZR25(ZA[15]); -ZA[1]+=ZA[9]; - -ZA[22]+=ZA[24]; -ZA[24]+=ZMa(ZA[10],ZA[7],ZA[14]); -ZA[24]+=ZR30(ZA[14]); - -ZA[21]+=ZCh(ZA[22],ZA[23],ZA[20]); -ZA[21]+=ZA[3]; -ZA[21]+=0x84c87814U; -ZA[21]+=ZR26(ZA[22]); -ZA[2]+=ZR15(ZA[3]); -ZA[2]+=ZR25(ZA[16]); -ZA[2]+=ZA[15]; - -ZA[7]+=ZA[21]; -ZA[21]+=ZMa(ZA[14],ZA[10],ZA[24]); -ZA[21]+=ZR30(ZA[24]); -ZA[20]+=ZCh(ZA[7],ZA[22],ZA[23]); -ZA[20]+=ZA[1]; -ZA[20]+=0x8cc70208U; -ZA[20]+=ZR26(ZA[7]); -ZA[13]+=ZR15(ZA[1]); -ZA[13]+=ZR25(ZA[17]); -ZA[13]+=ZA[16]; -ZA[10]+=ZA[20]; -ZA[20]+=ZMa(ZA[24],ZA[14],ZA[21]); -ZA[20]+=ZR30(ZA[21]); - -ZA[23]+=ZCh(ZA[10],ZA[7],ZA[22]); -ZA[23]+=ZA[2]; -ZA[23]+=0x90befffaU; -ZA[23]+=ZR26(ZA[10]); -ZA[14]+=ZA[23]; -ZA[23]+=ZMa(ZA[21],ZA[24],ZA[20]); -ZA[23]+=ZR30(ZA[20]); -ZA[22]+=ZCh(ZA[14],ZA[10],ZA[7]); -ZA[22]+=ZA[13]; -ZA[22]+=0xa4506cebU; -ZA[22]+=ZR26(ZA[14]); -ZA[16]=ZA[22]; -ZA[16]+=ZMa(ZA[20],ZA[21],ZA[23]); -ZA[16]+=ZR30(ZA[23]); -ZA[24]+=ZA[22]; -ZA[7]+=ZCh(ZA[24],ZA[14],ZA[10]); -ZA[7]+=ZR15(ZA[2]); -ZA[7]+=ZA[11]; -ZA[7]+=ZR25(ZA[4]); -ZA[7]+=0xbef9a3f7U; -ZA[7]+=ZR26(ZA[24]); -ZA[7]+=ZA[17]; -ZA[21]+=ZA[7]; -ZA[7]+=ZMa(ZA[23],ZA[20],ZA[16]); -ZA[7]+=ZR30(ZA[16]); -ZA[6]+=ZCh(ZA[21],ZA[24],ZA[14]); -ZA[6]+=ZA[10]; -ZA[6]+=ZR15(ZA[13]); -ZA[6]+=ZR25(ZA[18]); -ZA[6]+=ZA[4]; -ZA[6]+=0xc67178f2U; -ZA[6]+=ZR26(ZA[21]); - -ZA[4]=state1; -ZA[4]+=ZA[7]; - -ZA[7]=ZMa(ZA[16],ZA[23],ZA[7])+ZR30(ZA[7]); -ZA[7]+=ZA[6]; -ZA[7]+=state0; - -ZA[18]=ZA[7]; -ZA[18]+=0x98c7e2a2U; - -ZA[17]=ZCh(ZA[18],0x510e527fU,0x9b05688cU); -ZA[17]+=ZA[4]; -ZA[17]+=0x90bb1e3cU; -ZA[17]+=ZR26(ZA[18]); -ZA[16]+=state2; - -ZA[2]=ZA[7]; -ZA[2]+=0xfc08884dU; - -ZA[13]=ZA[17]; -ZA[13]+=0x3c6ef372U; - -ZA[11]=ZCh(ZA[13],ZA[18],0x510e527fU); -ZA[11]+=ZA[16]; -ZA[11]+=0x50c6645bU; -ZA[11]+=ZR26(ZA[13]); -ZA[23]+=state3; -ZA[17]+=ZMa(0x6a09e667U,0xbb67ae85U,ZA[2]); -ZA[17]+=ZR30(ZA[2]); - -ZA[22]=ZA[11]; -ZA[22]+=0xbb67ae85U; - -ZA[18]=ZCh(ZA[22],ZA[13],ZA[18]); -ZA[18]+=ZR26(ZA[22]); -ZA[18]+=ZA[23]; -ZA[18]+=0x3ac42e24U; -ZA[20]+=state4; -ZA[20]+=ZA[6]; - -ZA[6]=ZA[18]; -ZA[6]+=0x6a09e667U; -ZA[11]+=ZMa(ZA[2],0x6a09e667U,ZA[17]); -ZA[11]+=ZR30(ZA[17]); -ZA[21]+=state5; - -ZA[10]=ZCh(ZA[6],ZA[22],ZA[13]); -ZA[10]+=ZA[20]; -ZA[10]+=ZA[7]; -ZA[10]+=0xd21ea4fdU; -ZA[10]+=ZR26(ZA[6]); - -ZA[12]=ZA[10]; -ZA[12]+=ZA[2]; -ZA[18]+=ZMa(ZA[17],ZA[2],ZA[11]); -ZA[18]+=ZR30(ZA[11]); -ZA[24]+=state6; -ZA[13]+=ZCh(ZA[12],ZA[6],ZA[22]); -ZA[13]+=ZA[21]; -ZA[13]+=0x59f111f1U; -ZA[13]+=ZR26(ZA[12]); - -ZA[2]=ZA[17]; -ZA[2]+=ZA[13]; -ZA[10]+=ZMa(ZA[11],ZA[17],ZA[18]); -ZA[10]+=ZR30(ZA[18]); -ZA[14]+=state7; -ZA[22]+=ZCh(ZA[2],ZA[12],ZA[6]); -ZA[22]+=ZA[24]; -ZA[22]+=0x923f82a4U; -ZA[22]+=ZR26(ZA[2]); - -ZA[17]=ZA[11]; -ZA[17]+=ZA[22]; -ZA[13]+=ZMa(ZA[18],ZA[11],ZA[10]); -ZA[13]+=ZR30(ZA[10]); -ZA[6]+=ZCh(ZA[17],ZA[2],ZA[12]); -ZA[6]+=ZA[14]; -ZA[6]+=0xab1c5ed5U; -ZA[6]+=ZR26(ZA[17]); - -ZA[11]=ZA[6]; -ZA[11]+=ZA[18]; -ZA[22]+=ZMa(ZA[10],ZA[18],ZA[13]); -ZA[22]+=ZR30(ZA[13]); -ZA[12]+=ZCh(ZA[11],ZA[17],ZA[2]); -ZA[12]+=0x5807aa98U; -ZA[12]+=ZR26(ZA[11]); - -ZA[18]=ZA[10]; -ZA[18]+=ZA[12]; -ZA[6]+=ZMa(ZA[13],ZA[10],ZA[22]); -ZA[6]+=ZR30(ZA[22]); -ZA[2]+=ZCh(ZA[18],ZA[11],ZA[17]); -ZA[2]+=0x12835b01U; -ZA[2]+=ZR26(ZA[18]); - -ZA[10]=ZA[2]; -ZA[10]+=ZA[13]; -ZA[12]+=ZMa(ZA[22],ZA[13],ZA[6]); -ZA[12]+=ZR30(ZA[6]); -ZA[17]+=ZCh(ZA[10],ZA[18],ZA[11]); -ZA[17]+=0x243185beU; -ZA[17]+=ZR26(ZA[10]); - -ZA[5]=ZA[17]; -ZA[5]+=ZA[22]; -ZA[2]+=ZMa(ZA[6],ZA[22],ZA[12]); -ZA[2]+=ZR30(ZA[12]); -ZA[11]+=ZCh(ZA[5],ZA[10],ZA[18]); -ZA[11]+=0x550c7dc3U; -ZA[11]+=ZR26(ZA[5]); - -ZA[22]=ZA[11]; -ZA[22]+=ZA[6]; -ZA[17]+=ZMa(ZA[12],ZA[6],ZA[2]); -ZA[17]+=ZR30(ZA[2]); -ZA[18]+=ZCh(ZA[22],ZA[5],ZA[10]); -ZA[18]+=0x72be5d74U; -ZA[18]+=ZR26(ZA[22]); - -ZA[6]=ZA[18]; -ZA[6]+=ZA[12]; -ZA[11]+=ZMa(ZA[2],ZA[12],ZA[17]); -ZA[11]+=ZR30(ZA[17]); -ZA[10]+=ZCh(ZA[6],ZA[22],ZA[5]); -ZA[10]+=0x80deb1feU; -ZA[10]+=ZR26(ZA[6]); - -ZA[12]=ZA[10]; -ZA[12]+=ZA[2]; -ZA[18]+=ZMa(ZA[17],ZA[2],ZA[11]); -ZA[18]+=ZR30(ZA[11]); -ZA[5]+=ZCh(ZA[12],ZA[6],ZA[22]); -ZA[5]+=0x9bdc06a7U; -ZA[5]+=ZR26(ZA[12]); -ZA[7]+=ZR25(ZA[4]); - -ZA[2]=ZA[5]; -ZA[2]+=ZA[17]; -ZA[10]+=ZMa(ZA[11],ZA[17],ZA[18]); -ZA[10]+=ZR30(ZA[18]); -ZA[22]+=ZCh(ZA[2],ZA[12],ZA[6]); -ZA[22]+=0xc19bf274U; -ZA[22]+=ZR26(ZA[2]); -ZA[4]+=ZR25(ZA[16]); -ZA[4]+=0x00a00000U; - -ZA[17]=ZA[22]; -ZA[17]+=ZA[11]; -ZA[5]+=ZMa(ZA[18],ZA[11],ZA[10]); -ZA[5]+=ZR30(ZA[10]); -ZA[6]+=ZCh(ZA[17],ZA[2],ZA[12]); -ZA[6]+=ZA[7]; -ZA[6]+=0xe49b69c1U; -ZA[6]+=ZR26(ZA[17]); - -ZA[0]=ZA[6]; -ZA[0]+=ZA[18]; -ZA[22]+=ZMa(ZA[10],ZA[18],ZA[5]); -ZA[22]+=ZR30(ZA[5]); -ZA[12]+=ZCh(ZA[0],ZA[17],ZA[2]); -ZA[12]+=ZA[4]; -ZA[12]+=0xefbe4786U; -ZA[12]+=ZR26(ZA[0]); -ZA[16]+=ZR15(ZA[7]); -ZA[16]+=ZR25(ZA[23]); -ZA[23]+=ZR15(ZA[4]); -ZA[23]+=ZR25(ZA[20]); - -ZA[6]+=ZMa(ZA[5],ZA[10],ZA[22]); -ZA[6]+=ZR30(ZA[22]); - -ZA[10]+=ZA[12]; -ZA[2]+=ZCh(ZA[10],ZA[0],ZA[17]); -ZA[2]+=0x0fc19dc6U; -ZA[2]+=ZA[16]; -ZA[2]+=ZR26(ZA[10]); - -ZA[20]+=ZR15(ZA[16]); -ZA[20]+=ZR25(ZA[21]); - -ZA[12]+=ZMa(ZA[22],ZA[5],ZA[6]); -ZA[12]+=ZR30(ZA[6]); - -ZA[5]+=ZA[2]; -ZA[17]+=ZCh(ZA[5],ZA[10],ZA[0]); -ZA[17]+=ZA[23]; -ZA[17]+=0x240ca1ccU; -ZA[17]+=ZR26(ZA[5]); -ZA[21]+=ZR15(ZA[23]); -ZA[21]+=ZR25(ZA[24]); - -ZA[2]+=ZMa(ZA[6],ZA[22],ZA[12]); -ZA[2]+=ZR30(ZA[12]); - -ZA[22]+=ZA[17]; -ZA[0]+=ZCh(ZA[22],ZA[5],ZA[10]); -ZA[0]+=ZA[20]; -ZA[0]+=0x2de92c6fU; -ZA[0]+=ZR26(ZA[22]); -ZA[24]+=ZR15(ZA[20]); -ZA[24]+=0x00000100U; -ZA[24]+=ZR25(ZA[14]); - -ZA[17]+=ZMa(ZA[12],ZA[6],ZA[2]); -ZA[17]+=ZR30(ZA[2]); - -ZA[6]+=ZA[0]; -ZA[10]+=ZCh(ZA[6],ZA[22],ZA[5]); -ZA[10]+=ZA[21]; -ZA[10]+=0x4a7484aaU; -ZA[10]+=ZR26(ZA[6]); -ZA[14]+=ZA[7]; -ZA[14]+=ZR15(ZA[21]); -ZA[14]+=0x11002000U; - -ZA[0]+=ZMa(ZA[2],ZA[12],ZA[17]); -ZA[0]+=ZR30(ZA[17]); - -ZA[12]+=ZA[10]; -ZA[5]+=ZCh(ZA[12],ZA[6],ZA[22]); -ZA[5]+=ZA[24]; -ZA[5]+=0x5cb0a9dcU; -ZA[5]+=ZR26(ZA[12]); - -ZA[19]=ZR15(ZA[24]); -ZA[19]+=ZA[4]; -ZA[19]+=0x80000000U; - -ZA[9]=ZA[5]; -ZA[9]+=ZA[2]; -ZA[10]+=ZMa(ZA[17],ZA[2],ZA[0]); -ZA[10]+=ZR30(ZA[0]); -ZA[22]+=ZCh(ZA[9],ZA[12],ZA[6]); -ZA[22]+=ZA[14]; -ZA[22]+=0x76f988daU; -ZA[22]+=ZR26(ZA[9]); - -ZA[2]=ZR15(ZA[14]); -ZA[2]+=ZA[16]; - -ZA[1]=ZA[22]; -ZA[1]+=ZA[17]; -ZA[5]+=ZMa(ZA[0],ZA[17],ZA[10]); -ZA[5]+=ZR30(ZA[10]); -ZA[6]+=ZCh(ZA[1],ZA[9],ZA[12]); -ZA[6]+=ZA[19]; -ZA[6]+=0x983e5152U; -ZA[6]+=ZR26(ZA[1]); - -ZA[17]=ZR15(ZA[19]); -ZA[17]+=ZA[23]; - -ZA[15]=ZA[6]; -ZA[15]+=ZA[0]; -ZA[22]+=ZMa(ZA[10],ZA[0],ZA[5]); -ZA[22]+=ZR30(ZA[5]); -ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); -ZA[12]+=ZA[2]; -ZA[12]+=0xa831c66dU; -ZA[12]+=ZR26(ZA[15]); - -ZA[0]=ZR15(ZA[2]); -ZA[0]+=ZA[20]; - -ZA[13]=ZA[12]; -ZA[13]+=ZA[10]; -ZA[10]=ZMa(ZA[5],ZA[10],ZA[22]); -ZA[10]+=ZA[6]; -ZA[10]+=ZR30(ZA[22]); -ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); -ZA[9]+=ZA[17]; -ZA[9]+=0xb00327c8U; -ZA[9]+=ZR26(ZA[13]); - -ZA[6]=ZR15(ZA[17]); -ZA[6]+=ZA[21]; - -ZA[8]=ZA[9]; -ZA[8]+=ZA[5]; -ZA[12]+=ZMa(ZA[22],ZA[5],ZA[10]); -ZA[12]+=ZR30(ZA[10]); -ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); -ZA[1]+=ZA[0]; -ZA[1]+=0xbf597fc7U; -ZA[1]+=ZR26(ZA[8]); - -ZA[11]=ZR15(ZA[0]); -ZA[11]+=ZA[24]; - -ZA[3]=ZA[1]; -ZA[3]+=ZA[22]; -ZA[9]+=ZMa(ZA[10],ZA[22],ZA[12]); -ZA[9]+=ZR30(ZA[12]); -ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); -ZA[15]+=ZA[6]; -ZA[15]+=0xc6e00bf3U; -ZA[15]+=ZR26(ZA[3]); - -ZA[5]=ZR15(ZA[6]); -ZA[5]+=ZA[14]; -ZA[5]+=0x00400022U; - -ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); -ZA[1]+=ZR30(ZA[9]); - -ZA[10]+=ZA[15]; -ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); -ZA[13]+=ZA[11]; -ZA[13]+=0xd5a79147U; -ZA[13]+=ZR26(ZA[10]); - -ZA[22]=ZR15(ZA[11]); -ZA[22]+=ZA[19]; -ZA[22]+=ZR25(ZA[7]); -ZA[22]+=0x00000100U; - -ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); -ZA[15]+=ZR30(ZA[1]); - -ZA[12]+=ZA[13]; -ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); -ZA[8]+=ZA[5]; -ZA[8]+=0x06ca6351U; -ZA[8]+=ZR26(ZA[12]); -ZA[7]+=ZR15(ZA[5]); -ZA[7]+=ZR25(ZA[4]); -ZA[7]+=ZA[2]; - -ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); -ZA[13]+=ZR30(ZA[15]); - -ZA[9]+=ZA[8]; -ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); -ZA[3]+=ZA[22]; -ZA[3]+=0x14292967U; -ZA[3]+=ZR26(ZA[9]); -ZA[4]+=ZR15(ZA[22]); -ZA[4]+=ZR25(ZA[16]); -ZA[4]+=ZA[17]; - -ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); -ZA[8]+=ZR30(ZA[13]); - -ZA[1]+=ZA[3]; -ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); -ZA[10]+=ZA[7]; -ZA[10]+=0x27b70a85U; -ZA[10]+=ZR26(ZA[1]); -ZA[16]+=ZR15(ZA[7]); -ZA[16]+=ZA[0]; -ZA[16]+=ZR25(ZA[23]); - -ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); -ZA[3]+=ZR30(ZA[8]); - -ZA[15]+=ZA[10]; -ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); -ZA[12]+=ZA[4]; -ZA[12]+=0x2e1b2138U; -ZA[12]+=ZR26(ZA[15]); -ZA[23]+=ZR15(ZA[4]); -ZA[23]+=ZA[6]; -ZA[23]+=ZR25(ZA[20]); - -ZA[10]+=ZMa(ZA[8],ZA[13],ZA[3]); -ZA[10]+=ZR30(ZA[3]); - -ZA[13]+=ZA[12]; -ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); -ZA[9]+=ZA[16]; -ZA[9]+=0x4d2c6dfcU; -ZA[9]+=ZR26(ZA[13]); -ZA[20]+=ZR15(ZA[16]); -ZA[20]+=ZR25(ZA[21]); -ZA[20]+=ZA[11]; - -ZA[12]+=ZMa(ZA[3],ZA[8],ZA[10]); -ZA[12]+=ZR30(ZA[10]); - -ZA[8]+=ZA[9]; -ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); -ZA[1]+=ZA[23]; -ZA[1]+=0x53380d13U; -ZA[1]+=ZR26(ZA[8]); -ZA[21]+=ZR15(ZA[23]); -ZA[21]+=ZA[5]; -ZA[21]+=ZR25(ZA[24]); - -ZA[9]+=ZMa(ZA[10],ZA[3],ZA[12]); -ZA[9]+=ZR30(ZA[12]); - -ZA[3]+=ZA[1]; -ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); -ZA[15]+=ZA[20]; -ZA[15]+=0x650a7354U; -ZA[15]+=ZR26(ZA[3]); -ZA[24]+=ZR15(ZA[20]); -ZA[24]+=ZA[22]; -ZA[24]+=ZR25(ZA[14]); - -ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); -ZA[1]+=ZR30(ZA[9]); - -ZA[10]+=ZA[15]; -ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); -ZA[13]+=ZA[21]; -ZA[13]+=0x766a0abbU; -ZA[13]+=ZR26(ZA[10]); -ZA[14]+=ZR15(ZA[21]); -ZA[14]+=ZA[7]; -ZA[14]+=ZR25(ZA[19]); - -ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); -ZA[15]+=ZR30(ZA[1]); - -ZA[12]+=ZA[13]; -ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); -ZA[8]+=ZA[24]; -ZA[8]+=0x81c2c92eU; -ZA[8]+=ZR26(ZA[12]); -ZA[19]+=ZR15(ZA[24]); -ZA[19]+=ZA[4]; -ZA[19]+=ZR25(ZA[2]); - -ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); -ZA[13]+=ZR30(ZA[15]); - -ZA[9]+=ZA[8]; -ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); -ZA[3]+=ZA[14]; -ZA[3]+=0x92722c85U; -ZA[3]+=ZR26(ZA[9]); -ZA[2]+=ZR15(ZA[14]); -ZA[2]+=ZA[16]; -ZA[2]+=ZR25(ZA[17]); - -ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); -ZA[8]+=ZR30(ZA[13]); - -ZA[1]+=ZA[3]; -ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); -ZA[10]+=ZA[19]; -ZA[10]+=0xa2bfe8a1U; -ZA[10]+=ZR26(ZA[1]); -ZA[17]+=ZR15(ZA[19]); -ZA[17]+=ZA[23]; -ZA[17]+=ZR25(ZA[0]); - -ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); -ZA[3]+=ZR30(ZA[8]); - -ZA[15]+=ZA[10]; -ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); -ZA[12]+=ZA[2]; -ZA[12]+=0xa81a664bU; -ZA[12]+=ZR26(ZA[15]); -ZA[0]+=ZR15(ZA[2]); -ZA[0]+=ZA[20]; -ZA[0]+=ZR25(ZA[6]); - -ZA[10]+=ZMa(ZA[8],ZA[13],ZA[3]); -ZA[10]+=ZR30(ZA[3]); - -ZA[13]+=ZA[12]; -ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); -ZA[9]+=ZA[17]; -ZA[9]+=0xc24b8b70U; -ZA[9]+=ZR26(ZA[13]); -ZA[6]+=ZR15(ZA[17]); -ZA[6]+=ZA[21]; -ZA[6]+=ZR25(ZA[11]); - -ZA[12]+=ZMa(ZA[3],ZA[8],ZA[10]); -ZA[12]+=ZR30(ZA[10]); - -ZA[8]+=ZA[9]; -ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); -ZA[1]+=ZA[0]; -ZA[1]+=0xc76c51a3U; -ZA[1]+=ZR26(ZA[8]); -ZA[11]+=ZR15(ZA[0]); -ZA[11]+=ZA[24]; -ZA[11]+=ZR25(ZA[5]); - -ZA[9]+=ZMa(ZA[10],ZA[3],ZA[12]); -ZA[9]+=ZR30(ZA[12]); - -ZA[3]+=ZA[1]; -ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); -ZA[15]+=ZA[6]; -ZA[15]+=0xd192e819U; -ZA[15]+=ZR26(ZA[3]); -ZA[5]+=ZR15(ZA[6]); -ZA[5]+=ZA[14]; -ZA[5]+=ZR25(ZA[22]); - -ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); -ZA[1]+=ZR30(ZA[9]); - -ZA[10]+=ZA[15]; -ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); -ZA[13]+=ZA[11]; -ZA[13]+=0xd6990624U; -ZA[13]+=ZR26(ZA[10]); -ZA[22]+=ZR15(ZA[11]); -ZA[22]+=ZA[19]; -ZA[22]+=ZR25(ZA[7]); - -ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); -ZA[15]+=ZR30(ZA[1]); - -ZA[12]+=ZA[13]; -ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); -ZA[8]+=ZA[5]; -ZA[8]+=0xf40e3585U; -ZA[8]+=ZR26(ZA[12]); -ZA[7]+=ZR15(ZA[5]); -ZA[7]+=ZA[2]; -ZA[7]+=ZR25(ZA[4]); - -ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); -ZA[13]+=ZR30(ZA[15]); - -ZA[9]+=ZA[8]; -ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); -ZA[3]+=ZA[22]; -ZA[3]+=0x106aa070U; -ZA[3]+=ZR26(ZA[9]); -ZA[4]+=ZR15(ZA[22]); -ZA[4]+=ZA[17]; -ZA[4]+=ZR25(ZA[16]); - -ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); -ZA[8]+=ZR30(ZA[13]); - -ZA[1]+=ZA[3]; -ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); -ZA[10]+=ZA[7]; -ZA[10]+=0x19a4c116U; -ZA[10]+=ZR26(ZA[1]); -ZA[16]+=ZR15(ZA[7]); -ZA[16]+=ZA[0]; -ZA[16]+=ZR25(ZA[23]); - -ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); -ZA[3]+=ZR30(ZA[8]); - -ZA[15]+=ZA[10]; -ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); -ZA[12]+=ZA[4]; -ZA[12]+=0x1e376c08U; -ZA[12]+=ZR26(ZA[15]); -ZA[23]+=ZR15(ZA[4]); -ZA[23]+=ZA[6]; -ZA[23]+=ZR25(ZA[20]); - -ZA[10]+=ZMa(ZA[8],ZA[13],ZA[3]); -ZA[10]+=ZR30(ZA[3]); - -ZA[13]+=ZA[12]; -ZA[9]+=ZCh(ZA[13],ZA[15],ZA[1]); -ZA[9]+=ZA[16]; -ZA[9]+=0x2748774cU; -ZA[9]+=ZR26(ZA[13]); -ZA[20]+=ZR15(ZA[16]); -ZA[20]+=ZA[11]; -ZA[20]+=ZR25(ZA[21]); - -ZA[12]+=ZMa(ZA[3],ZA[8],ZA[10]); -ZA[12]+=ZR30(ZA[10]); - -ZA[8]+=ZA[9]; -ZA[1]+=ZCh(ZA[8],ZA[13],ZA[15]); -ZA[1]+=ZA[23]; -ZA[1]+=0x34b0bcb5U; -ZA[1]+=ZR26(ZA[8]); -ZA[21]+=ZR15(ZA[23]); -ZA[21]+=ZA[5]; -ZA[21]+=ZR25(ZA[24]); - -ZA[9]+=ZMa(ZA[10],ZA[3],ZA[12]); -ZA[9]+=ZR30(ZA[12]); - -ZA[3]+=ZA[1]; -ZA[15]+=ZCh(ZA[3],ZA[8],ZA[13]); -ZA[15]+=ZA[20]; -ZA[15]+=0x391c0cb3U; -ZA[15]+=ZR26(ZA[3]); -ZA[24]+=ZR15(ZA[20]); -ZA[24]+=ZA[22]; -ZA[24]+=ZR25(ZA[14]); - -ZA[1]+=ZMa(ZA[12],ZA[10],ZA[9]); -ZA[1]+=ZR30(ZA[9]); - -ZA[10]+=ZA[15]; -ZA[13]+=ZCh(ZA[10],ZA[3],ZA[8]); -ZA[13]+=ZA[21]; -ZA[13]+=0x4ed8aa4aU; -ZA[13]+=ZR26(ZA[10]); -ZA[7]+=ZR15(ZA[21]); -ZA[7]+=ZR25(ZA[19]); -ZA[7]+=ZA[14]; - -ZA[15]+=ZMa(ZA[9],ZA[12],ZA[1]); -ZA[15]+=ZR30(ZA[1]); - -ZA[12]+=ZA[13]; -ZA[8]+=ZCh(ZA[12],ZA[10],ZA[3]); -ZA[8]+=ZA[24]; -ZA[8]+=0x5b9cca4fU; -ZA[8]+=ZR26(ZA[12]); -ZA[19]+=ZR15(ZA[24]); -ZA[19]+=ZA[4]; -ZA[19]+=ZR25(ZA[2]); - -ZA[13]+=ZMa(ZA[1],ZA[9],ZA[15]); -ZA[13]+=ZR30(ZA[15]); - -ZA[9]+=ZA[8]; -ZA[3]+=ZCh(ZA[9],ZA[12],ZA[10]); -ZA[3]+=ZA[7]; -ZA[3]+=0x682e6ff3U; -ZA[3]+=ZR26(ZA[9]); -ZA[16]+=ZR15(ZA[7]); -ZA[16]+=ZR25(ZA[17]); -ZA[16]+=ZA[2]; - -ZA[8]+=ZMa(ZA[15],ZA[1],ZA[13]); -ZA[8]+=ZR30(ZA[13]); - -ZA[1]+=ZA[3]; -ZA[10]+=ZCh(ZA[1],ZA[9],ZA[12]); -ZA[10]+=ZA[19]; -ZA[10]+=0x748f82eeU; -ZA[10]+=ZR26(ZA[1]); - -ZA[17]+=ZR15(ZA[19]); -ZA[17]+=ZA[23]; -ZA[17]+=ZR25(ZA[0]); - -ZA[3]+=ZR30(ZA[8]); -ZA[3]+=ZMa(ZA[13],ZA[15],ZA[8]); -ZA[15]+=ZA[10]; -ZA[12]+=ZCh(ZA[15],ZA[1],ZA[9]); -ZA[12]+=ZA[13]; -ZA[12]+=ZA[16]; -ZA[12]+=0x78a5636fU; -ZA[12]+=ZR26(ZA[15]); -ZA[9]+=ZR26(ZA[12]); -ZA[9]+=ZCh(ZA[12],ZA[15],ZA[1]); -ZA[9]+=ZA[8]; -ZA[9]+=ZA[17]; -ZA[9]+=0x84c87814U; -ZA[1]+=ZR26(ZA[9]); -ZA[1]+=ZCh(ZA[9],ZA[12],ZA[15]); -ZA[1]+=ZA[3]; -ZA[1]+=ZR15(ZA[16]); -ZA[1]+=ZA[20]; -ZA[1]+=ZR25(ZA[6]); -ZA[1]+=ZA[0]; -ZA[1]+=0x8cc70208U; - -#define FOUND (0x80) -#define NFLAG (0x7F) - -#if defined(VECTORS2) || defined(VECTORS4) -ZA[15]+=ZR26(ZA[1]); -ZA[15]+=ZCh(ZA[1],ZA[9],ZA[12]); -ZA[15]+=ZA[10]; -ZA[15]+=ZMa(ZA[8],ZA[13],ZA[3]); -ZA[15]+=ZR30(ZA[3]); -ZA[15]+=ZR15(ZA[17]); -ZA[15]+=ZA[21]; -ZA[15]+=ZR25(ZA[11]); -ZA[15]+=ZA[6]; - - if (any(ZA[15] == 0x136032EDU)) { - if (ZA[15].x == 0x136032EDU) - output[FOUND] = output[NFLAG & Znonce.x] = Znonce.x; - if (ZA[15].y == 0x136032EDU) - output[FOUND] = output[NFLAG & Znonce.y] = Znonce.y; -#if defined(VECTORS4) - if (ZA[15].z == 0x136032EDU) - output[FOUND] = output[NFLAG & Znonce.z] = Znonce.z; - if (ZA[15].w == 0x136032EDU) - output[FOUND] = output[NFLAG & Znonce.w] = Znonce.w; -#endif - } -#else - if (ZA[15]+(ZCh(ZA[1],ZA[9],ZA[12])+ZA[10]+ZMa(ZA[8],ZA[13],ZA[3])+ - ZR30(ZA[3])+ZR15(ZA[17])+ZA[21]+ZR25(ZA[11])+ZA[6])+ZR26(ZA[1]) == 0x136032EDU) - output[FOUND] = output[NFLAG & Znonce] = Znonce; -#endif -} diff --git a/diablo120328.cl b/diablo120328.cl new file mode 100644 index 00000000..e9d2d87f --- /dev/null +++ b/diablo120328.cl @@ -0,0 +1,1274 @@ +/* + * DiabloMiner - OpenCL miner for BitCoin + * Copyright (C) 2010, 2011, 2012 Patrick McFarland + * + * 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 . + */ + +#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__((vec_type_hint(z))) +__attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) +void search( +#ifndef GOFFSET + const z base, +#endif + 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]; + +#ifdef GOFFSET + const z Znonce = (uint)(get_global_id(0)); +#else + const z Znonce = base + (uint)(get_global_id(0)); +#endif + + ZA[15] = Znonce + PreVal4_state0; + + ZA[16] = (ZCh(ZA[15], b1, c1) + d1) + ZR26(ZA[15]); + ZA[26] = Znonce + PreVal4_T1; + + ZA[27] = ZMa(f1, g1, ZA[26]) + ZR30(ZA[26]); + ZA[17] = ZA[16] + h1; + + ZA[19] = (ZCh(ZA[17], ZA[15], b1) + c1_plus_k5) + ZR26(ZA[17]); + ZA[28] = ZA[27] + ZA[16]; + + ZA[548] = ZMa(ZA[26], f1, ZA[28]) + ZR30(ZA[28]); + ZA[20] = ZA[19] + g1; + + ZA[22] = (ZCh(ZA[20], ZA[17], ZA[15]) + b1_plus_k6) + ZR26(ZA[20]); + ZA[29] = ZA[548] + ZA[19]; + + ZA[549] = ZMa(ZA[28], ZA[26], ZA[29]) + ZR30(ZA[29]); + ZA[23] = ZA[22] + f1; + + ZA[24] = ZCh(ZA[23], ZA[20], ZA[17]) + ZR26(ZA[23]); + ZA[180] = Znonce + PreVal4_state0_k7; + ZA[30] = ZA[549] + ZA[22]; + + ZA[31] = ZMa(ZA[29], ZA[28], ZA[30]) + ZR30(ZA[30]); + ZA[181] = ZA[180] + ZA[24]; + + ZA[182] = ZA[181] + ZA[26]; + ZA[183] = ZA[181] + ZA[31]; + ZA[18] = ZA[17] + 0xd807aa98U; + + ZA[186] = (ZCh(ZA[182], ZA[23], ZA[20]) + ZA[18]) + ZR26(ZA[182]); + ZA[184] = ZMa(ZA[30], ZA[29], ZA[183]) + ZR30(ZA[183]); + + ZA[187] = ZA[186] + ZA[28]; + ZA[188] = ZA[186] + ZA[184]; + ZA[21] = ZA[20] + 0x12835b01U; + + ZA[191] = (ZCh(ZA[187], ZA[182], ZA[23]) + ZA[21]) + ZR26(ZA[187]); + ZA[189] = ZMa(ZA[183], ZA[30], ZA[188]) + ZR30(ZA[188]); + + ZA[192] = ZA[191] + ZA[29]; + ZA[193] = ZA[191] + ZA[189]; + ZA[25] = ZA[23] + 0x243185beU; + + ZA[196] = (ZCh(ZA[192], ZA[187], ZA[182]) + ZA[25]) + ZR26(ZA[192]); + ZA[194] = ZMa(ZA[188], ZA[183], ZA[193]) + ZR30(ZA[193]); + + ZA[197] = ZA[196] + ZA[30]; + ZA[198] = ZA[196] + ZA[194]; + ZA[185] = ZA[182] + 0x550c7dc3U; + + ZA[201] = (ZCh(ZA[197], ZA[192], ZA[187]) + ZA[185]) + ZR26(ZA[197]); + ZA[199] = ZMa(ZA[193], ZA[188], ZA[198]) + ZR30(ZA[198]); + + ZA[202] = ZA[201] + ZA[183]; + ZA[203] = ZA[201] + ZA[199]; + ZA[190] = ZA[187] + 0x72be5d74U; + + ZA[206] = (ZCh(ZA[202], ZA[197], ZA[192]) + ZA[190]) + ZR26(ZA[202]); + ZA[204] = ZMa(ZA[198], ZA[193], ZA[203]) + ZR30(ZA[203]); + + ZA[207] = ZA[206] + ZA[188]; + ZA[208] = ZA[206] + ZA[204]; + ZA[195] = ZA[192] + 0x80deb1feU; + + ZA[211] = (ZCh(ZA[207], ZA[202], ZA[197]) + ZA[195]) + ZR26(ZA[207]); + ZA[209] = ZMa(ZA[203], ZA[198], ZA[208]) + ZR30(ZA[208]); + + ZA[212] = ZA[193] + ZA[211]; + ZA[213] = ZA[211] + ZA[209]; + ZA[200] = ZA[197] + 0x9bdc06a7U; + + ZA[216] = (ZCh(ZA[212], ZA[207], ZA[202]) + ZA[200]) + ZR26(ZA[212]); + ZA[214] = ZMa(ZA[208], ZA[203], ZA[213]) + ZR30(ZA[213]); + + ZA[217] = ZA[198] + ZA[216]; + ZA[218] = ZA[216] + ZA[214]; + ZA[205] = ZA[202] + 0xc19bf3f4U; + + ZA[220] = (ZCh(ZA[217], ZA[212], ZA[207]) + ZA[205]) + ZR26(ZA[217]); + ZA[219] = ZMa(ZA[213], ZA[208], ZA[218]) + ZR30(ZA[218]); + + ZA[222] = ZA[203] + ZA[220]; + ZA[223] = ZA[220] + ZA[219]; + ZA[210] = ZA[207] + W16_plus_K16; + + ZA[226] = (ZCh(ZA[222], ZA[217], ZA[212]) + ZA[210]) + ZR26(ZA[222]); + ZA[225] = ZMa(ZA[218], ZA[213], ZA[223]) + ZR30(ZA[223]); + + ZA[0] = ZR25(Znonce) + W18; + ZA[228] = ZA[226] + ZA[225]; + ZA[227] = ZA[208] + ZA[226]; + ZA[215] = ZA[212] + W17_plus_K17; + + ZA[231] = (ZCh(ZA[227], ZA[222], ZA[217]) + ZA[215]) + ZR26(ZA[227]); + ZA[229] = ZMa(ZA[223], ZA[218], ZA[228]) + ZR30(ZA[228]); + ZA[1] = ZA[0] + 0x0fc19dc6U; + + ZA[232] = ZA[213] + ZA[231]; + ZA[233] = ZA[231] + ZA[229]; + ZA[221] = ZA[217] + ZA[1]; + ZA[32] = Znonce + W19; + + ZA[236] = (ZCh(ZA[232], ZA[227], ZA[222]) + ZA[221]) + ZR26(ZA[232]); + ZA[234] = ZMa(ZA[228], ZA[223], ZA[233]) + ZR30(ZA[233]); + ZA[33] = ZA[32] + 0x240ca1ccU; + + ZA[3] = ZR15(ZA[0]) + 0x80000000U; + ZA[238] = ZA[236] + ZA[234]; + ZA[237] = ZA[218] + ZA[236]; + ZA[224] = ZA[222] + ZA[33]; + + ZA[241] = (ZCh(ZA[237], ZA[232], ZA[227]) + ZA[224]) + ZR26(ZA[237]); + ZA[239] = ZMa(ZA[233], ZA[228], ZA[238]) + ZR30(ZA[238]); + ZA[4] = ZA[3] + 0x2de92c6fU; + + ZA[35] = ZR15(ZA[32]); + ZA[243] = ZA[241] + ZA[239]; + ZA[242] = ZA[223] + ZA[241]; + ZA[230] = ZA[227] + ZA[4]; + + ZA[246] = (ZCh(ZA[242], ZA[237], ZA[232]) + ZA[230]) + ZR26(ZA[242]); + ZA[244] = ZMa(ZA[238], ZA[233], ZA[243]) + ZR30(ZA[243]); + ZA[36] = ZA[35] + 0x4a7484aaU; + + ZA[7] = ZR15(ZA[3]) + 0x00000280U; + ZA[248] = ZA[246] + ZA[244]; + ZA[247] = ZA[228] + ZA[246]; + ZA[235] = ZA[232] + ZA[36]; + + ZA[251] = (ZCh(ZA[247], ZA[242], ZA[237]) + ZA[235]) + ZR26(ZA[247]); + ZA[249] = ZMa(ZA[243], ZA[238], ZA[248]) + ZR30(ZA[248]); + ZA[8] = ZA[7] + 0x5cb0a9dcU; + + ZA[38] = ZR15(ZA[35]) + W16; + ZA[253] = ZA[251] + ZA[249]; + ZA[252] = ZA[233] + ZA[251]; + ZA[240] = ZA[237] + ZA[8]; + + ZA[256] = (ZCh(ZA[252], ZA[247], ZA[242]) + ZA[240]) + ZR26(ZA[252]); + ZA[254] = ZMa(ZA[248], ZA[243], ZA[253]) + ZR30(ZA[253]); + ZA[40] = ZA[38] + 0x76f988daU; + + ZA[10] = ZR15(ZA[7]) + W17; + ZA[258] = ZA[256] + ZA[254]; + ZA[257] = ZA[238] + ZA[256]; + ZA[245] = ZA[242] + ZA[40]; + + ZA[261] = (ZCh(ZA[257], ZA[252], ZA[247]) + ZA[245]) + ZR26(ZA[257]); + ZA[259] = ZMa(ZA[253], ZA[248], ZA[258]) + ZR30(ZA[258]); + ZA[13] = ZA[10] + 0x983e5152U; + + ZA[43] = ZR15(ZA[38]) + ZA[0]; + ZA[263] = ZA[261] + ZA[259]; + ZA[262] = ZA[243] + ZA[261]; + ZA[250] = ZA[247] + ZA[13]; + + ZA[266] = (ZCh(ZA[262], ZA[257], ZA[252]) + ZA[250]) + ZR26(ZA[262]); + ZA[264] = ZMa(ZA[258], ZA[253], ZA[263]) + ZR30(ZA[263]); + ZA[11] = ZR15(ZA[10]); + ZA[45] = ZA[43] + 0xa831c66dU; + + ZA[52] = ZA[11] + ZA[32]; + ZA[267] = ZA[248] + ZA[266]; + ZA[255] = ZA[252] + ZA[45]; + ZA[268] = ZA[266] + ZA[264]; + + ZA[271] = (ZCh(ZA[267], ZA[262], ZA[257]) + ZA[255]) + ZR26(ZA[267]); + ZA[269] = ZMa(ZA[263], ZA[258], ZA[268]) + ZR30(ZA[268]); + ZA[54] = ZA[52] + 0xb00327c8U; + + ZA[48] = ZR15(ZA[43]) + ZA[3]; + ZA[273] = ZA[271] + ZA[269]; + ZA[272] = ZA[253] + ZA[271]; + ZA[260] = ZA[257] + ZA[54]; + + ZA[276] = (ZCh(ZA[272], ZA[267], ZA[262]) + ZA[260]) + ZR26(ZA[272]); + ZA[274] = ZMa(ZA[268], ZA[263], ZA[273]) + ZR30(ZA[273]); + ZA[49] = ZA[48] + 0xbf597fc7U; + + ZA[61] = ZR15(ZA[52]) + ZA[35]; + ZA[278] = ZA[276] + ZA[274]; + ZA[277] = ZA[258] + ZA[276]; + ZA[265] = ZA[262] + ZA[49]; + + ZA[281] = (ZCh(ZA[277], ZA[272], ZA[267]) + ZA[265]) + ZR26(ZA[277]); + ZA[279] = ZMa(ZA[273], ZA[268], ZA[278]) + ZR30(ZA[278]); + ZA[62] = ZA[61] + 0xc6e00bf3U; + + ZA[53] = ZR15(ZA[48]) + ZA[7]; + ZA[283] = ZA[281] + ZA[279]; + ZA[282] = ZA[263] + ZA[281]; + ZA[270] = ZA[267] + ZA[62]; + + ZA[286] = (ZCh(ZA[282], ZA[277], ZA[272]) + ZA[270]) + ZR26(ZA[282]); + ZA[284] = ZMa(ZA[278], ZA[273], ZA[283]) + ZR30(ZA[283]); + ZA[39] = ZA[38] + 0x00A00055U; + ZA[55] = ZA[53] + 0xd5a79147U; + + ZA[66] = ZR15(ZA[61]) + ZA[39]; + ZA[288] = ZA[286] + ZA[284]; + ZA[287] = ZA[268] + ZA[286]; + ZA[275] = ZA[272] + ZA[55]; + + ZA[291] = (ZCh(ZA[287], ZA[282], ZA[277]) + ZA[275]) + ZR26(ZA[287]); + ZA[289] = ZMa(ZA[283], ZA[278], ZA[288]) + ZR30(ZA[288]); + ZA[12] = ZA[10] + W31; + ZA[68] = ZA[66] + 0x06ca6351U; + + ZA[67] = ZR15(ZA[53]) + ZA[12]; + ZA[293] = ZA[291] + ZA[289]; + ZA[292] = ZA[273] + ZA[291]; + ZA[280] = ZA[277] + ZA[68]; + + ZA[296] = (ZCh(ZA[292], ZA[287], ZA[282]) + ZA[280]) + ZR26(ZA[292]); + ZA[294] = ZMa(ZA[288], ZA[283], ZA[293]) + ZR30(ZA[293]); + ZA[2] = ZR25(ZA[0]); + ZA[69] = ZA[67] + 0x14292967U; + ZA[44] = ZA[43] + W32; + + ZA[75] = ZR15(ZA[66]) + ZA[44]; + ZA[298] = ZA[296] + ZA[294]; + ZA[297] = ZA[278] + ZA[296]; + ZA[285] = ZA[282] + ZA[69]; + ZA[5] = ZA[2] + W17; + + ZA[301] = (ZCh(ZA[297], ZA[292], ZA[287]) + ZA[285]) + ZR26(ZA[297]); + ZA[299] = ZMa(ZA[293], ZA[288], ZA[298]) + ZR30(ZA[298]); + ZA[56] = ZA[52] + ZA[5]; + ZA[76] = ZA[75] + 0x27b70a85U; + + ZA[34] = ZR25(ZA[32]) + ZA[0]; + ZA[70] = ZR15(ZA[67]) + ZA[56]; + ZA[302] = ZA[283] + ZA[301]; + ZA[303] = ZA[301] + ZA[299]; + ZA[290] = ZA[287] + ZA[76]; + + ZA[306] = (ZCh(ZA[302], ZA[297], ZA[292]) + ZA[290]) + ZR26(ZA[302]); + ZA[304] = ZMa(ZA[298], ZA[293], ZA[303]) + ZR30(ZA[303]); + ZA[6] = ZR25(ZA[3]); + ZA[77] = ZA[70] + 0x2e1b2138U; + ZA[50] = ZA[34] + ZA[48]; + + ZA[78] = ZR15(ZA[75]) + ZA[50]; + ZA[308] = ZA[306] + ZA[304]; + ZA[307] = ZA[288] + ZA[306]; + ZA[295] = ZA[292] + ZA[77]; + ZA[41] = ZA[32] + ZA[6]; + + ZA[311] = (ZCh(ZA[307], ZA[302], ZA[297]) + ZA[295]) + ZR26(ZA[307]); + ZA[309] = ZMa(ZA[303], ZA[298], ZA[308]) + ZR30(ZA[308]); + ZA[63] = ZA[41] + ZA[61]; + ZA[85] = ZA[78] + 0x4d2c6dfcU; + + ZA[37] = ZR25(ZA[35]) + ZA[3]; + ZA[79] = ZR15(ZA[70]) + ZA[63]; + ZA[312] = ZA[293] + ZA[311]; + ZA[313] = ZA[311] + ZA[309]; + ZA[300] = ZA[297] + ZA[85]; + + ZA[316] = (ZCh(ZA[312], ZA[307], ZA[302]) + ZA[300]) + ZR26(ZA[312]); + ZA[314] = ZMa(ZA[308], ZA[303], ZA[313]) + ZR30(ZA[313]); + ZA[9] = ZR25(ZA[7]); + ZA[86] = ZA[79] + 0x53380d13U; + ZA[57] = ZA[37] + ZA[53]; + + ZA[87] = ZR15(ZA[78]) + ZA[57]; + ZA[318] = ZA[316] + ZA[314]; + ZA[317] = ZA[298] + ZA[316]; + ZA[305] = ZA[302] + ZA[86]; + ZA[46] = ZA[35] + ZA[9]; + + ZA[321] = (ZCh(ZA[317], ZA[312], ZA[307]) + ZA[305]) + ZR26(ZA[317]); + ZA[319] = ZMa(ZA[313], ZA[308], ZA[318]) + ZR30(ZA[318]); + ZA[71] = ZA[46] + ZA[66]; + ZA[92] = ZA[87] + 0x650a7354U; + + ZA[42] = ZR25(ZA[38]) + ZA[7]; + ZA[88] = ZR15(ZA[79]) + ZA[71]; + ZA[322] = ZA[303] + ZA[321]; + ZA[323] = ZA[321] + ZA[319]; + ZA[310] = ZA[307] + ZA[92]; + + ZA[326] = (ZCh(ZA[322], ZA[317], ZA[312]) + ZA[310]) + ZR26(ZA[322]); + ZA[324] = ZMa(ZA[318], ZA[313], ZA[323]) + ZR30(ZA[323]); + ZA[14] = ZR25(ZA[10]); + ZA[93] = ZA[88] + 0x766a0abbU; + ZA[72] = ZA[42] + ZA[67]; + + ZA[94] = ZR15(ZA[87]) + ZA[72]; + ZA[328] = ZA[326] + ZA[324]; + ZA[327] = ZA[308] + ZA[326]; + ZA[315] = ZA[312] + ZA[93]; + ZA[51] = ZA[38] + ZA[14]; + + ZA[331] = (ZCh(ZA[327], ZA[322], ZA[317]) + ZA[315]) + ZR26(ZA[327]); + ZA[329] = ZMa(ZA[323], ZA[318], ZA[328]) + ZR30(ZA[328]); + ZA[80] = ZA[51] + ZA[75]; + ZA[100] = ZA[94] + 0x81c2c92eU; + + ZA[47] = ZR25(ZA[43]) + ZA[10]; + ZA[95] = ZR15(ZA[88]) + ZA[80]; + ZA[332] = ZA[313] + ZA[331]; + ZA[333] = ZA[331] + ZA[329]; + ZA[320] = ZA[317] + ZA[100]; + + ZA[336] = (ZCh(ZA[332], ZA[327], ZA[322]) + ZA[320]) + ZR26(ZA[332]); + ZA[334] = ZMa(ZA[328], ZA[323], ZA[333]) + ZR30(ZA[333]); + ZA[81] = ZA[47] + ZA[70]; + ZA[101] = ZA[95] + 0x92722c85U; + + ZA[58] = ZR25(ZA[52]) + ZA[43]; + ZA[102] = ZR15(ZA[94]) + ZA[81]; + ZA[337] = ZA[318] + ZA[336]; + ZA[338] = ZA[336] + ZA[334]; + ZA[325] = ZA[322] + ZA[101]; + + ZA[341] = (ZCh(ZA[337], ZA[332], ZA[327]) + ZA[325]) + ZR26(ZA[337]); + ZA[339] = ZMa(ZA[333], ZA[328], ZA[338]) + ZR30(ZA[338]); + ZA[89] = ZA[58] + ZA[78]; + ZA[108] = ZA[102] + 0xa2bfe8a1U; + + ZA[59] = ZR25(ZA[48]) + ZA[52]; + ZA[103] = ZR15(ZA[95]) + ZA[89]; + ZA[342] = ZA[323] + ZA[341]; + ZA[343] = ZA[341] + ZA[339]; + ZA[330] = ZA[327] + ZA[108]; + + ZA[346] = (ZCh(ZA[342], ZA[337], ZA[332]) + ZA[330]) + ZR26(ZA[342]); + ZA[344] = ZMa(ZA[338], ZA[333], ZA[343]) + ZR30(ZA[343]); + ZA[90] = ZA[59] + ZA[79]; + ZA[109] = ZA[103] + 0xa81a664bU; + + ZA[64] = ZR25(ZA[61]) + ZA[48]; + ZA[110] = ZR15(ZA[102]) + ZA[90]; + ZA[347] = ZA[328] + ZA[346]; + ZA[348] = ZA[346] + ZA[344]; + ZA[335] = ZA[332] + ZA[109]; + + ZA[351] = (ZCh(ZA[347], ZA[342], ZA[337]) + ZA[335]) + ZR26(ZA[347]); + ZA[349] = ZMa(ZA[343], ZA[338], ZA[348]) + ZR30(ZA[348]); + ZA[60] = ZR25(ZA[53]); + ZA[116] = ZA[110] + 0xc24b8b70U; + ZA[96] = ZA[87] + ZA[64]; + + ZA[111] = ZR15(ZA[103]) + ZA[96]; + ZA[353] = ZA[351] + ZA[349]; + ZA[352] = ZA[333] + ZA[351]; + ZA[340] = ZA[337] + ZA[116]; + ZA[65] = ZA[60] + ZA[61]; + + ZA[356] = (ZCh(ZA[352], ZA[347], ZA[342]) + ZA[340]) + ZR26(ZA[352]); + ZA[354] = ZMa(ZA[348], ZA[343], ZA[353]) + ZR30(ZA[353]); + ZA[97] = ZA[88] + ZA[65]; + ZA[117] = ZA[111] + 0xc76c51a3U; + + ZA[73] = ZR25(ZA[66]) + ZA[53]; + ZA[118] = ZR15(ZA[110]) + ZA[97]; + ZA[357] = ZA[338] + ZA[356]; + ZA[358] = ZA[356] + ZA[354]; + ZA[345] = ZA[342] + ZA[117]; + + ZA[361] = (ZCh(ZA[357], ZA[352], ZA[347]) + ZA[345]) + ZR26(ZA[357]); + ZA[359] = ZMa(ZA[353], ZA[348], ZA[358]) + ZR30(ZA[358]); + ZA[104] = ZA[73] + ZA[94]; + ZA[124] = ZA[118] + 0xd192e819U; + + ZA[74] = ZR25(ZA[67]) + ZA[66]; + ZA[119] = ZR15(ZA[111]) + ZA[104]; + ZA[362] = ZA[343] + ZA[361]; + ZA[363] = ZA[361] + ZA[359]; + ZA[350] = ZA[347] + ZA[124]; + + ZA[366] = (ZCh(ZA[362], ZA[357], ZA[352]) + ZA[350]) + ZR26(ZA[362]); + ZA[364] = ZMa(ZA[358], ZA[353], ZA[363]) + ZR30(ZA[363]); + ZA[105] = ZA[74] + ZA[95]; + ZA[125] = ZA[119] + 0xd6990624U; + + ZA[82] = ZR25(ZA[75]) + ZA[67]; + ZA[126] = ZR15(ZA[118]) + ZA[105]; + ZA[367] = ZA[348] + ZA[366]; + ZA[368] = ZA[366] + ZA[364]; + ZA[355] = ZA[352] + ZA[125]; + + ZA[371] = (ZCh(ZA[367], ZA[362], ZA[357]) + ZA[355]) + ZR26(ZA[367]); + ZA[369] = ZMa(ZA[363], ZA[358], ZA[368]) + ZR30(ZA[368]); + ZA[112] = ZA[102] + ZA[82]; + ZA[132] = ZA[126] + 0xf40e3585U; + + ZA[83] = ZR25(ZA[70]) + ZA[75]; + ZA[127] = ZR15(ZA[119]) + ZA[112]; + ZA[372] = ZA[353] + ZA[371]; + ZA[373] = ZA[371] + ZA[369]; + ZA[360] = ZA[357] + ZA[132]; + + ZA[376] = (ZCh(ZA[372], ZA[367], ZA[362]) + ZA[360]) + ZR26(ZA[372]); + ZA[374] = ZMa(ZA[368], ZA[363], ZA[373]) + ZR30(ZA[373]); + ZA[113] = ZA[103] + ZA[83]; + ZA[133] = ZA[127] + 0x106aa070U; + + ZA[84] = ZR25(ZA[78]) + ZA[70]; + ZA[134] = ZR15(ZA[126]) + ZA[113]; + ZA[377] = ZA[358] + ZA[376]; + ZA[378] = ZA[376] + ZA[374]; + ZA[365] = ZA[362] + ZA[133]; + + ZA[381] = (ZCh(ZA[377], ZA[372], ZA[367]) + ZA[365]) + ZR26(ZA[377]); + ZA[379] = ZMa(ZA[373], ZA[368], ZA[378]) + ZR30(ZA[378]); + ZA[120] = ZA[110] + ZA[84]; + ZA[140] = ZA[134] + 0x19a4c116U; + + ZA[91] = ZR25(ZA[79]) + ZA[78]; + ZA[135] = ZR15(ZA[127]) + ZA[120]; + ZA[382] = ZA[363] + ZA[381]; + ZA[383] = ZA[381] + ZA[379]; + ZA[370] = ZA[367] + ZA[140]; + + ZA[386] = (ZCh(ZA[382], ZA[377], ZA[372]) + ZA[370]) + ZR26(ZA[382]); + ZA[384] = ZMa(ZA[378], ZA[373], ZA[383]) + ZR30(ZA[383]); + ZA[121] = ZA[111] + ZA[91]; + ZA[141] = ZA[135] + 0x1e376c08U; + + ZA[98] = ZR25(ZA[87]) + ZA[79]; + ZA[142] = ZR15(ZA[134]) + ZA[121]; + ZA[387] = ZA[368] + ZA[386]; + ZA[388] = ZA[386] + ZA[384]; + ZA[375] = ZA[372] + ZA[141]; + + ZA[391] = (ZCh(ZA[387], ZA[382], ZA[377]) + ZA[375]) + ZR26(ZA[387]); + ZA[389] = ZMa(ZA[383], ZA[378], ZA[388]) + ZR30(ZA[388]); + ZA[128] = ZA[118] + ZA[98]; + ZA[147] = ZA[142] + 0x2748774cU; + + ZA[99] = ZR25(ZA[88]) + ZA[87]; + ZA[143] = ZR15(ZA[135]) + ZA[128]; + ZA[392] = ZA[373] + ZA[391]; + ZA[393] = ZA[391] + ZA[389]; + ZA[380] = ZA[377] + ZA[147]; + + ZA[396] = (ZCh(ZA[392], ZA[387], ZA[382]) + ZA[380]) + ZR26(ZA[392]); + ZA[394] = ZMa(ZA[388], ZA[383], ZA[393]) + ZR30(ZA[393]); + ZA[129] = ZA[119] + ZA[99]; + ZA[148] = ZA[143] + 0x34b0bcb5U; + + ZA[106] = ZR25(ZA[94]) + ZA[88]; + ZA[149] = ZR15(ZA[142]) + ZA[129]; + ZA[397] = ZA[378] + ZA[396]; + ZA[398] = ZA[396] + ZA[394]; + ZA[385] = ZA[382] + ZA[148]; + + ZA[401] = (ZCh(ZA[397], ZA[392], ZA[387]) + ZA[385]) + ZR26(ZA[397]); + ZA[399] = ZMa(ZA[393], ZA[388], ZA[398]) + ZR30(ZA[398]); + ZA[136] = ZA[126] + ZA[106]; + ZA[153] = ZA[149] + 0x391c0cb3U; + + ZA[107] = ZR25(ZA[95]) + ZA[94]; + ZA[150] = ZR15(ZA[143]) + ZA[136]; + ZA[402] = ZA[383] + ZA[401]; + ZA[403] = ZA[401] + ZA[399]; + ZA[390] = ZA[387] + ZA[153]; + + ZA[406] = (ZCh(ZA[402], ZA[397], ZA[392]) + ZA[390]) + ZR26(ZA[402]); + ZA[404] = ZMa(ZA[398], ZA[393], ZA[403]) + ZR30(ZA[403]); + ZA[137] = ZA[127] + ZA[107]; + ZA[154] = ZA[150] + 0x4ed8aa4aU; + + ZA[114] = ZR25(ZA[102]) + ZA[95]; + ZA[155] = ZR15(ZA[149]) + ZA[137]; + ZA[407] = ZA[388] + ZA[406]; + ZA[408] = ZA[406] + ZA[404]; + ZA[395] = ZA[392] + ZA[154]; + + ZA[411] = (ZCh(ZA[407], ZA[402], ZA[397]) + ZA[395]) + ZR26(ZA[407]); + ZA[409] = ZMa(ZA[403], ZA[398], ZA[408]) + ZR30(ZA[408]); + ZA[144] = ZA[134] + ZA[114]; + ZA[159] = ZA[155] + 0x5b9cca4fU; + + ZA[115] = ZR25(ZA[103]) + ZA[102]; + ZA[156] = ZR15(ZA[150]) + ZA[144]; + ZA[412] = ZA[393] + ZA[411]; + ZA[413] = ZA[411] + ZA[409]; + ZA[400] = ZA[397] + ZA[159]; + + ZA[416] = (ZCh(ZA[412], ZA[407], ZA[402]) + ZA[400]) + ZR26(ZA[412]); + ZA[414] = ZMa(ZA[408], ZA[403], ZA[413]) + ZR30(ZA[413]); + ZA[145] = ZA[135] + ZA[115]; + ZA[160] = ZA[156] + 0x682e6ff3U; + + ZA[122] = ZR25(ZA[110]) + ZA[103]; + ZA[161] = ZR15(ZA[155]) + ZA[145]; + ZA[417] = ZA[398] + ZA[416]; + ZA[418] = ZA[416] + ZA[414]; + ZA[405] = ZA[402] + ZA[160]; + + ZA[421] = (ZCh(ZA[417], ZA[412], ZA[407]) + ZA[405]) + ZR26(ZA[417]); + ZA[419] = ZMa(ZA[413], ZA[408], ZA[418]) + ZR30(ZA[418]); + ZA[151] = ZA[142] + ZA[122]; + ZA[165] = ZA[161] + 0x748f82eeU; + + ZA[123] = ZR25(ZA[111]) + ZA[110]; + ZA[162] = ZR15(ZA[156]) + ZA[151]; + ZA[422] = ZA[403] + ZA[421]; + ZA[423] = ZA[421] + ZA[419]; + ZA[410] = ZA[407] + ZA[165]; + + ZA[426] = (ZCh(ZA[422], ZA[417], ZA[412]) + ZA[410]) + ZR26(ZA[422]); + ZA[424] = ZMa(ZA[418], ZA[413], ZA[423]) + ZR30(ZA[423]); + ZA[152] = ZA[143] + ZA[123]; + ZA[166] = ZA[162] + 0x78a5636fU; + + ZA[130] = ZR25(ZA[118]) + ZA[111]; + ZA[167] = ZR15(ZA[161]) + ZA[152]; + ZA[427] = ZA[408] + ZA[426]; + ZA[428] = ZA[426] + ZA[424]; + ZA[415] = ZA[412] + ZA[166]; + + ZA[431] = (ZCh(ZA[427], ZA[422], ZA[417]) + ZA[415]) + ZR26(ZA[427]); + ZA[429] = ZMa(ZA[423], ZA[418], ZA[428]) + ZR30(ZA[428]); + ZA[157] = ZA[149] + ZA[130]; + ZA[170] = ZA[167] + 0x84c87814U; + + ZA[131] = ZR25(ZA[119]) + ZA[118]; + ZA[168] = ZR15(ZA[162]) + ZA[157]; + ZA[432] = ZA[413] + ZA[431]; + ZA[433] = ZA[431] + ZA[429]; + ZA[420] = ZA[417] + ZA[170]; + + ZA[436] = (ZCh(ZA[432], ZA[427], ZA[422]) + ZA[420]) + ZR26(ZA[432]); + ZA[434] = ZMa(ZA[428], ZA[423], ZA[433]) + ZR30(ZA[433]); + ZA[158] = ZA[150] + ZA[131]; + ZA[171] = ZA[168] + 0x8cc70208U; + + ZA[138] = ZR25(ZA[126]) + ZA[119]; + ZA[172] = ZR15(ZA[167]) + ZA[158]; + ZA[437] = ZA[418] + ZA[436]; + ZA[438] = ZA[436] + ZA[434]; + ZA[425] = ZA[422] + ZA[171]; + + ZA[441] = (ZCh(ZA[437], ZA[432], ZA[427]) + ZA[425]) + ZR26(ZA[437]); + ZA[439] = ZMa(ZA[433], ZA[428], ZA[438]) + ZR30(ZA[438]); + ZA[163] = ZA[155] + ZA[138]; + ZA[174] = ZA[172] + 0x90befffaU; + + ZA[139] = ZR25(ZA[127]) + ZA[126]; + ZA[173] = ZR15(ZA[168]) + ZA[163]; + ZA[442] = ZA[423] + ZA[441]; + ZA[443] = ZA[441] + ZA[439]; + ZA[430] = ZA[427] + ZA[174]; + + ZA[445] = (ZCh(ZA[442], ZA[437], ZA[432]) + ZA[430]) + ZR26(ZA[442]); + ZA[444] = ZMa(ZA[438], ZA[433], ZA[443]) + ZR30(ZA[443]); + ZA[164] = ZA[156] + ZA[139]; + ZA[175] = ZA[173] + 0xa4506cebU; + + ZA[146] = ZR25(ZA[134]) + ZA[127]; + ZA[176] = ZR15(ZA[172]) + ZA[164]; + ZA[446] = ZA[428] + ZA[445]; + ZA[447] = ZA[445] + ZA[444]; + ZA[435] = ZA[432] + ZA[175]; + + ZA[449] = (ZCh(ZA[446], ZA[442], ZA[437]) + ZA[435]) + ZR26(ZA[446]); + ZA[448] = ZMa(ZA[443], ZA[438], ZA[447]) + ZR30(ZA[447]); + ZA[169] = ZA[161] + ZA[146]; + ZA[178] = ZA[176] + 0xbef9a3f7U; + + ZA[177] = ZR15(ZA[173]) + ZA[169]; + ZA[451] = ZA[449] + ZA[448]; + ZA[450] = ZA[433] + ZA[449]; + ZA[440] = ZA[437] + ZA[178]; + + ZA[453] = (ZCh(ZA[450], ZA[446], ZA[442]) + ZA[440]) + ZR26(ZA[450]); + ZA[452] = ZMa(ZA[447], ZA[443], ZA[451]) + ZR30(ZA[451]); + ZA[179] = ZA[177] + 0xc67178f2U; + + ZA[454] = ZA[438] + ZA[453]; + ZA[494] = ZA[442] + ZA[179]; + ZA[455] = ZA[453] + ZA[452]; + + ZA[457] = (ZCh(ZA[454], ZA[450], ZA[446]) + ZA[494]) + ZR26(ZA[454]); + ZA[456] = ZMa(ZA[451], ZA[447], ZA[455]) + ZR30(ZA[455]); + + ZA[459] = ZA[457] + ZA[456]; + + ZA[461] = ZA[455] + state1; + ZA[460] = ZA[459] + state0; + + ZA[495] = ZA[460] + 0x98c7e2a2U; + ZA[469] = ZA[461] + 0x90bb1e3cU; + + ZA[498] = (ZCh(ZA[495], 0x510e527fU, 0x9b05688cU) + ZA[469]) + ZR26(ZA[495]); + ZA[462] = ZA[451] + state2; + + ZA[496] = ZA[460] + 0xfc08884dU; + ZA[506] = ZA[498] + 0x3c6ef372U; + ZA[470] = ZA[462] + 0x50c6645bU; + + ZA[507] = (ZCh(ZA[506], ZA[495], 0x510e527fU) + ZA[470]) + ZR26(ZA[506]); + ZA[500] = ZMa(0x6a09e667U, 0xbb67ae85U, ZA[496]) + ZR30(ZA[496]); + ZA[463] = ZA[447] + state3; + + ZA[458] = ZA[443] + ZA[457]; + ZA[499] = ZA[498] + ZA[500]; + ZA[508] = ZA[507] + 0xbb67ae85U; + ZA[473] = ZA[463] + 0x3ac42e24U; + + ZA[510] = (ZCh(ZA[508], ZA[506], ZA[495]) + ZA[473]) + ZR26(ZA[508]); + ZA[928] = ZMa(ZA[496], 0x6a09e667U, ZA[499]) + ZR30(ZA[499]); + ZA[464] = ZA[458] + state4; + + ZA[476] = ZA[464] + ZA[460] + 0xd21ea4fdU; + ZA[511] = ZA[510] + 0x6a09e667U; + ZA[509] = ZA[928] + ZA[507]; + ZA[465] = ZA[454] + state5; + + ZA[514] = (ZCh(ZA[511], ZA[508], ZA[506]) + ZA[476]) + ZR26(ZA[511]); + ZA[512] = ZMa(ZA[499], ZA[496], ZA[509]) + ZR30(ZA[509]); + ZA[478] = ZA[465] + 0x59f111f1U; + + ZA[519] = ZA[506] + ZA[478]; + ZA[516] = ZA[496] + ZA[514]; + ZA[513] = ZA[510] + ZA[512]; + ZA[466] = ZA[450] + state6; + + ZA[520] = (ZCh(ZA[516], ZA[511], ZA[508]) + ZA[519]) + ZR26(ZA[516]); + ZA[515] = ZMa(ZA[509], ZA[499], ZA[513]) + ZR30(ZA[513]); + ZA[480] = ZA[466] + 0x923f82a4U; + + ZA[524] = ZA[508] + ZA[480]; + ZA[521] = ZA[499] + ZA[520]; + ZA[517] = ZA[514] + ZA[515]; + ZA[467] = ZA[446] + state7; + + ZA[525] = (ZCh(ZA[521], ZA[516], ZA[511]) + ZA[524]) + ZR26(ZA[521]); + ZA[522] = ZMa(ZA[513], ZA[509], ZA[517]) + ZR30(ZA[517]); + ZA[484] = ZA[467] + 0xab1c5ed5U; + + ZA[529] = ZA[511] + ZA[484]; + ZA[526] = ZA[509] + ZA[525]; + ZA[523] = ZA[520] + ZA[522]; + + ZA[530] = (ZCh(ZA[526], ZA[521], ZA[516]) + ZA[529]) + ZR26(ZA[526]); + ZA[550] = ZMa(ZA[517], ZA[513], ZA[523]) + ZR30(ZA[523]); + + ZA[531] = ZA[513] + ZA[530]; + ZA[533] = ZA[516] + 0x5807aa98U; + ZA[527] = ZA[550] + ZA[525]; + + ZA[534] = (ZCh(ZA[531], ZA[526], ZA[521]) + ZA[533]) + ZR26(ZA[531]); + ZA[551] = ZMa(ZA[523], ZA[517], ZA[527]) + ZR30(ZA[527]); + + ZA[535] = ZA[517] + ZA[534]; + ZA[538] = ZA[521] + 0x12835b01U; + ZA[532] = ZA[551] + ZA[530]; + + ZA[539] = (ZCh(ZA[535], ZA[531], ZA[526]) + ZA[538]) + ZR26(ZA[535]); + ZA[552] = ZMa(ZA[527], ZA[523], ZA[532]) + ZR30(ZA[532]); + + ZA[540] = ZA[523] + ZA[539]; + ZA[542] = ZA[526] + 0x243185beU; + ZA[536] = ZA[552] + ZA[534]; + + ZA[543] = (ZCh(ZA[540], ZA[535], ZA[531]) + ZA[542]) + ZR26(ZA[540]); + ZA[553] = ZMa(ZA[532], ZA[527], ZA[536]) + ZR30(ZA[536]); + + ZA[544] = ZA[527] + ZA[543]; + ZA[555] = ZA[531] + 0x550c7dc3U; + ZA[541] = ZA[553] + ZA[539]; + + ZA[558] = (ZCh(ZA[544], ZA[540], ZA[535]) + ZA[555]) + ZR26(ZA[544]); + ZA[547] = ZMa(ZA[536], ZA[532], ZA[541]) + ZR30(ZA[541]); + + ZA[559] = ZA[532] + ZA[558]; + ZA[556] = ZA[535] + 0x72be5d74U; + ZA[545] = ZA[547] + ZA[543]; + + ZA[562] = (ZCh(ZA[559], ZA[544], ZA[540]) + ZA[556]) + ZR26(ZA[559]); + ZA[561] = ZMa(ZA[541], ZA[536], ZA[545]) + ZR30(ZA[545]); + + ZA[563] = ZA[536] + ZA[562]; + ZA[560] = ZA[561] + ZA[558]; + ZA[557] = ZA[540] + 0x80deb1feU; + + ZA[568] = (ZCh(ZA[563], ZA[559], ZA[544]) + ZA[557]) + ZR26(ZA[563]); + ZA[564] = ZMa(ZA[545], ZA[541], ZA[560]) + ZR30(ZA[560]); + + ZA[569] = ZA[541] + ZA[568]; + ZA[572] = ZA[544] + 0x9bdc06a7U; + ZA[565] = ZA[562] + ZA[564]; + + ZA[574] = (ZCh(ZA[569], ZA[563], ZA[559]) + ZA[572]) + ZR26(ZA[569]); + ZA[570] = ZMa(ZA[560], ZA[545], ZA[565]) + ZR30(ZA[565]); + ZA[468] = ZR25(ZA[461]); + + ZA[497] = ZA[468] + ZA[460]; + ZA[575] = ZA[545] + ZA[574]; + ZA[571] = ZA[568] + ZA[570]; + ZA[573] = ZA[559] + 0xc19bf274U; + + ZA[578] = (ZCh(ZA[575], ZA[569], ZA[563]) + ZA[573]) + ZR26(ZA[575]); + ZA[576] = ZMa(ZA[565], ZA[560], ZA[571]) + ZR30(ZA[571]); + ZA[929] = ZR25(ZA[462]); + ZA[503] = ZA[497] + 0xe49b69c1U; + + ZA[471] = ZA[929] + ZA[461] + 0x00a00000U; + ZA[582] = ZA[563] + ZA[503]; + ZA[579] = ZA[560] + ZA[578]; + ZA[577] = ZA[574] + ZA[576]; + + ZA[583] = (ZCh(ZA[579], ZA[575], ZA[569]) + ZA[582]) + ZR26(ZA[579]); + ZA[580] = ZMa(ZA[571], ZA[565], ZA[577]) + ZR30(ZA[577]); + ZA[488] = ZA[471] + 0xefbe4786U; + + ZA[472] = ZR25(ZA[463]) + ZA[462]; + ZA[587] = ZA[569] + ZA[488]; + ZA[584] = ZA[565] + ZA[583]; + ZA[581] = ZA[578] + ZA[580]; + + ZA[588] = (ZCh(ZA[584], ZA[579], ZA[575]) + ZA[587]) + ZR26(ZA[584]); + ZA[586] = ZMa(ZA[577], ZA[571], ZA[581]) + ZR30(ZA[581]); + ZA[501] = ZR15(ZA[497]) + ZA[472]; + ZA[475] = ZR15(ZA[471]); + ZA[926] = ZA[575] + 0x0fc19dc6U; + + ZA[474] = ZA[475] + ZA[463] + ZR25(ZA[464]); + ZA[927] = ZA[926] + ZA[501]; + ZA[589] = ZA[571] + ZA[588]; + ZA[585] = ZA[583] + ZA[586]; + + ZA[592] = (ZCh(ZA[589], ZA[584], ZA[579]) + ZA[927]) + ZR26(ZA[589]); + ZA[590] = ZMa(ZA[581], ZA[577], ZA[585]) + ZR30(ZA[585]); + ZA[477] = ZR25(ZA[465]) + ZA[464]; + ZA[489] = ZA[474] + 0x240ca1ccU; + + ZA[518] = ZR15(ZA[501]) + ZA[477]; + ZA[479] = ZR25(ZA[466]); + ZA[596] = ZA[579] + ZA[489]; + ZA[593] = ZA[577] + ZA[592]; + ZA[591] = ZA[588] + ZA[590]; + + ZA[597] = (ZCh(ZA[593], ZA[589], ZA[584]) + ZA[596]) + ZR26(ZA[593]); + ZA[594] = ZMa(ZA[585], ZA[581], ZA[591]) + ZR30(ZA[591]); + ZA[481] = ZA[479] + ZA[465]; + ZA[601] = ZA[518] + 0x2de92c6fU; + + ZA[482] = ZR15(ZA[474]) + ZA[481]; + ZA[602] = ZA[584] + ZA[601]; + ZA[598] = ZA[581] + ZA[597]; + ZA[595] = ZA[592] + ZA[594]; + + ZA[632] = (ZCh(ZA[598], ZA[593], ZA[589]) + ZA[602]) + ZR26(ZA[598]); + ZA[599] = ZMa(ZA[591], ZA[585], ZA[595]) + ZR30(ZA[595]); + ZA[483] = ZA[466] + 0x00000100U + ZR25(ZA[467]); + ZA[490] = ZA[482] + 0x4a7484aaU; + + ZA[528] = ZR15(ZA[518]) + ZA[483]; + ZA[736] = ZA[585] + ZA[632]; + ZA[605] = ZA[589] + ZA[490]; + ZA[600] = ZA[597] + ZA[599]; + ZA[485] = ZA[467] + 0x11002000U; + + ZA[738] = (ZCh(ZA[736], ZA[598], ZA[593]) + ZA[605]) + ZR26(ZA[736]); + ZA[744] = ZMa(ZA[595], ZA[591], ZA[600]) + ZR30(ZA[600]); + ZA[487] = ZR15(ZA[482]) + ZA[485]; + ZA[603] = ZA[528] + 0x5cb0a9dcU; + + ZA[502] = ZA[497] + ZA[487]; + ZA[739] = ZA[591] + ZA[738]; + ZA[604] = ZA[593] + ZA[603]; + ZA[737] = ZA[744] + ZA[632]; + + ZA[741] = (ZCh(ZA[739], ZA[736], ZA[598]) + ZA[604]) + ZR26(ZA[739]); + ZA[745] = ZMa(ZA[600], ZA[595], ZA[737]) + ZR30(ZA[737]); + ZA[486] = ZA[471] + 0x80000000U; + ZA[606] = ZA[502] + 0x76f988daU; + + ZA[537] = ZR15(ZA[528]) + ZA[486]; + ZA[742] = ZA[595] + ZA[741]; + ZA[613] = ZA[598] + ZA[606]; + ZA[740] = ZA[745] + ZA[738]; + + ZA[747] = (ZCh(ZA[742], ZA[739], ZA[736]) + ZA[613]) + ZR26(ZA[742]); + ZA[746] = ZMa(ZA[737], ZA[600], ZA[740]) + ZR30(ZA[740]); + ZA[607] = ZA[537] + 0x983e5152U; + + ZA[546] = ZR15(ZA[502]) + ZA[501]; + ZA[751] = ZA[736] + ZA[607]; + ZA[748] = ZA[600] + ZA[747]; + ZA[743] = ZA[746] + ZA[741]; + + ZA[752] = (ZCh(ZA[748], ZA[742], ZA[739]) + ZA[751]) + ZR26(ZA[748]); + ZA[749] = ZMa(ZA[740], ZA[737], ZA[743]) + ZR30(ZA[743]); + ZA[608] = ZA[546] + 0xa831c66dU; + + ZA[554] = ZR15(ZA[537]) + ZA[474]; + ZA[756] = ZA[739] + ZA[608]; + ZA[753] = ZA[737] + ZA[752]; + ZA[750] = ZA[747] + ZA[749]; + + ZA[757] = (ZCh(ZA[753], ZA[748], ZA[742]) + ZA[756]) + ZR26(ZA[753]); + ZA[754] = ZMa(ZA[743], ZA[740], ZA[750]) + ZR30(ZA[750]); + ZA[609] = ZA[554] + 0xb00327c8U; + + ZA[566] = ZR15(ZA[546]) + ZA[518]; + ZA[761] = ZA[742] + ZA[609]; + ZA[758] = ZA[740] + ZA[757]; + ZA[755] = ZA[752] + ZA[754]; + + ZA[762] = (ZCh(ZA[758], ZA[753], ZA[748]) + ZA[761]) + ZR26(ZA[758]); + ZA[759] = ZMa(ZA[750], ZA[743], ZA[755]) + ZR30(ZA[755]); + ZA[610] = ZA[566] + 0xbf597fc7U; + + ZA[567] = ZR15(ZA[554]) + ZA[482]; + ZA[766] = ZA[748] + ZA[610]; + ZA[763] = ZA[743] + ZA[762]; + ZA[760] = ZA[757] + ZA[759]; + + ZA[767] = (ZCh(ZA[763], ZA[758], ZA[753]) + ZA[766]) + ZR26(ZA[763]); + ZA[764] = ZMa(ZA[755], ZA[750], ZA[760]) + ZR30(ZA[760]); + ZA[611] = ZA[567] + 0xc6e00bf3U; + + ZA[614] = ZR15(ZA[566]) + ZA[528]; + ZA[771] = ZA[753] + ZA[611]; + ZA[768] = ZA[750] + ZA[767]; + ZA[765] = ZA[762] + ZA[764]; + + ZA[772] = (ZCh(ZA[768], ZA[763], ZA[758]) + ZA[771]) + ZR26(ZA[768]); + ZA[769] = ZMa(ZA[760], ZA[755], ZA[765]) + ZR30(ZA[765]); + ZA[612] = ZA[502] + 0x00400022U; + ZA[615] = ZA[614] + 0xd5a79147U; + + ZA[616] = ZR15(ZA[567]) + ZA[612]; + ZA[504] = ZR25(ZA[497]) + 0x00000100U; + ZA[776] = ZA[758] + ZA[615]; + ZA[773] = ZA[755] + ZA[772]; + ZA[770] = ZA[767] + ZA[769]; + + ZA[777] = (ZCh(ZA[773], ZA[768], ZA[763]) + ZA[776]) + ZR26(ZA[773]); + ZA[774] = ZMa(ZA[765], ZA[760], ZA[770]) + ZR30(ZA[770]); + ZA[492] = ZR25(ZA[471]); + ZA[618] = ZA[537] + ZA[504]; + ZA[617] = ZA[616] + 0x06ca6351U; + + ZA[619] = ZR15(ZA[614]) + ZA[618]; + ZA[781] = ZA[763] + ZA[617]; + ZA[778] = ZA[760] + ZA[777]; + ZA[775] = ZA[772] + ZA[774]; + ZA[505] = ZA[492] + ZA[497]; + + ZA[782] = (ZCh(ZA[778], ZA[773], ZA[768]) + ZA[781]) + ZR26(ZA[778]); + ZA[779] = ZMa(ZA[770], ZA[765], ZA[775]) + ZR30(ZA[775]); + ZA[621] = ZA[505] + ZA[546]; + ZA[620] = ZA[619] + 0x14292967U; + + ZA[622] = ZR15(ZA[616]) + ZA[621]; + ZA[625] = ZR25(ZA[501]); + ZA[786] = ZA[768] + ZA[620]; + ZA[783] = ZA[765] + ZA[782]; + ZA[624] = ZA[554] + ZA[471]; + ZA[780] = ZA[777] + ZA[779]; + + ZA[787] = (ZCh(ZA[783], ZA[778], ZA[773]) + ZA[786]) + ZR26(ZA[783]); + ZA[784] = ZMa(ZA[775], ZA[770], ZA[780]) + ZR30(ZA[780]); + ZA[493] = ZR25(ZA[474]); + ZA[626] = ZA[625] + ZA[624]; + ZA[623] = ZA[622] + 0x27b70a85U; + + ZA[627] = ZR15(ZA[619]) + ZA[626]; + ZA[791] = ZA[773] + ZA[623]; + ZA[788] = ZA[770] + ZA[787]; + ZA[785] = ZA[782] + ZA[784]; + ZA[629] = ZA[493] + ZA[501]; + + ZA[792] = (ZCh(ZA[788], ZA[783], ZA[778]) + ZA[791]) + ZR26(ZA[788]); + ZA[789] = ZMa(ZA[780], ZA[775], ZA[785]) + ZR30(ZA[785]); + ZA[630] = ZA[566] + ZA[629]; + ZA[628] = ZA[627] + 0x2e1b2138U; + + ZA[634] = ZR25(ZA[518]) + ZA[474]; + ZA[631] = ZR15(ZA[622]) + ZA[630]; + ZA[796] = ZA[778] + ZA[628]; + ZA[793] = ZA[775] + ZA[792]; + ZA[790] = ZA[787] + ZA[789]; + + ZA[797] = (ZCh(ZA[793], ZA[788], ZA[783]) + ZA[796]) + ZR26(ZA[793]); + ZA[794] = ZMa(ZA[785], ZA[780], ZA[790]) + ZR30(ZA[790]); + ZA[491] = ZR25(ZA[482]); + ZA[635] = ZA[567] + ZA[634]; + ZA[633] = ZA[631] + 0x4d2c6dfcU; + + ZA[636] = ZR15(ZA[627]) + ZA[635]; + ZA[801] = ZA[783] + ZA[633]; + ZA[798] = ZA[780] + ZA[797]; + ZA[795] = ZA[792] + ZA[794]; + ZA[638] = ZA[491] + ZA[518]; + + ZA[802] = (ZCh(ZA[798], ZA[793], ZA[788]) + ZA[801]) + ZR26(ZA[798]); + ZA[799] = ZMa(ZA[790], ZA[785], ZA[795]) + ZR30(ZA[795]); + ZA[639] = ZA[638] + ZA[614]; + ZA[637] = ZA[636] + 0x53380d13U; + + ZA[642] = ZR25(ZA[528]) + ZA[482]; + ZA[640] = ZR15(ZA[631]) + ZA[639]; + ZA[806] = ZA[788] + ZA[637]; + ZA[803] = ZA[785] + ZA[802]; + ZA[800] = ZA[797] + ZA[799]; + + ZA[807] = (ZCh(ZA[803], ZA[798], ZA[793]) + ZA[806]) + ZR26(ZA[803]); + ZA[804] = ZMa(ZA[795], ZA[790], ZA[800]) + ZR30(ZA[800]); + ZA[643] = ZA[616] + ZA[642]; + ZA[641] = ZA[640] + 0x650a7354U; + + ZA[646] = ZR25(ZA[502]) + ZA[528]; + ZA[644] = ZR15(ZA[636]) + ZA[643]; + ZA[811] = ZA[793] + ZA[641]; + ZA[808] = ZA[790] + ZA[807]; + ZA[805] = ZA[802] + ZA[804]; + + ZA[812] = (ZCh(ZA[808], ZA[803], ZA[798]) + ZA[811]) + ZR26(ZA[808]); + ZA[809] = ZMa(ZA[800], ZA[795], ZA[805]) + ZR30(ZA[805]); + ZA[647] = ZA[619] + ZA[646]; + ZA[645] = ZA[644] + 0x766a0abbU; + + ZA[650] = ZR25(ZA[537]) + ZA[502]; + ZA[648] = ZR15(ZA[640]) + ZA[647]; + ZA[816] = ZA[798] + ZA[645]; + ZA[813] = ZA[795] + ZA[812]; + ZA[810] = ZA[807] + ZA[809]; + + ZA[817] = (ZCh(ZA[813], ZA[808], ZA[803]) + ZA[816]) + ZR26(ZA[813]); + ZA[814] = ZMa(ZA[805], ZA[800], ZA[810]) + ZR30(ZA[810]); + ZA[925] = ZA[622] + ZA[650]; + ZA[649] = ZA[648] + 0x81c2c92eU; + + ZA[653] = ZR25(ZA[546]) + ZA[537]; + ZA[651] = ZR15(ZA[644]) + ZA[925]; + ZA[821] = ZA[803] + ZA[649]; + ZA[818] = ZA[800] + ZA[817]; + ZA[815] = ZA[812] + ZA[814]; + + ZA[822] = (ZCh(ZA[818], ZA[813], ZA[808]) + ZA[821]) + ZR26(ZA[818]); + ZA[819] = ZMa(ZA[810], ZA[805], ZA[815]) + ZR30(ZA[815]); + ZA[654] = ZA[627] + ZA[653]; + ZA[652] = ZA[651] + 0x92722c85U; + + ZA[657] = ZR25(ZA[554]) + ZA[546]; + ZA[655] = ZR15(ZA[648]) + ZA[654]; + ZA[826] = ZA[808] + ZA[652]; + ZA[823] = ZA[805] + ZA[822]; + ZA[820] = ZA[817] + ZA[819]; + + ZA[827] = (ZCh(ZA[823], ZA[818], ZA[813]) + ZA[826]) + ZR26(ZA[823]); + ZA[824] = ZMa(ZA[815], ZA[810], ZA[820]) + ZR30(ZA[820]); + ZA[658] = ZA[631] + ZA[657]; + ZA[656] = ZA[655] + 0xa2bfe8a1U; + + ZA[661] = ZR25(ZA[566]) + ZA[554]; + ZA[659] = ZR15(ZA[651]) + ZA[658]; + ZA[831] = ZA[813] + ZA[656]; + ZA[828] = ZA[810] + ZA[827]; + ZA[825] = ZA[822] + ZA[824]; + + ZA[832] = (ZCh(ZA[828], ZA[823], ZA[818]) + ZA[831]) + ZR26(ZA[828]); + ZA[829] = ZMa(ZA[820], ZA[815], ZA[825]) + ZR30(ZA[825]); + ZA[662] = ZA[636] + ZA[661]; + ZA[660] = ZA[659] + 0xa81a664bU; + + ZA[665] = ZR25(ZA[567]) + ZA[566]; + ZA[663] = ZR15(ZA[655]) + ZA[662]; + ZA[836] = ZA[818] + ZA[660]; + ZA[833] = ZA[815] + ZA[832]; + ZA[830] = ZA[827] + ZA[829]; + + ZA[837] = (ZCh(ZA[833], ZA[828], ZA[823]) + ZA[836]) + ZR26(ZA[833]); + ZA[834] = ZMa(ZA[825], ZA[820], ZA[830]) + ZR30(ZA[830]); + ZA[666] = ZA[640] + ZA[665]; + ZA[664] = ZA[663] + 0xc24b8b70U; + + ZA[669] = ZR25(ZA[614]) + ZA[567]; + ZA[667] = ZR15(ZA[659]) + ZA[666]; + ZA[841] = ZA[823] + ZA[664]; + ZA[838] = ZA[820] + ZA[837]; + ZA[835] = ZA[832] + ZA[834]; + + ZA[842] = (ZCh(ZA[838], ZA[833], ZA[828]) + ZA[841]) + ZR26(ZA[838]); + ZA[839] = ZMa(ZA[830], ZA[825], ZA[835]) + ZR30(ZA[835]); + ZA[670] = ZA[644] + ZA[669]; + ZA[668] = ZA[667] + 0xc76c51a3U; + + ZA[677] = ZR25(ZA[616]) + ZA[614]; + ZA[671] = ZR15(ZA[663]) + ZA[670]; + ZA[846] = ZA[828] + ZA[668]; + ZA[843] = ZA[825] + ZA[842]; + ZA[840] = ZA[837] + ZA[839]; + + ZA[847] = (ZCh(ZA[843], ZA[838], ZA[833]) + ZA[846]) + ZR26(ZA[843]); + ZA[844] = ZMa(ZA[835], ZA[830], ZA[840]) + ZR30(ZA[840]); + ZA[678] = ZA[648] + ZA[677]; + ZA[676] = ZA[671] + 0xd192e819U; + + ZA[682] = ZR25(ZA[619]) + ZA[616]; + ZA[679] = ZR15(ZA[667]) + ZA[678]; + ZA[851] = ZA[833] + ZA[676]; + ZA[848] = ZA[830] + ZA[847]; + ZA[845] = ZA[842] + ZA[844]; + + ZA[852] = (ZCh(ZA[848], ZA[843], ZA[838]) + ZA[851]) + ZR26(ZA[848]); + ZA[849] = ZMa(ZA[840], ZA[835], ZA[845]) + ZR30(ZA[845]); + ZA[683] = ZA[651] + ZA[682]; + ZA[680] = ZA[679] + 0xd6990624U; + + ZA[686] = ZR25(ZA[622]) + ZA[619]; + ZA[684] = ZR15(ZA[671]) + ZA[683]; + ZA[856] = ZA[838] + ZA[680]; + ZA[853] = ZA[835] + ZA[852]; + ZA[850] = ZA[847] + ZA[849]; + + ZA[857] = (ZCh(ZA[853], ZA[848], ZA[843]) + ZA[856]) + ZR26(ZA[853]); + ZA[854] = ZMa(ZA[845], ZA[840], ZA[850]) + ZR30(ZA[850]); + ZA[687] = ZA[655] + ZA[686]; + ZA[685] = ZA[684] + 0xf40e3585U; + + ZA[690] = ZR25(ZA[627]) + ZA[622]; + ZA[688] = ZR15(ZA[679]) + ZA[687]; + ZA[861] = ZA[843] + ZA[685]; + ZA[858] = ZA[840] + ZA[857]; + ZA[855] = ZA[852] + ZA[854]; + + ZA[862] = (ZCh(ZA[858], ZA[853], ZA[848]) + ZA[861]) + ZR26(ZA[858]); + ZA[859] = ZMa(ZA[850], ZA[845], ZA[855]) + ZR30(ZA[855]); + ZA[691] = ZA[659] + ZA[690]; + ZA[689] = ZA[688] + 0x106aa070U; + + ZA[694] = ZR25(ZA[631]) + ZA[627]; + ZA[692] = ZR15(ZA[684]) + ZA[691]; + ZA[866] = ZA[848] + ZA[689]; + ZA[863] = ZA[845] + ZA[862]; + ZA[860] = ZA[857] + ZA[859]; + + ZA[867] = (ZCh(ZA[863], ZA[858], ZA[853]) + ZA[866]) + ZR26(ZA[863]); + ZA[864] = ZMa(ZA[855], ZA[850], ZA[860]) + ZR30(ZA[860]); + ZA[695] = ZA[663] + ZA[694]; + ZA[693] = ZA[692] + 0x19a4c116U; + + ZA[698] = ZR25(ZA[636]) + ZA[631]; + ZA[696] = ZR15(ZA[688]) + ZA[695]; + ZA[871] = ZA[853] + ZA[693]; + ZA[868] = ZA[850] + ZA[867]; + ZA[865] = ZA[862] + ZA[864]; + + ZA[873] = (ZCh(ZA[868], ZA[863], ZA[858]) + ZA[871]) + ZR26(ZA[868]); + ZA[869] = ZMa(ZA[860], ZA[855], ZA[865]) + ZR30(ZA[865]); + ZA[699] = ZA[667] + ZA[698]; + ZA[697] = ZA[696] + 0x1e376c08U; + + ZA[702] = ZR25(ZA[640]) + ZA[636]; + ZA[700] = ZR15(ZA[692]) + ZA[699]; + ZA[877] = ZA[858] + ZA[697]; + ZA[874] = ZA[855] + ZA[873]; + ZA[870] = ZA[867] + ZA[869]; + + ZA[878] = (ZCh(ZA[874], ZA[868], ZA[863]) + ZA[877]) + ZR26(ZA[874]); + ZA[875] = ZMa(ZA[865], ZA[860], ZA[870]) + ZR30(ZA[870]); + ZA[703] = ZA[671] + ZA[702]; + ZA[701] = ZA[700] + 0x2748774cU; + + ZA[706] = ZR25(ZA[644]) + ZA[640]; + ZA[704] = ZR15(ZA[696]) + ZA[703]; + ZA[882] = ZA[863] + ZA[701]; + ZA[879] = ZA[860] + ZA[878]; + ZA[876] = ZA[873] + ZA[875]; + + ZA[883] = (ZCh(ZA[879], ZA[874], ZA[868]) + ZA[882]) + ZR26(ZA[879]); + ZA[880] = ZMa(ZA[870], ZA[865], ZA[876]) + ZR30(ZA[876]); + ZA[707] = ZA[679] + ZA[706]; + ZA[705] = ZA[704] + 0x34b0bcb5U; + + ZA[710] = ZR25(ZA[648]) + ZA[644]; + ZA[708] = ZR15(ZA[700]) + ZA[707]; + ZA[887] = ZA[868] + ZA[705]; + ZA[884] = ZA[865] + ZA[883]; + ZA[881] = ZA[878] + ZA[880]; + + ZA[888] = (ZCh(ZA[884], ZA[879], ZA[874]) + ZA[887]) + ZR26(ZA[884]); + ZA[885] = ZMa(ZA[876], ZA[870], ZA[881]) + ZR30(ZA[881]); + ZA[711] = ZA[684] + ZA[710]; + ZA[709] = ZA[708] + 0x391c0cb3U; + + ZA[714] = ZR25(ZA[651]) + ZA[648]; + ZA[712] = ZR15(ZA[704]) + ZA[711]; + ZA[892] = ZA[874] + ZA[709]; + ZA[889] = ZA[870] + ZA[888]; + ZA[886] = ZA[883] + ZA[885]; + + ZA[893] = (ZCh(ZA[889], ZA[884], ZA[879]) + ZA[892]) + ZR26(ZA[889]); + ZA[890] = ZMa(ZA[881], ZA[876], ZA[886]) + ZR30(ZA[886]); + ZA[715] = ZA[688] + ZA[714]; + ZA[713] = ZA[712] + 0x4ed8aa4aU; + + ZA[718] = ZR25(ZA[655]) + ZA[651]; + ZA[716] = ZR15(ZA[708]) + ZA[715]; + ZA[897] = ZA[879] + ZA[713]; + ZA[894] = ZA[876] + ZA[893]; + ZA[891] = ZA[888] + ZA[890]; + + ZA[898] = (ZCh(ZA[894], ZA[889], ZA[884]) + ZA[897]) + ZR26(ZA[894]); + ZA[895] = ZMa(ZA[886], ZA[881], ZA[891]) + ZR30(ZA[891]); + ZA[719] = ZA[692] + ZA[718]; + ZA[717] = ZA[716] + 0x5b9cca4fU; + + ZA[722] = ZR25(ZA[659]) + ZA[655]; + ZA[720] = ZR15(ZA[712]) + ZA[719]; + ZA[902] = ZA[884] + ZA[717]; + ZA[899] = ZA[881] + ZA[898]; + ZA[896] = ZA[893] + ZA[895]; + + ZA[903] = (ZCh(ZA[899], ZA[894], ZA[889]) + ZA[902]) + ZR26(ZA[899]); + ZA[900] = ZMa(ZA[891], ZA[886], ZA[896]) + ZR30(ZA[896]); + ZA[723] = ZA[696] + ZA[722]; + ZA[721] = ZA[720] + 0x682e6ff3U; + + ZA[672] = ZR25(ZA[663]) + ZA[659]; + ZA[724] = ZR15(ZA[716]) + ZA[723]; + ZA[907] = ZA[889] + ZA[721]; + ZA[904] = ZA[886] + ZA[903]; + ZA[901] = ZA[898] + ZA[900]; + + ZA[908] = (ZCh(ZA[904], ZA[899], ZA[894]) + ZA[907]) + ZR26(ZA[904]); + ZA[905] = ZMa(ZA[896], ZA[891], ZA[901]) + ZR30(ZA[901]); + ZA[673] = ZR25(ZA[667]) + ZA[663]; + ZA[726] = ZA[700] + ZA[672]; + ZA[725] = ZA[724] + 0x748f82eeU; + + ZA[727] = ZR15(ZA[720]) + ZA[726]; + ZA[912] = ZA[894] + ZA[725]; + ZA[909] = ZA[891] + ZA[908]; + ZA[906] = ZA[903] + ZA[905]; + ZA[675] = ZA[667] + 0x8cc70208U; + ZA[729] = ZA[704] + ZA[673]; + + ZA[913] = (ZCh(ZA[909], ZA[904], ZA[899]) + ZA[912]) + ZR26(ZA[909]); + ZA[910] = ZMa(ZA[901], ZA[896], ZA[906]) + ZR30(ZA[906]); + ZA[674] = ZR25(ZA[671]) + ZA[675]; + ZA[730] = ZR15(ZA[724]) + ZA[729]; + ZA[728] = ZA[727] + 0x78a5636fU; + + ZA[681] = ZR25(ZA[679]) + ZA[671]; + ZA[917] = ZA[899] + ZA[901] + ZA[728]; + ZA[914] = ZA[896] + ZA[913]; + ZA[911] = ZA[908] + ZA[910]; + ZA[732] = ZA[708] + ZA[674]; + ZA[731] = ZA[730] + 0x84c87814U; + + ZA[918] = (ZCh(ZA[914], ZA[909], ZA[904]) + ZA[917]) + ZR26(ZA[914]); + ZA[915] = ZMa(ZA[906], ZA[901], ZA[911]) + ZR30(ZA[911]); + ZA[733] = ZR15(ZA[727]) + ZA[732]; + ZA[919] = ZA[906] + ZA[904] + ZA[731]; + ZA[734] = ZA[712] + ZA[681]; + + ZA[920] = (ZCh(ZA[918], ZA[914], ZA[909]) + ZA[919]) + ZR26(ZA[918]); + ZA[735] = ZR15(ZA[730]) + ZA[734]; + ZA[921] = ZA[911] + ZA[909] + ZA[733]; + ZA[916] = ZA[913] + ZA[915]; + + ZA[922] = (ZCh(ZA[920], ZA[918], ZA[914]) + ZA[921]) + ZR26(ZA[920]); + ZA[923] = ZA[916] + ZA[914] + ZA[735]; + + ZA[924] = (ZCh(ZA[922], ZA[920], ZA[918]) + ZA[923]) + 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 +} From fa5e0675d6b5b6da8fdf8ea77434d18c7787492c Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Wed, 28 Mar 2012 20:32:49 +1100 Subject: [PATCH 068/117] Display the beginning of the new block in verbose mode in the logs. --- cgminer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/cgminer.c b/cgminer.c index c336f8b4..e31f1992 100644 --- a/cgminer.c +++ b/cgminer.c @@ -2112,6 +2112,7 @@ static void set_curblock(char *hexstr, unsigned char *hash) current_hash = bin2hex(hash_swap, 16); if (unlikely(!current_hash)) quit (1, "set_curblock OOM"); + applog(LOG_INFO, "New block: %s...", current_hash); if (old_hash) free(old_hash); } From ef1eafa40ae284948f53ee820b29a26943071b80 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Wed, 28 Mar 2012 21:58:04 +1100 Subject: [PATCH 069/117] Provide locking around updates of cgpu hashrates as well to prevent multiple threads accessing data fields on the same device. --- cgminer.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cgminer.c b/cgminer.c index e31f1992..ab862d99 100644 --- a/cgminer.c +++ b/cgminer.c @@ -2936,8 +2936,10 @@ static void hashmeter(int thr_id, struct timeval *diff, if (th->cgpu == cgpu) thread_rolling += th->rolling; } + mutex_lock(&hash_lock); decay_time(&cgpu->rolling, thread_rolling); cgpu->total_mhashes += local_mhashes; + mutex_unlock(&hash_lock); // If needed, output detailed, per-device stats if (want_per_device_stats) { From 2f71520368cb426faa10b45cd0f5fd6f4d45e044 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Wed, 28 Mar 2012 22:36:48 +1100 Subject: [PATCH 070/117] Set the starting fanspeed to a safe and fairly neutral 50% when autofan is enabled. --- adl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adl.c b/adl.c index 8587401a..70dcdfef 100644 --- a/adl.c +++ b/adl.c @@ -463,7 +463,7 @@ void init_adl(int nDevs) if (opt_autofan) { ga->autofan = true; /* Set a safe starting default if we're automanaging fan speeds */ - set_fanspeed(gpu, gpus[gpu].gpu_fan); + set_fanspeed(gpu, 50); } if (opt_autoengine) { ga->autoengine = true; From 35de9d1e07c86731f4cf0df4c392b402cf491340 Mon Sep 17 00:00:00 2001 From: ckolivas Date: Thu, 29 Mar 2012 09:35:48 +1100 Subject: [PATCH 071/117] Use slightly more damping on the decay time function in the never-ending quest to smooth off the hashmeter. --- cgminer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cgminer.c b/cgminer.c index 813e677c..ac814dac 100644 --- a/cgminer.c +++ b/cgminer.c @@ -1141,9 +1141,9 @@ void decay_time(double *f, double fadd) } if (ratio > 0.95) - *f = (fadd * 0.1 + *f) / 1.1; + *f = (fadd * 0.05 + *f) / 1.05; else - *f = (fadd + *f * 0.1) / 1.1; + *f = (fadd + *f * 0.05) / 1.05; } static int requests_staged(void) From 43ef4e04434e476a42e66e71597dc9982474975a Mon Sep 17 00:00:00 2001 From: ckolivas Date: Thu, 29 Mar 2012 10:51:59 +1100 Subject: [PATCH 072/117] Move the ADL setup and clearing to separate functions and provide a reinit_adl function to be used when adl fails while running. --- adl.c | 70 ++++++++++++++++++++++++++++++++++++++++------------------- adl.h | 2 ++ 2 files changed, 50 insertions(+), 22 deletions(-) diff --git a/adl.c b/adl.c index 70dcdfef..13dd06bc 100644 --- a/adl.c +++ b/adl.c @@ -124,11 +124,9 @@ static bool fanspeed_twin(struct gpu_adl *ga, struct gpu_adl *other_ga) return true; } -void init_adl(int nDevs) +static bool prepare_adl(void) { - int result, i, j, devices = 0, last_adapter = -1, gpu = 0, dummy = 0; - struct gpu_adapters adapters[MAX_GPUDEVICES], vadapters[MAX_GPUDEVICES]; - bool devs_match = true; + int result; #if defined (LINUX) hDLL = dlopen( "libatiadlxx.so", RTLD_LAZY|RTLD_GLOBAL); @@ -141,14 +139,8 @@ void init_adl(int nDevs) #endif if (hDLL == NULL) { applog(LOG_INFO, "Unable to load ati adl library"); - return; - } - - if (unlikely(pthread_mutex_init(&adl_lock, NULL))) { - applog(LOG_ERR, "Failed to init adl_lock in init_adl"); - return; + return false; } - ADL_Main_Control_Create = (ADL_MAIN_CONTROL_CREATE) GetProcAddress(hDLL,"ADL_Main_Control_Create"); ADL_Main_Control_Destroy = (ADL_MAIN_CONTROL_DESTROY) GetProcAddress(hDLL,"ADL_Main_Control_Destroy"); ADL_Adapter_NumberOfAdapters_Get = (ADL_ADAPTER_NUMBEROFADAPTERS_GET) GetProcAddress(hDLL,"ADL_Adapter_NumberOfAdapters_Get"); @@ -177,7 +169,7 @@ void init_adl(int nDevs) !ADL_Main_Control_Refresh || !ADL_Overdrive5_PowerControl_Get || !ADL_Overdrive5_PowerControl_Set || !ADL_Overdrive5_FanSpeedToDefault_Set) { applog(LOG_WARNING, "ATI ADL's API is missing"); - return; + return false; } // Initialise ADL. The second parameter is 1, which means: @@ -185,15 +177,32 @@ void init_adl(int nDevs) result = ADL_Main_Control_Create (ADL_Main_Memory_Alloc, 1); if (result != ADL_OK) { applog(LOG_INFO, "ADL Initialisation Error! Error %d!", result); - return ; + return false; } result = ADL_Main_Control_Refresh(); if (result != ADL_OK) { applog(LOG_INFO, "ADL Refresh Error! Error %d!", result); - return ; + return false; } + return true; +} + +void init_adl(int nDevs) +{ + int result, i, j, devices = 0, last_adapter = -1, gpu = 0, dummy = 0; + struct gpu_adapters adapters[MAX_GPUDEVICES], vadapters[MAX_GPUDEVICES]; + bool devs_match = true; + + if (unlikely(pthread_mutex_init(&adl_lock, NULL))) { + applog(LOG_ERR, "Failed to init adl_lock in init_adl"); + return; + } + + if (!prepare_adl()) + return; + // Obtain the number of adapters for the system result = ADL_Adapter_NumberOfAdapters_Get (&iNumberAdapters); if (result != ADL_OK) { @@ -1314,6 +1323,17 @@ updated: } #endif +static void free_adl(void) +{ + ADL_Main_Memory_Free ((void **)&lpInfo); + ADL_Main_Control_Destroy (); +#if defined (LINUX) + dlclose(hDLL); +#else + FreeLibrary(hDLL); +#endif +} + void clear_adl(int nDevs) { struct gpu_adl *ga; @@ -1334,15 +1354,21 @@ void clear_adl(int nDevs) ADL_Overdrive5_FanSpeed_Set(ga->iAdapterIndex, 0, &ga->DefFanSpeedValue); ADL_Overdrive5_FanSpeedToDefault_Set(ga->iAdapterIndex, 0); } - - ADL_Main_Memory_Free ( (void **)&lpInfo ); - ADL_Main_Control_Destroy (); + adl_active = false; unlock_adl(); + free_adl(); +} -#if defined (LINUX) - dlclose(hDLL); -#else - FreeLibrary(hDLL); -#endif +void reinit_adl(void) +{ + bool ret; + lock_adl(); + free_adl(); + ret = prepare_adl(); + if (!ret) { + adl_active = false; + applog(LOG_WARNING, "Attempt to re-initialise ADL has failed, disabling"); + } + unlock_adl(); } #endif /* HAVE_ADL */ diff --git a/adl.h b/adl.h index f48c4206..363741c0 100644 --- a/adl.h +++ b/adl.h @@ -19,10 +19,12 @@ bool gpu_stats(int gpu, float *temp, int *engineclock, int *memclock, float *vdd void change_gpusettings(int gpu); void gpu_autotune(int gpu, enum dev_enable *denable); void clear_adl(int nDevs); +void reinit_adl(void); #else /* HAVE_ADL */ #define adl_active (0) static inline void init_adl(int nDevs) {} static inline void change_gpusettings(int gpu) { } static inline void clear_adl(int nDevs) {} +static inline void reinit_adl(void) {} #endif #endif From d4c513030f6d6da4cb54c0d1499d332a3987c376 Mon Sep 17 00:00:00 2001 From: ckolivas Date: Thu, 29 Mar 2012 11:47:28 +1100 Subject: [PATCH 073/117] Attempt to re-initialise ADL should a device that previously reported fanspeed stops reporting it. --- adl.c | 14 ++++++++++++-- adl.h | 2 -- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/adl.c b/adl.c index 13dd06bc..04e48684 100644 --- a/adl.c +++ b/adl.c @@ -639,6 +639,8 @@ static inline int __gpu_fanspeed(struct gpu_adl *ga) return ga->lpFanSpeedValue.iFanSpeed; } +static void reinit_adl(void); + int gpu_fanspeed(int gpu) { struct gpu_adl *ga; @@ -667,6 +669,8 @@ static int __gpu_fanpercent(struct gpu_adl *ga) return ga->lpFanSpeedValue.iFanSpeed; } + + int gpu_fanpercent(int gpu) { struct gpu_adl *ga; @@ -679,6 +683,11 @@ int gpu_fanpercent(int gpu) lock_adl(); ret = __gpu_fanpercent(ga); unlock_adl(); + if (unlikely(ga->has_fanspeed && ret == -1)) { + applog(LOG_WARNING, "GPU %d stopped reporting fanspeed", gpu); + applog(LOG_WARNING, "Will attempt to re-initialise ADL"); + reinit_adl(); + } return ret; } @@ -1359,7 +1368,7 @@ void clear_adl(int nDevs) free_adl(); } -void reinit_adl(void) +static void reinit_adl(void) { bool ret; lock_adl(); @@ -1368,7 +1377,8 @@ void reinit_adl(void) if (!ret) { adl_active = false; applog(LOG_WARNING, "Attempt to re-initialise ADL has failed, disabling"); - } + } else + applog(LOG_WARNING, "ADL re-initialisation complete"); unlock_adl(); } #endif /* HAVE_ADL */ diff --git a/adl.h b/adl.h index 363741c0..f48c4206 100644 --- a/adl.h +++ b/adl.h @@ -19,12 +19,10 @@ bool gpu_stats(int gpu, float *temp, int *engineclock, int *memclock, float *vdd void change_gpusettings(int gpu); void gpu_autotune(int gpu, enum dev_enable *denable); void clear_adl(int nDevs); -void reinit_adl(void); #else /* HAVE_ADL */ #define adl_active (0) static inline void init_adl(int nDevs) {} static inline void change_gpusettings(int gpu) { } static inline void clear_adl(int nDevs) {} -static inline void reinit_adl(void) {} #endif #endif From a1879c80573967f198120766dd2150d04d0f8381 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Thu, 29 Mar 2012 20:53:16 +1100 Subject: [PATCH 074/117] Only increment stale counter if the detected stales are discarded. --- cgminer.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cgminer.c b/cgminer.c index ac814dac..d4a09fe0 100644 --- a/cgminer.c +++ b/cgminer.c @@ -1923,16 +1923,16 @@ static void *submit_work_thread(void *userdata) pthread_detach(pthread_self()); if (stale_work(work, true)) { - total_stale++; - pool->stale_shares++; - if (!opt_submit_stale && !pool->submit_old) { - applog(LOG_NOTICE, "Stale share detected, discarding"); - goto out; - } if (opt_submit_stale) applog(LOG_NOTICE, "Stale share detected, submitting as user requested"); else if (pool->submit_old) applog(LOG_NOTICE, "Stale share detected, submitting as pool requested"); + else { + applog(LOG_NOTICE, "Stale share detected, discarding"); + total_stale++; + pool->stale_shares++; + goto out; + } } /* submit solution to bitcoin via JSON-RPC */ From 88ff55e70e8c15aeedf4ccfc359b175a01c8f8fe Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Thu, 29 Mar 2012 21:02:42 +1100 Subject: [PATCH 075/117] Use a time constant 0.63 for when large changes in hashrate are detected to damp change in case the large change is an aliasing artefact instead of a real change. --- cgminer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cgminer.c b/cgminer.c index d4a09fe0..f8e60956 100644 --- a/cgminer.c +++ b/cgminer.c @@ -1143,7 +1143,7 @@ void decay_time(double *f, double fadd) if (ratio > 0.95) *f = (fadd * 0.05 + *f) / 1.05; else - *f = (fadd + *f * 0.05) / 1.05; + *f = (fadd + *f * 0.58) / 1.58; // 0.63 } static int requests_staged(void) From 27a6f7a81b3e2755072a6f89c92f329526cfe76c Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Thu, 29 Mar 2012 21:14:23 +1100 Subject: [PATCH 076/117] Add vector type hint to phatk kernel. --- phatk120223.cl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/phatk120223.cl b/phatk120223.cl index 7d1c3200..9c4ee835 100644 --- a/phatk120223.cl +++ b/phatk120223.cl @@ -152,8 +152,9 @@ __constant uint H[8] = { //#define WORKSIZE 256 #define MAXBUFFERS (4095) -__kernel - __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) +__kernel +__attribute__((vec_type_hint(u))) +__attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( const uint state0, const uint state1, const uint state2, const uint state3, const uint state4, const uint state5, const uint state6, const uint state7, const uint B1, const uint C1, const uint D1, From 532179b24d9943e0e48e364682c05c006821a35d Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Thu, 29 Mar 2012 21:39:17 +1100 Subject: [PATCH 077/117] Use min() function on 2 vector output path in phatk kernel and don't use extra variable for both 2 and 4 vectors. --- phatk120223.cl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/phatk120223.cl b/phatk120223.cl index 9c4ee835..a268eb7e 100644 --- a/phatk120223.cl +++ b/phatk120223.cl @@ -392,8 +392,7 @@ void search( const uint state0, const uint state1, const uint state2, const uint #define NFLAG (0x7F) #ifdef VECTORS4 - bool result = W[117].x & W[117].y & W[117].z & W[117].w; - if (!result) { + if (!(W[117].x & W[117].y & W[117].z & W[117].w)) { if (!W[117].x) output[FOUND] = output[NFLAG & W[3].x] = W[3].x; if (!W[117].y) @@ -404,8 +403,7 @@ void search( const uint state0, const uint state1, const uint state2, const uint output[FOUND] = output[NFLAG & W[3].w] = W[3].w; } #elif defined VECTORS2 - bool result = W[117].x & W[117].y; - if (!result) { + if (!(min(W[117].x, W[117].y))) { if (!W[117].x) output[FOUND] = output[NFLAG & W[3].x] = W[3].x; if (!W[117].y) From 580888f91b2c7f6f17dc0d87b4c98a471e99cb30 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Fri, 30 Mar 2012 07:50:36 +1100 Subject: [PATCH 078/117] Update phatk version number. --- configure.ac | 2 +- phatk120223.cl => phatk120329.cl | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename phatk120223.cl => phatk120329.cl (100%) diff --git a/configure.ac b/configure.ac index bdef6873..f58caaf4 100644 --- a/configure.ac +++ b/configure.ac @@ -345,7 +345,7 @@ fi AC_DEFINE_UNQUOTED([CGMINER_PREFIX], ["$prefix/bin"], [Path to cgminer install]) -AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120223"], [Filename for phatk kernel]) +AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120329"], [Filename for phatk kernel]) AC_DEFINE_UNQUOTED([POCLBM_KERNNAME], ["poclbm120327"], [Filename for poclbm kernel]) AC_DEFINE_UNQUOTED([DIAKGCN_KERNNAME], ["diakgcn120223"], [Filename for diakgcn kernel]) AC_DEFINE_UNQUOTED([DIABLO_KERNNAME], ["diablo120328"], [Filename for diablo kernel]) diff --git a/phatk120223.cl b/phatk120329.cl similarity index 100% rename from phatk120223.cl rename to phatk120329.cl From 6274fbe7277f2be573af07320eb2f093c19d538f Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Fri, 30 Mar 2012 09:32:42 +1100 Subject: [PATCH 079/117] Change the preferred vector width to 1 for Tahiti only, not all poclbm kernels. --- ocl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ocl.c b/ocl.c index a15fc455..c1c6aaf7 100644 --- a/ocl.c +++ b/ocl.c @@ -365,16 +365,16 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) /* For some reason 2 vectors is still better even if the card says * otherwise, and many cards lie about their max so use 256 as max - * unless explicitly set on the command line. */ - if (preferred_vwidth > 2) + * unless explicitly set on the command line. Tahiti prefers 1 */ + if (strstr(name, "Tahiti")) + preferred_vwidth = 1; + else if (preferred_vwidth > 2) preferred_vwidth = 2; switch (clState->chosen_kernel) { case KL_POCLBM: strcpy(filename, POCLBM_KERNNAME".cl"); strcpy(binaryfilename, POCLBM_KERNNAME); - /* This kernel prefers to not use vectors */ - preferred_vwidth = 1; break; case KL_PHATK: strcpy(filename, PHATK_KERNNAME".cl"); From 1092f01b1b2b1b52ec6501fb58359755a77f951b Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Fri, 30 Mar 2012 17:11:15 +1100 Subject: [PATCH 080/117] Update NEWS. --- NEWS | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/NEWS b/NEWS index f76c8d09..b5c92dcf 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,123 @@ +Version 2.3.2 - March 30, 2012 + +- Change the preferred vector width to 1 for Tahiti only, not all poclbm +kernels. +- Update phatk version number. +- Use min() function on 2 vector output path in phatk kernel and don't use extra +variable for both 2 and 4 vectors. +- Add vector type hint to phatk kernel. +- Use a time constant 0.63 for when large changes in hashrate are detected to +damp change in case the large change is an aliasing artefact instead of a real +chang +- Only increment stale counter if the detected stales are discarded. +- Attempt to re-initialise ADL should a device that previously reported fanspeed +stops reporting it. +- Move the ADL setup and clearing to separate functions and provide a reinit_adl +function to be used when adl fails while running. +- Use slightly more damping on the decay time function in the never-ending quest +to smooth off the hashmeter. +- Set the starting fanspeed to a safe and fairly neutral 50% when autofan is +enabled. +- Provide locking around updates of cgpu hashrates as well to prevent multiple +threads accessing data fields on the same device. +- Display the beginning of the new block in verbose mode in the logs. +- Reinstate old diablo kernel variable ordering from 120222, adding only goffset +and vector size hint. The massive variable ordering change only helped one SDK +on +- Change the version number on the correct kernels. +- api.c devicecode/osinfo incorrectly swapped for json +- Add extensive instructions on how to make a native windows build. +- Update version numbers of poclbm and diablo kernels as their APIs have also +changed. +- Use global offset parameter to diablo and poclbm kernel ONLY for 1 vector +kernels. +- Use poclbm preferentially on Tahiti now regardless of SDK. +- Remove unused constant passed to poclbm. +- Clean up use of macros in poclbm and use bitselect everywhere possible. +- Add vector type hint to diablo kernel. +- Add worksize and vector attribute hints to the poclbm kernel. +- Spaces for non-aligned variables in poclbm. +- More tidying of poclbm. +- Swap Vals and W variables where they can overlap in poclbm. +- More tidying of poclbm. +- Tidy up first half of poclbm. +- Diablo tidy. +- Absorb as many ZA variables into each other in diablo kernel. +- Add spaces to new assignments in diablo kernel. +- Variable assignment alignment in diablo kernel. +- Clean up use of any() by diablo and poclbm kernels. +- Minor variable symmetry changes in poclbm. +- Put additions on separate lines for consistency in poclbm. +- Consolidate last use of W11 into Vals4 in poclbm. +- Add last value in vectors in diablo and poclbm kernel for consistency with +original code. +- Separate out all additions of different variables in diablo kernel. +- Separate out additions in final vector code in diablo kernel as well. +- Get rid of accessory braces. +- Keep lines that reference the same variable together. +- Split addition lines without functions. +- Remove unnecessary braces from diablo kernel. +- Use the unrolled option for no vectors return code. +- Convert additions to += in diablo kernel. +- Reuse variables to decrease total number used in diablo kernel. +- Strip out unused variables from diablo array. +- Machine optimise by removing one-use variables. +- Merge all additions before output. +- Cluster Vals7 for use on output. +- Change email due to SPAM +- api.c miner.php add a '*' to the front of all notify counters - simplifies +future support of new counters +- miner.php add display 'notify' command +- Small change to help arch's without processor affinity +- Fix bitforce compile error +- api.c notify should report disabled devices also - of course +- API returns the simple device history with the 'notify' command +- code changes for supporting a simple device history +- api.c Report an OS string in config to help with device issues +- api.c fix Log Interval - integer in JSON +- api.c config 'Device Code' to show list of compiled devices + README +- api.c increase buffer size close to current code allowable limit +- removed 8-component vector support from kernel, as this is not supported in +CGMINER anyway +- forgot to update kernel modification date, fixed ;) +- reordered an addition in the kernel, which results in less instructions used +in the GPU ISA code for GCN +- miner.php: option for readonly or check privileged access +- Ignore reduntant-with-build options --disable-gpu, --no-adl, and --no-restart +- miner.php: ereg_replace is DEPRECATED so use preg_replace instead +- Make curses TUI support optional at compile-time. +- Bugfix: AC_ARG_WITH provides withval instead of enableval +- miner.php split devs output for different devices +- api.c: correct error messages +- icarus.c modify (regular) timeout warning to only be debug +- icarus.c set the windows TODO timeout +- Allow specifying a specific driver for --scan-serial +- optimized nonce-check and output code for -v 2 and -v 4 +- Bugfix: Check for libudev header (not just library) in configure, and document +optional dependency +- Add API support for Icarus and Bitforce +- Next API version is 1.4 (1.3 is current) +- README/api.c add "When" the request was processed to STATUS +- Bugfix: ZLX to read BitFORCE temp, not ZKX -.- +- Use libudev to autodetect BitFORCE GPUs, if available +- Use the return value of fan_autotune to set fan_optimal instead of passing it +as a pointer. +- Pass the lasttemp from the device we're using to adjust fanspeed in twin +devices. +- fix the name to 3 chars, fix the multi-icarus support +- Bugfix: "-S auto" is the default if no -S is specified, and there is no such +delay in using it +- README add information missing from --scan-serial +- Update README RPC API Version comment +- Bugfix: Allow enabling CPU even without OpenCL support +- Change failed-to-mine number of requested shares messge to avoid segfault on +recursive calling of quit(). +- Get rid of extra char which is just truncated in poclbm kernel. +- only small code formating changes +- removed vec_step() as this could lead to errors on older SDKs +- unified code for generating nonce in kernel and moved addition of base to the +end -> faster + Version 2.3.1 - February 24, 2012 - Revert input and output code on diakgcn and phatk kernels to old style which From 3fa3f60b7457eb5e3e7c0857ceffec41e2f256d2 Mon Sep 17 00:00:00 2001 From: Kano Date: Fri, 30 Mar 2012 00:03:29 +1100 Subject: [PATCH 081/117] api.c new commands: pgaenable pgadisable --- README | 15 ++++++-- api.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+), 2 deletions(-) diff --git a/README b/README index 7c411d90..0cb57209 100644 --- a/README +++ b/README @@ -749,8 +749,19 @@ The list of requests - a (*) means it requires privileged access - and replies a to the API and success if you do have privilege The command doesn't change anything in cgminer -When you enable, disable or restart a GPU, you will also get Thread messages in -the cgminer status window + pgaenable|N (*) + none There is no reply section just the STATUS section + stating the results of the enable request + You cannot enable a PGA if it's status is not WELL + This is only available if PGA mining is enabled + + pgadisable|N (*) + none There is no reply section just the STATUS section + stating the results of the disable request + This is only available if PGA mining is enabled + +When you enable, disable or restart a GPU or PGA, you will also get Thread messages +in the cgminer status window When you switch to a different pool to the current one, you will get a 'Switching to URL' message in the cgminer status windows diff --git a/api.c b/api.c index 1879c38f..953b1938 100644 --- a/api.c +++ b/api.c @@ -329,6 +329,14 @@ static const char *JSON_PARAMETER = "parameter"; #define MSG_NUMPGA 59 #define MSG_NOTIFY 60 +#if defined(USE_BITFORCE) || defined(USE_ICARUS) +#define MSG_PGALRENA 61 +#define MSG_PGALRDIS 62 +#define MSG_PGAENA 63 +#define MSG_PGADIS 64 +#define MSG_PGAUNW 65 +#endif + enum code_severity { SEVERITY_ERR, SEVERITY_WARN, @@ -400,6 +408,11 @@ struct CODES { { SEVERITY_ERR, MSG_PGANON, PARAM_NONE, "No PGAs" }, { SEVERITY_SUCC, MSG_PGADEV, PARAM_PGA, "PGA%d" }, { SEVERITY_ERR, MSG_INVPGA, PARAM_PGAMAX, "Invalid PGA id %d - range is 0 - %d" }, + { SEVERITY_INFO, MSG_PGALRENA,PARAM_PGA, "PGA %d already enabled" }, + { SEVERITY_INFO, MSG_PGALRDIS,PARAM_PGA, "PGA %d already disabled" }, + { SEVERITY_INFO, MSG_PGAENA, PARAM_PGA, "PGA %d sent enable message" }, + { SEVERITY_INFO, MSG_PGADIS, PARAM_PGA, "PGA %d set disable flag" }, + { SEVERITY_ERR, MSG_PGAUNW, PARAM_PGA, "PGA %d is not flagged WELL, cannot enable" }, #endif #ifdef WANT_CPUMINE { SEVERITY_ERR, MSG_CPUNON, PARAM_NONE, "No CPUs" }, @@ -955,6 +968,99 @@ static void pgadev(__maybe_unused SOCKETTYPE c, char *param, bool isjson) if (isjson) strcat(io_buffer, JSON_CLOSE); } + +static void pgaenable(__maybe_unused SOCKETTYPE c, char *param, bool isjson) +{ + int numpga = numpgas(); + struct thr_info *thr; + int pga; + int id; + int i; + + if (numpga == 0) { + strcpy(io_buffer, message(MSG_PGANON, 0, NULL, isjson)); + return; + } + + if (param == NULL || *param == '\0') { + strcpy(io_buffer, message(MSG_MISID, 0, NULL, isjson)); + return; + } + + id = atoi(param); + if (id < 0 || id >= numpga) { + strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson)); + return; + } + + int dev = pgadevice(id); + if (dev < 0) { // Should never happen + strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson)); + return; + } + + struct cgpu_info *cgpu = devices[dev]; + + if (cgpu->deven != DEV_DISABLED) { + strcpy(io_buffer, message(MSG_PGALRENA, id, NULL, isjson)); + return; + } + + if (cgpu->status != LIFE_WELL) { + strcpy(io_buffer, message(MSG_PGAUNW, id, NULL, isjson)); + return; + } + + for (i = 0; i < mining_threads; i++) { + pga = thr_info[i].cgpu->device_id; + if (pga == dev) { + thr = &thr_info[i]; + cgpu->deven = DEV_ENABLED; + tq_push(thr->q, &ping); + } + } + + strcpy(io_buffer, message(MSG_PGAENA, id, NULL, isjson)); +} + +static void pgadisable(__maybe_unused SOCKETTYPE c, char *param, bool isjson) +{ + int numpga = numpgas(); + int id; + + if (numpga == 0) { + strcpy(io_buffer, message(MSG_PGANON, 0, NULL, isjson)); + return; + } + + if (param == NULL || *param == '\0') { + strcpy(io_buffer, message(MSG_MISID, 0, NULL, isjson)); + return; + } + + id = atoi(param); + if (id < 0 || id >= numpga) { + strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson)); + return; + } + + int dev = pgadevice(id); + if (dev < 0) { // Should never happen + strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson)); + return; + } + + struct cgpu_info *cgpu = devices[dev]; + + if (cgpu->deven == DEV_DISABLED) { + strcpy(io_buffer, message(MSG_PGALRDIS, id, NULL, isjson)); + return; + } + + cgpu->deven = DEV_DISABLED; + + strcpy(io_buffer, message(MSG_PGADIS, id, NULL, isjson)); +} #endif #ifdef WANT_CPUMINE @@ -1720,6 +1826,8 @@ struct CMDS { { "gpu", gpudev, false }, #if defined(USE_BITFORCE) || defined(USE_ICARUS) { "pga", pgadev, false }, + { "pgaenable", pgaenable, true }, + { "pgadisable", pgadisable, true }, #endif #ifdef WANT_CPUMINE { "cpu", cpudev, false }, From f9af5acf1347d951ec25c34450ba0ddda009dcb0 Mon Sep 17 00:00:00 2001 From: Kano Date: Fri, 30 Mar 2012 14:57:18 +1100 Subject: [PATCH 082/117] When using '-m' on linux, send the forked process a SIGTERM on exit --- cgminer.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/cgminer.c b/cgminer.c index f8e60956..20559378 100644 --- a/cgminer.c +++ b/cgminer.c @@ -221,6 +221,7 @@ static int include_count = 0; #if defined(unix) static char *opt_stderr_cmd = NULL; + static int forkpid = 0; #endif // defined(unix) bool ping = true; @@ -4121,6 +4122,13 @@ void quit(int status, const char *format, ...) fprintf(stderr, "\n"); fflush(stderr); +#if defined(unix) + if (forkpid > 0) { + kill(forkpid, SIGTERM); + forkpid = 0; + } +#endif + exit(status); } @@ -4265,14 +4273,14 @@ out: } // Fork a child process - r = fork(); - if (r<0) { + forkpid = fork(); + if (forkpid<0) { perror("fork - failed to fork child process for --monitor"); exit(1); } // Child: launch monitor command - if (0==r) { + if (0==forkpid) { // Make stdin read end of pipe r = dup2(pfd[0], 0); if (r<0) { @@ -4839,5 +4847,12 @@ begin_bench: free(block); } +#if defined(unix) + if (forkpid > 0) { + kill(forkpid, SIGTERM); + forkpid = 0; + } +#endif + return 0; } From 0be2b9e9b6fc1159ba61b10eb85b68d6d7a1b2b9 Mon Sep 17 00:00:00 2001 From: Kano Date: Fri, 30 Mar 2012 21:58:15 +1100 Subject: [PATCH 083/117] Increase max devices to 64 (for FPGA support) --- miner.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/miner.h b/miner.h index f244e819..cdcb44c9 100644 --- a/miner.h +++ b/miner.h @@ -507,7 +507,7 @@ extern int add_pool_details(bool live, char *url, char *user, char *pass); #define ADD_POOL_OK 0 #define MAX_GPUDEVICES 16 -#define MAX_DEVICES 32 +#define MAX_DEVICES 64 #define MAX_POOLS (32) #define MIN_INTENSITY -10 From cf0aebb4f56b8ee9896e5d02fb693ac2e2f2e420 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 01:10:28 +1100 Subject: [PATCH 084/117] Revert "Update phatk version number." This reverts commit 580888f91b2c7f6f17dc0d87b4c98a471e99cb30. Removing changes which did nothing. --- configure.ac | 2 +- phatk120329.cl => phatk120223.cl | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename phatk120329.cl => phatk120223.cl (100%) diff --git a/configure.ac b/configure.ac index f58caaf4..bdef6873 100644 --- a/configure.ac +++ b/configure.ac @@ -345,7 +345,7 @@ fi AC_DEFINE_UNQUOTED([CGMINER_PREFIX], ["$prefix/bin"], [Path to cgminer install]) -AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120329"], [Filename for phatk kernel]) +AC_DEFINE_UNQUOTED([PHATK_KERNNAME], ["phatk120223"], [Filename for phatk kernel]) AC_DEFINE_UNQUOTED([POCLBM_KERNNAME], ["poclbm120327"], [Filename for poclbm kernel]) AC_DEFINE_UNQUOTED([DIAKGCN_KERNNAME], ["diakgcn120223"], [Filename for diakgcn kernel]) AC_DEFINE_UNQUOTED([DIABLO_KERNNAME], ["diablo120328"], [Filename for diablo kernel]) diff --git a/phatk120329.cl b/phatk120223.cl similarity index 100% rename from phatk120329.cl rename to phatk120223.cl From d33ae6a7b01f86d3dacf18fba2e38ac56eb7a584 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 01:10:53 +1100 Subject: [PATCH 085/117] Revert "Use min() function on 2 vector output path in phatk kernel and don't use extra variable for both 2 and 4 vectors." This reverts commit 532179b24d9943e0e48e364682c05c006821a35d. Of no advantage. --- phatk120223.cl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/phatk120223.cl b/phatk120223.cl index a268eb7e..9c4ee835 100644 --- a/phatk120223.cl +++ b/phatk120223.cl @@ -392,7 +392,8 @@ void search( const uint state0, const uint state1, const uint state2, const uint #define NFLAG (0x7F) #ifdef VECTORS4 - if (!(W[117].x & W[117].y & W[117].z & W[117].w)) { + bool result = W[117].x & W[117].y & W[117].z & W[117].w; + if (!result) { if (!W[117].x) output[FOUND] = output[NFLAG & W[3].x] = W[3].x; if (!W[117].y) @@ -403,7 +404,8 @@ void search( const uint state0, const uint state1, const uint state2, const uint output[FOUND] = output[NFLAG & W[3].w] = W[3].w; } #elif defined VECTORS2 - if (!(min(W[117].x, W[117].y))) { + bool result = W[117].x & W[117].y; + if (!result) { if (!W[117].x) output[FOUND] = output[NFLAG & W[3].x] = W[3].x; if (!W[117].y) From 9f70b9c84e7030ecf6cd55ba5e8d395a4be58070 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 01:11:26 +1100 Subject: [PATCH 086/117] Revert "Add vector type hint to phatk kernel." This reverts commit 27a6f7a81b3e2755072a6f89c92f329526cfe76c. Has no demonstrable beneficial effect on phatk kernel. --- phatk120223.cl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phatk120223.cl b/phatk120223.cl index 9c4ee835..7d1c3200 100644 --- a/phatk120223.cl +++ b/phatk120223.cl @@ -152,9 +152,8 @@ __constant uint H[8] = { //#define WORKSIZE 256 #define MAXBUFFERS (4095) -__kernel -__attribute__((vec_type_hint(u))) -__attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) +__kernel + __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) void search( const uint state0, const uint state1, const uint state2, const uint state3, const uint state4, const uint state5, const uint state6, const uint state7, const uint B1, const uint C1, const uint D1, From c2cf8eb2d26397861f4dea561af656fefeddefd7 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 01:13:27 +1100 Subject: [PATCH 087/117] Remove NEWS changelogs that were reverted. --- NEWS | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/NEWS b/NEWS index b5c92dcf..d63326aa 100644 --- a/NEWS +++ b/NEWS @@ -2,10 +2,6 @@ Version 2.3.2 - March 30, 2012 - Change the preferred vector width to 1 for Tahiti only, not all poclbm kernels. -- Update phatk version number. -- Use min() function on 2 vector output path in phatk kernel and don't use extra -variable for both 2 and 4 vectors. -- Add vector type hint to phatk kernel. - Use a time constant 0.63 for when large changes in hashrate are detected to damp change in case the large change is an aliasing artefact instead of a real chang @@ -41,29 +37,10 @@ kernels. - Swap Vals and W variables where they can overlap in poclbm. - More tidying of poclbm. - Tidy up first half of poclbm. -- Diablo tidy. -- Absorb as many ZA variables into each other in diablo kernel. -- Add spaces to new assignments in diablo kernel. -- Variable assignment alignment in diablo kernel. - Clean up use of any() by diablo and poclbm kernels. - Minor variable symmetry changes in poclbm. - Put additions on separate lines for consistency in poclbm. - Consolidate last use of W11 into Vals4 in poclbm. -- Add last value in vectors in diablo and poclbm kernel for consistency with -original code. -- Separate out all additions of different variables in diablo kernel. -- Separate out additions in final vector code in diablo kernel as well. -- Get rid of accessory braces. -- Keep lines that reference the same variable together. -- Split addition lines without functions. -- Remove unnecessary braces from diablo kernel. -- Use the unrolled option for no vectors return code. -- Convert additions to += in diablo kernel. -- Reuse variables to decrease total number used in diablo kernel. -- Strip out unused variables from diablo array. -- Machine optimise by removing one-use variables. -- Merge all additions before output. -- Cluster Vals7 for use on output. - Change email due to SPAM - api.c miner.php add a '*' to the front of all notify counters - simplifies future support of new counters From 1a2130cc535d3beec5aabc64aed050b484eb91c1 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 09:49:39 +1100 Subject: [PATCH 088/117] Vals variables appearing first in the array in poclbm is faster. --- poclbm120327.cl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/poclbm120327.cl b/poclbm120327.cl index 92bc7071..970f2333 100644 --- a/poclbm120327.cl +++ b/poclbm120327.cl @@ -82,8 +82,8 @@ void search(const uint state0, const uint state1, const uint state2, const uint const uint PreVal4addT1, const uint Preval0, __global uint * output) { - u W[24]; - u *Vals = &W[16]; // Now put at W[16] to be in same array + u Vals[24]; + u *W = &Vals[8]; #ifdef GOFFSET const u nonce = (uint)(get_global_id(0)); From fb881eac628cfb5b3b1ae8a924ad1e55865986f3 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 14:34:06 +1100 Subject: [PATCH 089/117] Revert the crossover of variables from Vals to W in poclbm kernel now that Vals are the first declared variables so they're used more frequently. --- poclbm120327.cl | 1259 +++++++++++++++++++++++------------------------ 1 file changed, 621 insertions(+), 638 deletions(-) diff --git a/poclbm120327.cl b/poclbm120327.cl index 970f2333..60b385af 100644 --- a/poclbm120327.cl +++ b/poclbm120327.cl @@ -101,12 +101,10 @@ Vals[3]+=D1A; Vals[7]=Vals[3]; Vals[7]+=h1; - Vals[4]=PreVal4addT1; Vals[4]+=nonce; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); - Vals[2]=C1addK5; Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[2]+=ch(Vals[7],Vals[0],b1); @@ -117,7 +115,6 @@ Vals[3]+=Ma2(g1,Vals[4],f1); Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma2(f1,Vals[3],Vals[4]); - Vals[1]=B1addK6; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); @@ -205,7 +202,6 @@ Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - W[2]=(rotr(nonce,7)^rotr(nonce,18)^(nonce>>3U)); W[2]+=fw2; Vals[5]+=W[2]; @@ -216,7 +212,6 @@ Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); - W[3]=nonce; W[3]+=fw3; Vals[4]+=W[3]; @@ -227,9 +222,8 @@ Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - -W[4]=0x80000000U; -W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +W[4]=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +W[4]+=0x80000000U; Vals[3]+=W[4]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); @@ -238,7 +232,6 @@ Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - W[5]=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); Vals[2]+=W[5]; Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); @@ -248,9 +241,8 @@ Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -W[6]=0x00000280U; -W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +W[6]=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +W[6]+=0x00000280U; Vals[1]+=W[6]; Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); @@ -259,9 +251,8 @@ Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - -W[7]=fw0; -W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +W[7]=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +W[7]+=fw0; Vals[0]+=W[7]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); @@ -270,9 +261,8 @@ Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -W[8]=fw1; -W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); +W[8]=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); +W[8]+=fw1; Vals[7]+=W[8]; Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); @@ -281,7 +271,6 @@ Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - W[9]=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); Vals[6]+=W[9]; @@ -292,7 +281,6 @@ Vals[2]+=Vals[6]; Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - W[10]=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); Vals[5]+=W[10]; @@ -303,7 +291,6 @@ Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); - W[11]=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); Vals[4]+=W[11]; @@ -314,7 +301,6 @@ Vals[0]+=Vals[4]; Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); - W[12]=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); Vals[3]+=W[12]; @@ -325,7 +311,6 @@ Vals[7]+=Vals[3]; Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - W[13]=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); Vals[2]+=W[13]; @@ -336,7 +321,6 @@ Vals[6]+=Vals[2]; Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - W[14]=0x00a00055U; W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); @@ -348,7 +332,6 @@ Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); - W[15]=fw15; W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); @@ -360,7 +343,6 @@ Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - W[0]=fw01r; W[0]+=W[9]; W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); @@ -372,7 +354,6 @@ Vals[3]+=Vals[7]; Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - W[1]=fw1; W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; @@ -714,656 +695,658 @@ Vals[0]+=W[15]; Vals[4]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); -Vals[0]+=state0; - -W[7]=Vals[0]; -W[7]+=0xF377ED68U; - - -W[3]=0xa54ff53aU; -W[3]+=W[7]; -W[7]+=0x08909ae5U; - -Vals[1]+=state1; - -W[6]=Vals[1]; -W[6]+=0x90BB1E3CU; -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=(0x9b05688cU^(W[3]&0xca0b3af3U)); - - -W[2]=0x3c6ef372U; -W[2]+=W[6]; -W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); -W[6]+=Ma2(0xbb67ae85U,W[7],0x6a09e667U); - -Vals[2]+=state2; - -W[5]=Vals[2]; -W[5]+=0x50C6645BU; -W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); -W[5]+=ch(W[2],W[3],0x510e527fU); - - -W[1]=0xbb67ae85U; -W[1]+=W[5]; -W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); -W[5]+=Ma2(0x6a09e667U,W[6],W[7]); - -Vals[3]+=state3; - -W[4]=Vals[3]; -W[4]+=0x3AC42E24U; -W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); -W[4]+=ch(W[1],W[2],W[3]); - - -W[0]=0x6a09e667U; -W[0]+=W[4]; -W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); -W[4]+=Ma(W[7],W[5],W[6]); - -Vals[4]+=state4; -W[3]+=Vals[4]; -W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); -W[3]+=ch(W[0],W[1],W[2]); -W[3]+=K[4]; -W[7]+=W[3]; -W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); -W[3]+=Ma(W[6],W[4],W[5]); - -Vals[5]+=state5; -W[2]+=Vals[5]; -W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); -W[2]+=ch(W[7],W[0],W[1]); -W[2]+=K[5]; -W[6]+=W[2]; -W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); -W[2]+=Ma(W[5],W[3],W[4]); - -Vals[6]+=state6; -W[1]+=Vals[6]; -W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[1]+=ch(W[6],W[7],W[0]); -W[1]+=K[6]; -W[5]+=W[1]; -W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); -W[1]+=Ma(W[4],W[2],W[3]); - -Vals[7]+=state7; -W[0]+=Vals[7]; -W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[0]+=ch(W[5],W[6],W[7]); -W[0]+=K[7]; -W[4]+=W[0]; -W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); -W[0]+=Ma(W[3],W[1],W[2]); - -W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); -W[7]+=ch(W[4],W[5],W[6]); -W[7]+=0x5807AA98U; -W[3]+=W[7]; -W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); -W[7]+=Ma(W[2],W[0],W[1]); - -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=ch(W[3],W[4],W[5]); -W[6]+=K[9]; -W[2]+=W[6]; -W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); -W[6]+=Ma(W[1],W[7],W[0]); - -W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); -W[5]+=ch(W[2],W[3],W[4]); -W[5]+=K[10]; -W[1]+=W[5]; -W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); -W[5]+=Ma(W[0],W[6],W[7]); - -W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); -W[4]+=ch(W[1],W[2],W[3]); -W[4]+=K[11]; -W[0]+=W[4]; -W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); -W[4]+=Ma(W[7],W[5],W[6]); - -W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); -W[3]+=ch(W[0],W[1],W[2]); -W[3]+=K[12]; -W[7]+=W[3]; -W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); -W[3]+=Ma(W[6],W[4],W[5]); - -W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); -W[2]+=ch(W[7],W[0],W[1]); -W[2]+=K[13]; -W[6]+=W[2]; -W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); -W[2]+=Ma(W[5],W[3],W[4]); - -W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[1]+=ch(W[6],W[7],W[0]); -W[1]+=K[14]; -W[5]+=W[1]; -W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); -W[1]+=Ma(W[4],W[2],W[3]); - -W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[0]+=ch(W[5],W[6],W[7]); -W[0]+=0xC19BF274U; -W[4]+=W[0]; -W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); -W[0]+=Ma(W[3],W[1],W[2]); - -Vals[0]+=(rotr(Vals[1],7)^rotr(Vals[1],18)^(Vals[1]>>3U)); -W[7]+=Vals[0]; -W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); -W[7]+=ch(W[4],W[5],W[6]); -W[7]+=K[16]; -W[3]+=W[7]; -W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); -W[7]+=Ma(W[2],W[0],W[1]); - -Vals[1]+=(rotr(Vals[2],7)^rotr(Vals[2],18)^(Vals[2]>>3U)); -Vals[1]+=0x00a00000U; -W[6]+=Vals[1]; -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=ch(W[3],W[4],W[5]); -W[6]+=K[17]; -W[2]+=W[6]; -W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); -W[6]+=Ma(W[1],W[7],W[0]); - -Vals[2]+=(rotr(Vals[3],7)^rotr(Vals[3],18)^(Vals[3]>>3U)); -Vals[2]+=(rotr(Vals[0],17)^rotr(Vals[0],19)^(Vals[0]>>10U)); -W[5]+=Vals[2]; -W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); -W[5]+=ch(W[2],W[3],W[4]); -W[5]+=K[18]; -W[1]+=W[5]; -W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); -W[5]+=Ma(W[0],W[6],W[7]); - -Vals[3]+=(rotr(Vals[4],7)^rotr(Vals[4],18)^(Vals[4]>>3U)); -Vals[3]+=(rotr(Vals[1],17)^rotr(Vals[1],19)^(Vals[1]>>10U)); -W[4]+=Vals[3]; -W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); -W[4]+=ch(W[1],W[2],W[3]); -W[4]+=K[19]; -W[0]+=W[4]; -W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); -W[4]+=Ma(W[7],W[5],W[6]); - -Vals[4]+=(rotr(Vals[5],7)^rotr(Vals[5],18)^(Vals[5]>>3U)); -Vals[4]+=(rotr(Vals[2],17)^rotr(Vals[2],19)^(Vals[2]>>10U)); -W[3]+=Vals[4]; -W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); -W[3]+=ch(W[0],W[1],W[2]); -W[3]+=K[20]; -W[7]+=W[3]; -W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); -W[3]+=Ma(W[6],W[4],W[5]); - -Vals[5]+=(rotr(Vals[6],7)^rotr(Vals[6],18)^(Vals[6]>>3U)); -Vals[5]+=(rotr(Vals[3],17)^rotr(Vals[3],19)^(Vals[3]>>10U)); -W[2]+=Vals[5]; -W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); -W[2]+=ch(W[7],W[0],W[1]); -W[2]+=K[21]; -W[6]+=W[2]; -W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); -W[2]+=Ma(W[5],W[3],W[4]); - -Vals[6]+=(rotr(Vals[7],7)^rotr(Vals[7],18)^(Vals[7]>>3U)); -Vals[6]+=0x00000100U; -Vals[6]+=(rotr(Vals[4],17)^rotr(Vals[4],19)^(Vals[4]>>10U)); -W[1]+=Vals[6]; -W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[1]+=ch(W[6],W[7],W[0]); -W[1]+=K[22]; -W[5]+=W[1]; -W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); -W[1]+=Ma(W[4],W[2],W[3]); - -Vals[7]+=0x11002000U; -Vals[7]+=Vals[0]; -Vals[7]+=(rotr(Vals[5],17)^rotr(Vals[5],19)^(Vals[5]>>10U)); -W[0]+=Vals[7]; -W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[0]+=ch(W[5],W[6],W[7]); -W[0]+=K[23]; -W[4]+=W[0]; -W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); -W[0]+=Ma(W[3],W[1],W[2]); +W[0]=Vals[0]; +W[0]+=state0; -W[8]=0x80000000U; -W[8]+=Vals[1]; -W[8]+=(rotr(Vals[6],17)^rotr(Vals[6],19)^(Vals[6]>>10U)); -W[7]+=W[8]; -W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); -W[7]+=ch(W[4],W[5],W[6]); -W[7]+=K[24]; -W[3]+=W[7]; -W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); -W[7]+=Ma(W[2],W[0],W[1]); - - -W[9]=Vals[2]; -W[9]+=(rotr(Vals[7],17)^rotr(Vals[7],19)^(Vals[7]>>10U)); -W[6]+=W[9]; -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=ch(W[3],W[4],W[5]); -W[6]+=K[25]; -W[2]+=W[6]; -W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); -W[6]+=Ma(W[1],W[7],W[0]); - - -W[10]=Vals[3]; -W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -W[5]+=W[10]; -W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); -W[5]+=ch(W[2],W[3],W[4]); -W[5]+=K[26]; -W[1]+=W[5]; -W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); -W[5]+=Ma(W[0],W[6],W[7]); +W[7]=state7; +W[7]+=Vals[7]; +Vals[7]=0xF377ED68U; +Vals[7]+=W[0]; -W[11]=Vals[4]; -W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -W[4]+=W[11]; -W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); -W[4]+=ch(W[1],W[2],W[3]); -W[4]+=K[27]; -W[0]+=W[4]; -W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); -W[4]+=Ma(W[7],W[5],W[6]); +W[3]=state3; +W[3]+=Vals[3]; +Vals[3]=0xa54ff53aU; +Vals[3]+=Vals[7]; +Vals[7]+=0x08909ae5U; -W[12]=Vals[5]; -W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -W[3]+=W[12]; -W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); -W[3]+=ch(W[0],W[1],W[2]); -W[3]+=K[28]; -W[7]+=W[3]; -W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); -W[3]+=Ma(W[6],W[4],W[5]); +W[6]=state6; +W[6]+=Vals[6]; +Vals[6]=0x90BB1E3CU; +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=(0x9b05688cU^(Vals[3]&0xca0b3af3U)); -W[13]=Vals[6]; -W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -W[2]+=W[13]; -W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); -W[2]+=ch(W[7],W[0],W[1]); -W[2]+=K[29]; -W[6]+=W[2]; -W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); -W[2]+=Ma(W[5],W[3],W[4]); +W[1]=Vals[1]; +W[1]+=state1; +Vals[6]+=W[1]; +W[2]=state2; +W[2]+=Vals[2]; -W[14]=0x00400022U; -W[14]+=Vals[7]; -W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -W[1]+=W[14]; -W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[1]+=ch(W[6],W[7],W[0]); -W[1]+=K[30]; -W[5]+=W[1]; -W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); -W[1]+=Ma(W[4],W[2],W[3]); +Vals[2]=0x3c6ef372U; +Vals[2]+=Vals[6]; +Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma2(0xbb67ae85U,Vals[7],0x6a09e667U); +W[5]=state5; +W[5]+=Vals[5]; -W[15]=0x00000100U; -W[15]+=(rotr(Vals[0],7)^rotr(Vals[0],18)^(Vals[0]>>3U)); -W[15]+=W[8]; -W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -W[0]+=W[15]; -W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[0]+=ch(W[5],W[6],W[7]); -W[0]+=K[31]; -W[4]+=W[0]; -W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); -W[0]+=Ma(W[3],W[1],W[2]); - -Vals[0]+=(rotr(Vals[1],7)^rotr(Vals[1],18)^(Vals[1]>>3U)); -Vals[0]+=W[9]; -Vals[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -W[7]+=Vals[0]; -W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); -W[7]+=ch(W[4],W[5],W[6]); -W[7]+=K[32]; -W[3]+=W[7]; -W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); -W[7]+=Ma(W[2],W[0],W[1]); - -Vals[1]+=(rotr(Vals[2],7)^rotr(Vals[2],18)^(Vals[2]>>3U)); -Vals[1]+=W[10]; -Vals[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -W[6]+=Vals[1]; -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=ch(W[3],W[4],W[5]); -W[6]+=K[33]; -W[2]+=W[6]; -W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); -W[6]+=Ma(W[1],W[7],W[0]); - -Vals[2]+=(rotr(Vals[3],7)^rotr(Vals[3],18)^(Vals[3]>>3U)); -Vals[2]+=W[11]; -Vals[2]+=(rotr(Vals[0],17)^rotr(Vals[0],19)^(Vals[0]>>10U)); -W[5]+=Vals[2]; -W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); -W[5]+=ch(W[2],W[3],W[4]); -W[5]+=K[34]; -W[1]+=W[5]; -W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); -W[5]+=Ma(W[0],W[6],W[7]); - -Vals[3]+=(rotr(Vals[4],7)^rotr(Vals[4],18)^(Vals[4]>>3U)); -Vals[3]+=W[12]; -Vals[3]+=(rotr(Vals[1],17)^rotr(Vals[1],19)^(Vals[1]>>10U)); -W[4]+=Vals[3]; -W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); -W[4]+=ch(W[1],W[2],W[3]); -W[4]+=K[35]; -W[0]+=W[4]; -W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); -W[4]+=Ma(W[7],W[5],W[6]); - -Vals[4]+=(rotr(Vals[5],7)^rotr(Vals[5],18)^(Vals[5]>>3U)); -Vals[4]+=W[13]; -Vals[4]+=(rotr(Vals[2],17)^rotr(Vals[2],19)^(Vals[2]>>10U)); -W[3]+=Vals[4]; -W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); -W[3]+=ch(W[0],W[1],W[2]); -W[3]+=K[36]; -W[7]+=W[3]; -W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); -W[3]+=Ma(W[6],W[4],W[5]); - -Vals[5]+=(rotr(Vals[6],7)^rotr(Vals[6],18)^(Vals[6]>>3U)); -Vals[5]+=W[14]; -Vals[5]+=(rotr(Vals[3],17)^rotr(Vals[3],19)^(Vals[3]>>10U)); -W[2]+=Vals[5]; -W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); -W[2]+=ch(W[7],W[0],W[1]); -W[2]+=K[37]; -W[6]+=W[2]; -W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); -W[2]+=Ma(W[5],W[3],W[4]); - -Vals[6]+=(rotr(Vals[7],7)^rotr(Vals[7],18)^(Vals[7]>>3U)); -Vals[6]+=W[15]; -Vals[6]+=(rotr(Vals[4],17)^rotr(Vals[4],19)^(Vals[4]>>10U)); -W[1]+=Vals[6]; -W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[1]+=ch(W[6],W[7],W[0]); -W[1]+=K[38]; -W[5]+=W[1]; -W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); -W[1]+=Ma(W[4],W[2],W[3]); - -Vals[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); -Vals[7]+=Vals[0]; -Vals[7]+=(rotr(Vals[5],17)^rotr(Vals[5],19)^(Vals[5]>>10U)); -W[0]+=Vals[7]; -W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[0]+=ch(W[5],W[6],W[7]); -W[0]+=K[39]; -W[4]+=W[0]; -W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); -W[0]+=Ma(W[3],W[1],W[2]); +Vals[5]=0x50C6645BU; +Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[5]+=ch(Vals[2],Vals[3],0x510e527fU); +Vals[5]+=W[2]; -W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); -W[8]+=Vals[1]; -W[8]+=(rotr(Vals[6],17)^rotr(Vals[6],19)^(Vals[6]>>10U)); -W[7]+=W[8]; -W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); -W[7]+=ch(W[4],W[5],W[6]); -W[7]+=K[40]; -W[3]+=W[7]; -W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); -W[7]+=Ma(W[2],W[0],W[1]); +Vals[1]=0xbb67ae85U; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma2(0x6a09e667U,Vals[6],Vals[7]); -W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); -W[9]+=Vals[2]; -W[9]+=(rotr(Vals[7],17)^rotr(Vals[7],19)^(Vals[7]>>10U)); -W[6]+=W[9]; -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=ch(W[3],W[4],W[5]); -W[6]+=K[41]; -W[2]+=W[6]; -W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); -W[6]+=Ma(W[1],W[7],W[0]); +W[4]=state4; +W[4]+=Vals[4]; -W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); -W[10]+=Vals[3]; -W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -W[5]+=W[10]; -W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); -W[5]+=ch(W[2],W[3],W[4]); -W[5]+=K[42]; -W[1]+=W[5]; -W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); -W[5]+=Ma(W[0],W[6],W[7]); +Vals[4]=0x3AC42E24U; +Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=W[3]; -W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); -W[11]+=Vals[4]; -W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -W[4]+=W[11]; -W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); -W[4]+=ch(W[1],W[2],W[3]); -W[4]+=K[43]; -W[0]+=W[4]; -W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); -W[4]+=Ma(W[7],W[5],W[6]); +Vals[0]=Vals[4]; +Vals[0]+=0x6a09e667U; -W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); -W[12]+=Vals[5]; -W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -W[3]+=W[12]; -W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); -W[3]+=ch(W[0],W[1],W[2]); -W[3]+=K[44]; -W[7]+=W[3]; -W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); -W[3]+=Ma(W[6],W[4],W[5]); +Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); -W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); -W[13]+=Vals[6]; -W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -W[2]+=W[13]; -W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); -W[2]+=ch(W[7],W[0],W[1]); -W[2]+=K[45]; -W[6]+=W[2]; -W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); -W[2]+=Ma(W[5],W[3],W[4]); +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); +Vals[3]+=K[4]; +Vals[3]+=W[4]; +Vals[7]+=Vals[3]; +Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); -W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); -W[14]+=Vals[7]; -W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -W[1]+=W[14]; -W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[1]+=ch(W[6],W[7],W[0]); -W[1]+=K[46]; -W[5]+=W[1]; -W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); -W[1]+=Ma(W[4],W[2],W[3]); - -W[15]+=(rotr(Vals[0],7)^rotr(Vals[0],18)^(Vals[0]>>3U)); -W[15]+=W[8]; -W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -W[0]+=W[15]; -W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[0]+=ch(W[5],W[6],W[7]); -W[0]+=K[47]; -W[4]+=W[0]; -W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); -W[0]+=Ma(W[3],W[1],W[2]); - -Vals[0]+=(rotr(Vals[1],7)^rotr(Vals[1],18)^(Vals[1]>>3U)); -Vals[0]+=W[9]; -Vals[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -W[7]+=Vals[0]; -W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); -W[7]+=ch(W[4],W[5],W[6]); -W[7]+=K[48]; -W[3]+=W[7]; -W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); -W[7]+=Ma(W[2],W[0],W[1]); - -Vals[1]+=(rotr(Vals[2],7)^rotr(Vals[2],18)^(Vals[2]>>3U)); -Vals[1]+=W[10]; -Vals[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -W[6]+=Vals[1]; -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=ch(W[3],W[4],W[5]); -W[6]+=K[49]; -W[2]+=W[6]; -W[6]+=(rotr(W[7],2)^rotr(W[7],13)^rotr(W[7],22)); -W[6]+=Ma(W[1],W[7],W[0]); - -Vals[2]+=(rotr(Vals[3],7)^rotr(Vals[3],18)^(Vals[3]>>3U)); -Vals[2]+=W[11]; -Vals[2]+=(rotr(Vals[0],17)^rotr(Vals[0],19)^(Vals[0]>>10U)); -W[5]+=Vals[2]; -W[5]+=(rotr(W[2],6)^rotr(W[2],11)^rotr(W[2],25)); -W[5]+=ch(W[2],W[3],W[4]); -W[5]+=K[50]; -W[1]+=W[5]; -W[5]+=(rotr(W[6],2)^rotr(W[6],13)^rotr(W[6],22)); -W[5]+=Ma(W[0],W[6],W[7]); - -Vals[3]+=(rotr(Vals[4],7)^rotr(Vals[4],18)^(Vals[4]>>3U)); -Vals[3]+=W[12]; -Vals[3]+=(rotr(Vals[1],17)^rotr(Vals[1],19)^(Vals[1]>>10U)); -W[4]+=Vals[3]; -W[4]+=(rotr(W[1],6)^rotr(W[1],11)^rotr(W[1],25)); -W[4]+=ch(W[1],W[2],W[3]); -W[4]+=K[51]; -W[0]+=W[4]; -W[4]+=(rotr(W[5],2)^rotr(W[5],13)^rotr(W[5],22)); -W[4]+=Ma(W[7],W[5],W[6]); - -Vals[4]+=(rotr(Vals[5],7)^rotr(Vals[5],18)^(Vals[5]>>3U)); -Vals[4]+=W[13]; -Vals[4]+=(rotr(Vals[2],17)^rotr(Vals[2],19)^(Vals[2]>>10U)); -W[3]+=Vals[4]; -W[3]+=(rotr(W[0],6)^rotr(W[0],11)^rotr(W[0],25)); -W[3]+=ch(W[0],W[1],W[2]); -W[3]+=K[52]; -W[7]+=W[3]; -W[3]+=(rotr(W[4],2)^rotr(W[4],13)^rotr(W[4],22)); -W[3]+=Ma(W[6],W[4],W[5]); - -Vals[5]+=(rotr(Vals[6],7)^rotr(Vals[6],18)^(Vals[6]>>3U)); -Vals[5]+=W[14]; -Vals[5]+=(rotr(Vals[3],17)^rotr(Vals[3],19)^(Vals[3]>>10U)); -W[2]+=Vals[5]; -W[2]+=(rotr(W[7],6)^rotr(W[7],11)^rotr(W[7],25)); -W[2]+=ch(W[7],W[0],W[1]); -W[2]+=K[53]; -W[6]+=W[2]; -W[2]+=(rotr(W[3],2)^rotr(W[3],13)^rotr(W[3],22)); -W[2]+=Ma(W[5],W[3],W[4]); - -Vals[6]+=(rotr(Vals[7],7)^rotr(Vals[7],18)^(Vals[7]>>3U)); -Vals[6]+=W[15]; -Vals[6]+=(rotr(Vals[4],17)^rotr(Vals[4],19)^(Vals[4]>>10U)); -W[1]+=Vals[6]; -W[1]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[1]+=ch(W[6],W[7],W[0]); -W[1]+=K[54]; -W[5]+=W[1]; -W[1]+=(rotr(W[2],2)^rotr(W[2],13)^rotr(W[2],22)); -W[1]+=Ma(W[4],W[2],W[3]); - -Vals[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); -Vals[7]+=Vals[0]; -Vals[7]+=(rotr(Vals[5],17)^rotr(Vals[5],19)^(Vals[5]>>10U)); -W[0]+=Vals[7]; -W[0]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[0]+=ch(W[5],W[6],W[7]); -W[0]+=K[55]; -W[4]+=W[0]; -W[0]+=(rotr(W[1],2)^rotr(W[1],13)^rotr(W[1],22)); -W[0]+=Ma(W[3],W[1],W[2]); +Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); +Vals[2]+=K[5]; +Vals[2]+=W[5]; +Vals[6]+=Vals[2]; +Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); -W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); -W[8]+=Vals[1]; -W[8]+=(rotr(Vals[6],17)^rotr(Vals[6],19)^(Vals[6]>>10U)); -W[7]+=W[8]; -W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); -W[7]+=ch(W[4],W[5],W[6]); -W[7]+=K[56]; -W[3]+=W[7]; +Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[1]+=K[6]; +Vals[1]+=W[6]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); -W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); -W[9]+=Vals[2]; -W[9]+=(rotr(Vals[7],17)^rotr(Vals[7],19)^(Vals[7]>>10U)); -W[6]+=W[9]; -W[6]+=(rotr(W[3],6)^rotr(W[3],11)^rotr(W[3],25)); -W[6]+=ch(W[3],W[4],W[5]); -W[6]+=K[57]; -W[6]+=W[2]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); +Vals[0]+=K[7]; +Vals[0]+=W[7]; +Vals[4]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); -W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); -W[10]+=Vals[3]; +Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); +Vals[7]+=0x5807AA98U; +Vals[3]+=Vals[7]; +Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); +Vals[6]+=K[9]; +Vals[2]+=Vals[6]; +Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + +Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); +Vals[5]+=K[10]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + +Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=K[11]; +Vals[0]+=Vals[4]; +Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); +Vals[3]+=K[12]; +Vals[7]+=Vals[3]; +Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + +Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); +Vals[2]+=K[13]; +Vals[6]+=Vals[2]; +Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + +Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[1]+=K[14]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); +Vals[0]+=0xC19BF274U; +Vals[4]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + +W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); +Vals[7]+=W[0]; +Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); +Vals[7]+=K[16]; +Vals[3]+=Vals[7]; +Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + +W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); +W[1]+=0x00a00000U; +Vals[6]+=W[1]; +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); +Vals[6]+=K[17]; +Vals[2]+=Vals[6]; +Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + +W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); +W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); +Vals[5]+=W[2]; +Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); +Vals[5]+=K[18]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + +W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); +W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); +Vals[4]+=W[3]; +Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=K[19]; +Vals[0]+=Vals[4]; +Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + +W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); +W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +Vals[3]+=W[4]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); +Vals[3]+=K[20]; +Vals[7]+=Vals[3]; +Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + +W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); +W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); +Vals[2]+=W[5]; +Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); +Vals[2]+=K[21]; +Vals[6]+=Vals[2]; +Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + +W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); +W[6]+=0x00000100U; +W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +Vals[1]+=W[6]; +Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[1]+=K[22]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + +W[7]+=0x11002000U; +W[7]+=W[0]; +W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +Vals[0]+=W[7]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); +Vals[0]+=K[23]; +Vals[4]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + +W[8]=0x80000000U; +W[8]+=W[1]; +W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); +Vals[7]+=W[8]; +Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); +Vals[7]+=K[24]; +Vals[3]+=Vals[7]; +Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + +W[9]=W[2]; +W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); +Vals[6]+=W[9]; +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); +Vals[6]+=K[25]; +Vals[2]+=Vals[6]; +Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + +W[10]=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -W[5]+=W[10]; -W[5]+=(rotr(W[6],6)^rotr(W[6],11)^rotr(W[6],25)); -W[5]+=ch(W[6],W[3],W[4]); -W[5]+=K[58]; -W[5]+=W[1]; -W[4]+=(rotr(W[5],6)^rotr(W[5],11)^rotr(W[5],25)); -W[4]+=ch(W[5],W[6],W[3]); -W[4]+=W[11]; -W[4]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); -W[4]+=Vals[4]; -W[4]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -W[4]+=K[59]; -W[4]+=W[0]; +Vals[5]+=W[10]; +Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); +Vals[5]+=K[26]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + +W[11]=W[4]; +W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +Vals[4]+=W[11]; +Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=K[27]; +Vals[0]+=Vals[4]; +Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + +W[12]=W[5]; +W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); +Vals[3]+=W[12]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); +Vals[3]+=K[28]; +Vals[7]+=Vals[3]; +Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + +W[13]=W[6]; +W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); +Vals[2]+=W[13]; +Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); +Vals[2]+=K[29]; +Vals[6]+=Vals[2]; +Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + +W[14]=0x00400022U; +W[14]+=W[7]; +W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); +Vals[1]+=W[14]; +Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[1]+=K[30]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + +W[15]=0x00000100U; +W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); +W[15]+=W[8]; +W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); +Vals[0]+=W[15]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); +Vals[0]+=K[31]; +Vals[4]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + +W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); +W[0]+=W[9]; +W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); +Vals[7]+=W[0]; +Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); +Vals[7]+=K[32]; +Vals[3]+=Vals[7]; +Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + +W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); +W[1]+=W[10]; +W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); +Vals[6]+=W[1]; +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); +Vals[6]+=K[33]; +Vals[2]+=Vals[6]; +Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + +W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); +W[2]+=W[11]; +W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); +Vals[5]+=W[2]; +Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); +Vals[5]+=K[34]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + +W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); +W[3]+=W[12]; +W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); +Vals[4]+=W[3]; +Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=K[35]; +Vals[0]+=Vals[4]; +Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + +W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); +W[4]+=W[13]; +W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +Vals[3]+=W[4]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); +Vals[3]+=K[36]; +Vals[7]+=Vals[3]; +Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + +W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); +W[5]+=W[14]; +W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); +Vals[2]+=W[5]; +Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); +Vals[2]+=K[37]; +Vals[6]+=Vals[2]; +Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + +W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); +W[6]+=W[15]; +W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +Vals[1]+=W[6]; +Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[1]+=K[38]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + +W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); +W[7]+=W[0]; +W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +Vals[0]+=W[7]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); +Vals[0]+=K[39]; +Vals[4]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + +W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); +W[8]+=W[1]; +W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); +Vals[7]+=W[8]; +Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); +Vals[7]+=K[40]; +Vals[3]+=Vals[7]; +Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + +W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); +W[9]+=W[2]; +W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); +Vals[6]+=W[9]; +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); +Vals[6]+=K[41]; +Vals[2]+=Vals[6]; +Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + +W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); +W[10]+=W[3]; +W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); +Vals[5]+=W[10]; +Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); +Vals[5]+=K[42]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + +W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); +W[11]+=W[4]; +W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +Vals[4]+=W[11]; +Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=K[43]; +Vals[0]+=Vals[4]; +Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + +W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); +W[12]+=W[5]; +W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); +Vals[3]+=W[12]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); +Vals[3]+=K[44]; +Vals[7]+=Vals[3]; +Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + +W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); +W[13]+=W[6]; +W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); +Vals[2]+=W[13]; +Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); +Vals[2]+=K[45]; +Vals[6]+=Vals[2]; +Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + +W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); +W[14]+=W[7]; +W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); +Vals[1]+=W[14]; +Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[1]+=K[46]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + +W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); +W[15]+=W[8]; +W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); +Vals[0]+=W[15]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); +Vals[0]+=K[47]; +Vals[4]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + +W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); +W[0]+=W[9]; +W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); +Vals[7]+=W[0]; +Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); +Vals[7]+=K[48]; +Vals[3]+=Vals[7]; +Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + +W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); +W[1]+=W[10]; +W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); +Vals[6]+=W[1]; +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); +Vals[6]+=K[49]; +Vals[2]+=Vals[6]; +Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); + +W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); +W[2]+=W[11]; +W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); +Vals[5]+=W[2]; +Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); +Vals[5]+=K[50]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); + +W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); +W[3]+=W[12]; +W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); +Vals[4]+=W[3]; +Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); +Vals[4]+=K[51]; +Vals[0]+=Vals[4]; +Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); + +W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); +W[4]+=W[13]; +W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +Vals[3]+=W[4]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); +Vals[3]+=K[52]; +Vals[7]+=Vals[3]; +Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); + +W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); +W[5]+=W[14]; +W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); +Vals[2]+=W[5]; +Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); +Vals[2]+=K[53]; +Vals[6]+=Vals[2]; +Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); + +W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); +W[6]+=W[15]; +W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +Vals[1]+=W[6]; +Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[1]+=K[54]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); + +W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); +W[7]+=W[0]; +W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +Vals[0]+=W[7]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); +Vals[0]+=K[55]; +Vals[4]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); + +W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); +W[8]+=W[1]; +W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); +Vals[7]+=W[8]; +Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); +Vals[7]+=K[56]; +Vals[3]+=Vals[7]; + +W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); +W[9]+=W[2]; +W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); +Vals[6]+=W[9]; +Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); +Vals[6]+=K[57]; +Vals[6]+=Vals[2]; + +W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); +W[10]+=W[3]; +W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); +Vals[5]+=W[10]; +Vals[5]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[5]+=ch(Vals[6],Vals[3],Vals[4]); +Vals[5]+=K[58]; +Vals[5]+=Vals[1]; +Vals[4]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[4]+=ch(Vals[5],Vals[6],Vals[3]); +Vals[4]+=W[11]; +Vals[4]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); +Vals[4]+=W[4]; +Vals[4]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +Vals[4]+=K[59]; +Vals[4]+=Vals[0]; #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS2) || defined(VECTORS4) - W[7]+=Ma(W[2],W[0],W[1]); - W[7]+=(rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22)); - W[7]+=W[12]; - W[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); - W[7]+=Vals[5]; - W[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); - W[7]+=W[3]; - W[7]+=(rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25)); - W[7]+=ch(W[4],W[5],W[6]); - - if (any(W[7] == 0x136032edU)) { - if (W[7].x == 0x136032edU) + Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); + Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); + Vals[7]+=W[12]; + Vals[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); + Vals[7]+=W[5]; + Vals[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); + Vals[7]+=Vals[3]; + Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); + Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); + + if (any(Vals[7] == 0x136032edU)) { + if (Vals[7].x == 0x136032edU) output[FOUND] = output[NFLAG & nonce.x] = nonce.x; - if (W[7].y == 0x136032edU) + if (Vals[7].y == 0x136032edU) output[FOUND] = output[NFLAG & nonce.y] = nonce.y; #if defined(VECTORS4) - if (W[7].z == 0x136032edU) + if (Vals[7].z == 0x136032edU) output[FOUND] = output[NFLAG & nonce.z] = nonce.z; - if (W[7].w == 0x136032edU) + if (Vals[7].w == 0x136032edU) output[FOUND] = output[NFLAG & nonce.w] = nonce.w; #endif } #else - if ((W[7]+ - Ma(W[2],W[0],W[1])+ - (rotr(W[0],2)^rotr(W[0],13)^rotr(W[0],22))+ + if ((Vals[7]+ + Ma(Vals[2],Vals[0],Vals[1])+ + (rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22))+ W[12]+ (rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U))+ - Vals[5]+ + W[5]+ (rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U))+ - W[3]+ - (rotr(W[4],6)^rotr(W[4],11)^rotr(W[4],25))+ - ch(W[4],W[5],W[6])) == 0x136032edU) + Vals[3]+ + (rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25))+ + ch(Vals[4],Vals[5],Vals[6])) == 0x136032edU) output[FOUND] = output[NFLAG & nonce] = nonce; #endif } From 0a4a2d9d65596e8ceec918acc2732cc7b399c34d Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 14:39:40 +1100 Subject: [PATCH 090/117] Damping small changes in hashrate so dramatically has the tendency to always make the hashrate underread so go back to gentle damping instead. --- cgminer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cgminer.c b/cgminer.c index dcb506e8..cfb02161 100644 --- a/cgminer.c +++ b/cgminer.c @@ -1141,10 +1141,10 @@ void decay_time(double *f, double fadd) ratio = 1 / ratio; } - if (ratio > 0.95) - *f = (fadd * 0.05 + *f) / 1.05; + if (ratio > 0.63) + *f = (fadd * 0.58 + *f) / 1.58; else - *f = (fadd + *f * 0.58) / 1.58; // 0.63 + *f = (fadd + *f * 0.58) / 1.58; } static int requests_staged(void) From ded779688afec873cf0a721ccc7e7b15cecb4f1e Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 15:28:31 +1100 Subject: [PATCH 091/117] Update NEWS. --- NEWS | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index d63326aa..62232381 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,10 @@ -Version 2.3.2 - March 30, 2012 +Version 2.3.2 - March 31, 2012 +- Damping small changes in hashrate so dramatically has the tendency to always +make the hashrate underread so go back to gentle damping instead. +- Revert the crossover of variables from Vals to W in poclbm kernel now that +Vals are the first declared variables so they're used more frequently. +- Vals variables appearing first in the array in poclbm is faster. - Change the preferred vector width to 1 for Tahiti only, not all poclbm kernels. - Use a time constant 0.63 for when large changes in hashrate are detected to From fd81bdef68191b55a8f2506fa6018de71bbefaa7 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 15:29:13 +1100 Subject: [PATCH 092/117] Bump version number to 2.3.2 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index bdef6873..88f07afb 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_maj], [2]) m4_define([v_min], [3]) -m4_define([v_mic], [1]) +m4_define([v_mic], [2]) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_ver], [v_maj.v_min.v_mic]) m4_define([lt_rev], m4_eval(v_maj + v_min)) From ef76ec8a77d473382303b39de1247b75a4c4ae71 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 31 Mar 2012 15:33:02 +1100 Subject: [PATCH 093/117] Add windows build docs to extra dist files. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index d319329c..02ee6f06 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,7 @@ endif EXTRA_DIST = example.conf m4/gnulib-cache.m4 linux-usb-cgminer \ ADL_SDK/readme.txt api-example.php miner.php \ - API.class API.java api-example.c + API.class API.java api-example.c windows-build.txt SUBDIRS = lib compat ccan From 0a39a22c2d5d8cb659f21ee434aa8de51b48ed90 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 00:14:59 +1000 Subject: [PATCH 094/117] Microoptimise poclbm kernel by ordering Val variables according to usage frequency. --- poclbm120327.cl | 1706 +++++++++++++++++++++++------------------------ 1 file changed, 853 insertions(+), 853 deletions(-) diff --git a/poclbm120327.cl b/poclbm120327.cl index 60b385af..b9244f2f 100644 --- a/poclbm120327.cl +++ b/poclbm120327.cl @@ -91,1262 +91,1262 @@ void search(const uint state0, const uint state1, const uint state2, const uint const u nonce = base + (uint)(get_global_id(0)); #endif -Vals[0]=Preval0; -Vals[0]+=nonce; +Vals[5]=Preval0; +Vals[5]+=nonce; -Vals[3]=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],b1,c1); -Vals[3]+=D1A; +Vals[0]=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],b1,c1); +Vals[0]+=D1A; -Vals[7]=Vals[3]; -Vals[7]+=h1; +Vals[2]=Vals[0]; +Vals[2]+=h1; -Vals[4]=PreVal4addT1; -Vals[4]+=nonce; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]=PreVal4addT1; +Vals[1]+=nonce; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[2]=C1addK5; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],b1); +Vals[6]=C1addK5; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],b1); -Vals[6]=Vals[2]; -Vals[6]+=g1; -Vals[3]+=Ma2(g1,Vals[4],f1); -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma2(f1,Vals[3],Vals[4]); +Vals[3]=Vals[6]; +Vals[3]+=g1; +Vals[0]+=Ma2(g1,Vals[1],f1); +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma2(f1,Vals[0],Vals[1]); -Vals[1]=B1addK6; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); +Vals[7]=B1addK6; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); -Vals[5]=Vals[1]; -Vals[5]+=f1; +Vals[4]=Vals[7]; +Vals[4]+=f1; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[7]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[8]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[9]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[10]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[7]; Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[11]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[8]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[12]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[13]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[14]; +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[9]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); + +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[10]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); + +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[11]; Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=0xC19BF3F4U; -Vals[4]+=Vals[0]; +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[12]; +Vals[2]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=W16addK16; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=W17addK17; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); + +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[13]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); + +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[14]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); + +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=0xC19BF3F4U; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); + +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=W16addK16; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); + +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=W17addK17; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]=(rotr(nonce,7)^rotr(nonce,18)^(nonce>>3U)); W[2]+=fw2; -Vals[5]+=W[2]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[18]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=W[2]; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[18]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]=nonce; W[3]+=fw3; -Vals[4]+=W[3]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[19]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=W[3]; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[19]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); W[4]+=0x80000000U; -Vals[3]+=W[4]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[20]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=W[4]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[20]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=W[5]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[21]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=W[5]; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[21]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); W[6]+=0x00000280U; -Vals[1]+=W[6]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[22]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=W[6]; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[22]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); W[7]+=fw0; -Vals[0]+=W[7]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[23]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=W[7]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[23]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); W[8]+=fw1; -Vals[7]+=W[8]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[24]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=W[8]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[24]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[9]=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=W[9]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[25]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=W[9]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[25]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[10]=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=W[10]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[26]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=W[10]; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[26]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[11]=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=W[11]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[27]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=W[11]; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[27]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[12]=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[3]+=W[12]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[28]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=W[12]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[28]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[13]=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -Vals[2]+=W[13]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[29]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=W[13]; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[29]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[14]=0x00a00055U; W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -Vals[1]+=W[14]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[30]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=W[14]; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[30]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[15]=fw15; W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -Vals[0]+=W[15]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[31]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=W[15]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[31]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[0]=fw01r; W[0]+=W[9]; W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -Vals[7]+=W[0]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[32]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=W[0]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[32]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[1]=fw1; W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -Vals[6]+=W[1]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[33]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=W[1]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[33]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[34]; -Vals[5]+=W[2]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[34]; +Vals[4]+=W[2]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[35]; -Vals[4]+=W[3]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[35]; +Vals[1]+=W[3]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[36]; -Vals[3]+=W[4]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[36]; +Vals[0]+=W[4]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[37]; -Vals[2]+=W[5]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[37]; +Vals[6]+=W[5]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[38]; -Vals[1]+=W[6]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[38]; +Vals[7]+=W[6]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[39]; -Vals[0]+=W[7]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[39]; +Vals[5]+=W[7]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[40]; -Vals[7]+=W[8]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[40]; +Vals[2]+=W[8]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[41]; -Vals[6]+=W[9]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[41]; +Vals[3]+=W[9]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[42]; -Vals[5]+=W[10]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[42]; +Vals[4]+=W[10]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[43]; -Vals[4]+=W[11]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[43]; +Vals[1]+=W[11]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[44]; -Vals[3]+=W[12]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[44]; +Vals[0]+=W[12]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); W[13]+=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[45]; -Vals[2]+=W[13]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[45]; +Vals[6]+=W[13]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[46]; -Vals[1]+=W[14]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[46]; +Vals[7]+=W[14]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[47]; -Vals[0]+=W[15]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[47]; +Vals[5]+=W[15]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); W[0]+=W[9]; W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[48]; -Vals[7]+=W[0]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[48]; +Vals[2]+=W[0]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[49]; -Vals[6]+=W[1]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[49]; +Vals[3]+=W[1]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[50]; -Vals[5]+=W[2]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[50]; +Vals[4]+=W[2]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[51]; -Vals[4]+=W[3]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[51]; +Vals[1]+=W[3]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[52]; -Vals[3]+=W[4]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[52]; +Vals[0]+=W[4]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[53]; -Vals[2]+=W[5]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[53]; +Vals[6]+=W[5]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[54]; -Vals[1]+=W[6]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[54]; +Vals[7]+=W[6]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[55]; -Vals[0]+=W[7]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[55]; +Vals[5]+=W[7]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[56]; -Vals[7]+=W[8]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[56]; +Vals[2]+=W[8]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[57]; -Vals[6]+=W[9]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[57]; +Vals[3]+=W[9]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[58]; -Vals[5]+=W[10]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[58]; +Vals[4]+=W[10]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[59]; -Vals[4]+=W[11]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[59]; +Vals[1]+=W[11]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[60]; -Vals[3]+=W[12]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[60]; +Vals[0]+=W[12]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); W[13]+=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[61]; -Vals[2]+=W[13]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[61]; +Vals[6]+=W[13]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[62]; -Vals[1]+=W[14]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[62]; +Vals[7]+=W[14]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[63]; -Vals[0]+=W[15]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[63]; +Vals[5]+=W[15]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); -W[0]=Vals[0]; +W[0]=Vals[5]; W[0]+=state0; W[7]=state7; -W[7]+=Vals[7]; +W[7]+=Vals[2]; -Vals[7]=0xF377ED68U; -Vals[7]+=W[0]; +Vals[2]=0xF377ED68U; +Vals[2]+=W[0]; W[3]=state3; -W[3]+=Vals[3]; +W[3]+=Vals[0]; -Vals[3]=0xa54ff53aU; -Vals[3]+=Vals[7]; -Vals[7]+=0x08909ae5U; +Vals[0]=0xa54ff53aU; +Vals[0]+=Vals[2]; +Vals[2]+=0x08909ae5U; W[6]=state6; -W[6]+=Vals[6]; +W[6]+=Vals[3]; -Vals[6]=0x90BB1E3CU; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=(0x9b05688cU^(Vals[3]&0xca0b3af3U)); +Vals[3]=0x90BB1E3CU; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=(0x9b05688cU^(Vals[0]&0xca0b3af3U)); -W[1]=Vals[1]; +W[1]=Vals[7]; W[1]+=state1; -Vals[6]+=W[1]; +Vals[3]+=W[1]; W[2]=state2; -W[2]+=Vals[2]; +W[2]+=Vals[6]; -Vals[2]=0x3c6ef372U; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma2(0xbb67ae85U,Vals[7],0x6a09e667U); +Vals[6]=0x3c6ef372U; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma2(0xbb67ae85U,Vals[2],0x6a09e667U); W[5]=state5; -W[5]+=Vals[5]; +W[5]+=Vals[4]; -Vals[5]=0x50C6645BU; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],0x510e527fU); -Vals[5]+=W[2]; +Vals[4]=0x50C6645BU; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],0x510e527fU); +Vals[4]+=W[2]; -Vals[1]=0xbb67ae85U; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma2(0x6a09e667U,Vals[6],Vals[7]); +Vals[7]=0xbb67ae85U; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma2(0x6a09e667U,Vals[3],Vals[2]); W[4]=state4; -W[4]+=Vals[4]; - -Vals[4]=0x3AC42E24U; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=W[3]; +W[4]+=Vals[1]; -Vals[0]=Vals[4]; -Vals[0]+=0x6a09e667U; +Vals[1]=0x3AC42E24U; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=W[3]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[5]=Vals[1]; +Vals[5]+=0x6a09e667U; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[4]; -Vals[3]+=W[4]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[5]; -Vals[2]+=W[5]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[6]; -Vals[1]+=W[6]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[7]; -Vals[0]+=W[7]; -Vals[4]+=Vals[0]; +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[4]; +Vals[0]+=W[4]; +Vals[2]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); - -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=0x5807AA98U; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[9]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); - -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[10]; +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); + +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[5]; +Vals[6]+=W[5]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); + +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[6]; +Vals[7]+=W[6]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); + +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[7]; +Vals[5]+=W[7]; Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[11]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=0x5807AA98U; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[12]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); - -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[13]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); - -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[14]; +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[9]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); + +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[10]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); + +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[11]; Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=0xC19BF274U; -Vals[4]+=Vals[0]; +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[12]; +Vals[2]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); + +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[13]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); + +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[14]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); + +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=0xC19BF274U; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); -Vals[7]+=W[0]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[16]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=W[0]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[16]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=0x00a00000U; -Vals[6]+=W[1]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[17]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=W[1]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[17]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=W[2]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[18]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=W[2]; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[18]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=W[3]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[19]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=W[3]; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[19]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=W[4]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[20]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=W[4]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[20]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=W[5]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[21]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=W[5]; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[21]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=0x00000100U; W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=W[6]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[22]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=W[6]; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[22]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]+=0x11002000U; W[7]+=W[0]; W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=W[7]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[23]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=W[7]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[23]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]=0x80000000U; W[8]+=W[1]; W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=W[8]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[24]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=W[8]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[24]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[9]=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=W[9]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[25]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=W[9]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[25]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[10]=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=W[10]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[26]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=W[10]; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[26]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[11]=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=W[11]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[27]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=W[11]; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[27]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[12]=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[3]+=W[12]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[28]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=W[12]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[28]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[13]=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -Vals[2]+=W[13]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[29]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=W[13]; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[29]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[14]=0x00400022U; W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -Vals[1]+=W[14]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[30]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=W[14]; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[30]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[15]=0x00000100U; W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -Vals[0]+=W[15]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[31]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=W[15]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[31]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); W[0]+=W[9]; W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -Vals[7]+=W[0]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[32]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=W[0]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[32]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -Vals[6]+=W[1]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[33]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=W[1]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[33]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=W[2]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[34]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=W[2]; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[34]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=W[3]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[35]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=W[3]; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[35]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=W[4]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[36]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=W[4]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[36]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=W[5]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[37]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=W[5]; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[37]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=W[6]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[38]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=W[6]; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[38]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=W[7]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[39]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=W[7]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[39]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=W[8]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[40]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=W[8]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[40]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=W[9]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[41]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=W[9]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[41]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=W[10]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[42]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=W[10]; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[42]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=W[11]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[43]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=W[11]; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[43]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); -Vals[3]+=W[12]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[44]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=W[12]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[44]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); W[13]+=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); -Vals[2]+=W[13]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[45]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=W[13]; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[45]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); -Vals[1]+=W[14]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[46]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=W[14]; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[46]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); -Vals[0]+=W[15]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[47]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=W[15]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[47]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); W[0]+=W[9]; W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); -Vals[7]+=W[0]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[48]; -Vals[3]+=Vals[7]; -Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); -Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); +Vals[2]+=W[0]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[48]; +Vals[0]+=Vals[2]; +Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); +Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); -Vals[6]+=W[1]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[49]; -Vals[2]+=Vals[6]; -Vals[6]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); -Vals[6]+=Ma(Vals[1],Vals[7],Vals[0]); +Vals[3]+=W[1]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[49]; +Vals[6]+=Vals[3]; +Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); +Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); -Vals[5]+=W[2]; -Vals[5]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); -Vals[5]+=ch(Vals[2],Vals[3],Vals[4]); -Vals[5]+=K[50]; -Vals[1]+=Vals[5]; -Vals[5]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); -Vals[5]+=Ma(Vals[0],Vals[6],Vals[7]); +Vals[4]+=W[2]; +Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); +Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); +Vals[4]+=K[50]; +Vals[7]+=Vals[4]; +Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); +Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); -Vals[4]+=W[3]; -Vals[4]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); -Vals[4]+=ch(Vals[1],Vals[2],Vals[3]); -Vals[4]+=K[51]; -Vals[0]+=Vals[4]; -Vals[4]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); -Vals[4]+=Ma(Vals[7],Vals[5],Vals[6]); +Vals[1]+=W[3]; +Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); +Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); +Vals[1]+=K[51]; +Vals[5]+=Vals[1]; +Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); +Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); -Vals[3]+=W[4]; -Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); -Vals[3]+=ch(Vals[0],Vals[1],Vals[2]); -Vals[3]+=K[52]; -Vals[7]+=Vals[3]; -Vals[3]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); -Vals[3]+=Ma(Vals[6],Vals[4],Vals[5]); +Vals[0]+=W[4]; +Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); +Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); +Vals[0]+=K[52]; +Vals[2]+=Vals[0]; +Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); +Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); -Vals[2]+=W[5]; -Vals[2]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); -Vals[2]+=ch(Vals[7],Vals[0],Vals[1]); -Vals[2]+=K[53]; -Vals[6]+=Vals[2]; -Vals[2]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); -Vals[2]+=Ma(Vals[5],Vals[3],Vals[4]); +Vals[6]+=W[5]; +Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); +Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); +Vals[6]+=K[53]; +Vals[3]+=Vals[6]; +Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); +Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); -Vals[1]+=W[6]; -Vals[1]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[1]+=ch(Vals[6],Vals[7],Vals[0]); -Vals[1]+=K[54]; -Vals[5]+=Vals[1]; -Vals[1]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); -Vals[1]+=Ma(Vals[4],Vals[2],Vals[3]); +Vals[7]+=W[6]; +Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); +Vals[7]+=K[54]; +Vals[4]+=Vals[7]; +Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); +Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); -Vals[0]+=W[7]; -Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[0]+=ch(Vals[5],Vals[6],Vals[7]); -Vals[0]+=K[55]; -Vals[4]+=Vals[0]; -Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); -Vals[0]+=Ma(Vals[3],Vals[1],Vals[2]); +Vals[5]+=W[7]; +Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); +Vals[5]+=K[55]; +Vals[1]+=Vals[5]; +Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); +Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); -Vals[7]+=W[8]; -Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); -Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); -Vals[7]+=K[56]; -Vals[3]+=Vals[7]; +Vals[2]+=W[8]; +Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); +Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); +Vals[2]+=K[56]; +Vals[0]+=Vals[2]; W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); -Vals[6]+=W[9]; -Vals[6]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); -Vals[6]+=ch(Vals[3],Vals[4],Vals[5]); -Vals[6]+=K[57]; -Vals[6]+=Vals[2]; +Vals[3]+=W[9]; +Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); +Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); +Vals[3]+=K[57]; +Vals[3]+=Vals[6]; W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); -Vals[5]+=W[10]; -Vals[5]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); -Vals[5]+=ch(Vals[6],Vals[3],Vals[4]); -Vals[5]+=K[58]; -Vals[5]+=Vals[1]; -Vals[4]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); -Vals[4]+=ch(Vals[5],Vals[6],Vals[3]); -Vals[4]+=W[11]; -Vals[4]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); -Vals[4]+=W[4]; -Vals[4]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); -Vals[4]+=K[59]; -Vals[4]+=Vals[0]; +Vals[4]+=W[10]; +Vals[4]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); +Vals[4]+=ch(Vals[3],Vals[0],Vals[1]); +Vals[4]+=K[58]; +Vals[4]+=Vals[7]; +Vals[1]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); +Vals[1]+=ch(Vals[4],Vals[3],Vals[0]); +Vals[1]+=W[11]; +Vals[1]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); +Vals[1]+=W[4]; +Vals[1]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +Vals[1]+=K[59]; +Vals[1]+=Vals[5]; #define FOUND (0x80) #define NFLAG (0x7F) #if defined(VECTORS2) || defined(VECTORS4) - Vals[7]+=Ma(Vals[2],Vals[0],Vals[1]); - Vals[7]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); - Vals[7]+=W[12]; - Vals[7]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); - Vals[7]+=W[5]; - Vals[7]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); - Vals[7]+=Vals[3]; - Vals[7]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); - Vals[7]+=ch(Vals[4],Vals[5],Vals[6]); - - if (any(Vals[7] == 0x136032edU)) { - if (Vals[7].x == 0x136032edU) + Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); + Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); + Vals[2]+=W[12]; + Vals[2]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); + Vals[2]+=W[5]; + Vals[2]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); + Vals[2]+=Vals[0]; + Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); + Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); + + if (any(Vals[2] == 0x136032edU)) { + if (Vals[2].x == 0x136032edU) output[FOUND] = output[NFLAG & nonce.x] = nonce.x; - if (Vals[7].y == 0x136032edU) + if (Vals[2].y == 0x136032edU) output[FOUND] = output[NFLAG & nonce.y] = nonce.y; #if defined(VECTORS4) - if (Vals[7].z == 0x136032edU) + if (Vals[2].z == 0x136032edU) output[FOUND] = output[NFLAG & nonce.z] = nonce.z; - if (Vals[7].w == 0x136032edU) + if (Vals[2].w == 0x136032edU) output[FOUND] = output[NFLAG & nonce.w] = nonce.w; #endif } #else - if ((Vals[7]+ - Ma(Vals[2],Vals[0],Vals[1])+ - (rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22))+ + if ((Vals[2]+ + Ma(Vals[6],Vals[5],Vals[7])+ + (rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22))+ W[12]+ (rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U))+ W[5]+ (rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U))+ - Vals[3]+ - (rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25))+ - ch(Vals[4],Vals[5],Vals[6])) == 0x136032edU) + Vals[0]+ + (rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25))+ + ch(Vals[1],Vals[4],Vals[3])) == 0x136032edU) output[FOUND] = output[NFLAG & nonce] = nonce; #endif } From 1152b4b4e0c0e6525e01835dd96a22c30be7e96b Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 00:18:00 +1000 Subject: [PATCH 095/117] Re-initialising ADL simply made the driver fail since it is corruption over time within the windows driver that's responsible. Revert "Attempt to re-initialise ADL should a device that previously reported fanspeed stops reporting it." This reverts commit d4c513030f6d6da4cb54c0d1499d332a3987c376. --- adl.c | 14 ++------------ adl.h | 2 ++ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/adl.c b/adl.c index 04e48684..13dd06bc 100644 --- a/adl.c +++ b/adl.c @@ -639,8 +639,6 @@ static inline int __gpu_fanspeed(struct gpu_adl *ga) return ga->lpFanSpeedValue.iFanSpeed; } -static void reinit_adl(void); - int gpu_fanspeed(int gpu) { struct gpu_adl *ga; @@ -669,8 +667,6 @@ static int __gpu_fanpercent(struct gpu_adl *ga) return ga->lpFanSpeedValue.iFanSpeed; } - - int gpu_fanpercent(int gpu) { struct gpu_adl *ga; @@ -683,11 +679,6 @@ int gpu_fanpercent(int gpu) lock_adl(); ret = __gpu_fanpercent(ga); unlock_adl(); - if (unlikely(ga->has_fanspeed && ret == -1)) { - applog(LOG_WARNING, "GPU %d stopped reporting fanspeed", gpu); - applog(LOG_WARNING, "Will attempt to re-initialise ADL"); - reinit_adl(); - } return ret; } @@ -1368,7 +1359,7 @@ void clear_adl(int nDevs) free_adl(); } -static void reinit_adl(void) +void reinit_adl(void) { bool ret; lock_adl(); @@ -1377,8 +1368,7 @@ static void reinit_adl(void) if (!ret) { adl_active = false; applog(LOG_WARNING, "Attempt to re-initialise ADL has failed, disabling"); - } else - applog(LOG_WARNING, "ADL re-initialisation complete"); + } unlock_adl(); } #endif /* HAVE_ADL */ diff --git a/adl.h b/adl.h index f48c4206..363741c0 100644 --- a/adl.h +++ b/adl.h @@ -19,10 +19,12 @@ bool gpu_stats(int gpu, float *temp, int *engineclock, int *memclock, float *vdd void change_gpusettings(int gpu); void gpu_autotune(int gpu, enum dev_enable *denable); void clear_adl(int nDevs); +void reinit_adl(void); #else /* HAVE_ADL */ #define adl_active (0) static inline void init_adl(int nDevs) {} static inline void change_gpusettings(int gpu) { } static inline void clear_adl(int nDevs) {} +static inline void reinit_adl(void) {} #endif #endif From dceaa71a7b3bbdda72f59cdfa8deae54320b1b1c Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 00:56:31 +1000 Subject: [PATCH 096/117] Make sure to disable devices with any status not being DEV_ENABLED to ensure that thermal cutoff code works as it was setting the status to DEV_RECOVER. --- cgminer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cgminer.c b/cgminer.c index cfb02161..4fde93fd 100644 --- a/cgminer.c +++ b/cgminer.c @@ -3600,7 +3600,7 @@ void *miner_thread(void *userdata) tv_lastupdate = tv_end; } - if (unlikely(mythr->pause || cgpu->deven == DEV_DISABLED)) { + if (unlikely(mythr->pause || cgpu->deven != DEV_ENABLED)) { applog(LOG_WARNING, "Thread %d being disabled", thr_id); mythr->rolling = mythr->cgpu->rolling = 0; applog(LOG_DEBUG, "Popping wakeup ping in miner thread"); From baadafa298e08858ac87decd4f14a80d37a2707d Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 01:54:12 +1000 Subject: [PATCH 097/117] Minor variable alignment in poclbm kernel. --- poclbm120327.cl | 60 ++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/poclbm120327.cl b/poclbm120327.cl index b9244f2f..403ad7b6 100644 --- a/poclbm120327.cl +++ b/poclbm120327.cl @@ -369,10 +369,10 @@ Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); +Vals[4]+=W[2]; Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); Vals[4]+=K[34]; -Vals[4]+=W[2]; Vals[7]+=Vals[4]; Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); @@ -380,10 +380,10 @@ Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); +Vals[1]+=W[3]; Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); Vals[1]+=K[35]; -Vals[1]+=W[3]; Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); @@ -391,10 +391,10 @@ Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +Vals[0]+=W[4]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); Vals[0]+=K[36]; -Vals[0]+=W[4]; Vals[2]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); @@ -402,10 +402,10 @@ Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); +Vals[6]+=W[5]; Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); Vals[6]+=K[37]; -Vals[6]+=W[5]; Vals[3]+=Vals[6]; Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); @@ -413,10 +413,10 @@ Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +Vals[7]+=W[6]; Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); Vals[7]+=K[38]; -Vals[7]+=W[6]; Vals[4]+=Vals[7]; Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); @@ -424,10 +424,10 @@ Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +Vals[5]+=W[7]; Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); Vals[5]+=K[39]; -Vals[5]+=W[7]; Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); @@ -435,10 +435,10 @@ Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); +Vals[2]+=W[8]; Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); Vals[2]+=K[40]; -Vals[2]+=W[8]; Vals[0]+=Vals[2]; Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); @@ -446,10 +446,10 @@ Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); +Vals[3]+=W[9]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); Vals[3]+=K[41]; -Vals[3]+=W[9]; Vals[6]+=Vals[3]; Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); @@ -457,10 +457,10 @@ Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); +Vals[4]+=W[10]; Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); Vals[4]+=K[42]; -Vals[4]+=W[10]; Vals[7]+=Vals[4]; Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); @@ -468,10 +468,10 @@ Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +Vals[1]+=W[11]; Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); Vals[1]+=K[43]; -Vals[1]+=W[11]; Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); @@ -479,10 +479,10 @@ Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); +Vals[0]+=W[12]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); Vals[0]+=K[44]; -Vals[0]+=W[12]; Vals[2]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); @@ -490,10 +490,10 @@ Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); W[13]+=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); +Vals[6]+=W[13]; Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); Vals[6]+=K[45]; -Vals[6]+=W[13]; Vals[3]+=Vals[6]; Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); @@ -501,10 +501,10 @@ Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); +Vals[7]+=W[14]; Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); Vals[7]+=K[46]; -Vals[7]+=W[14]; Vals[4]+=Vals[7]; Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); @@ -512,10 +512,10 @@ Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); +Vals[5]+=W[15]; Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); Vals[5]+=K[47]; -Vals[5]+=W[15]; Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); @@ -523,10 +523,10 @@ Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[0]+=(rotr(W[1],7)^rotr(W[1],18)^(W[1]>>3U)); W[0]+=W[9]; W[0]+=(rotr(W[14],17)^rotr(W[14],19)^(W[14]>>10U)); +Vals[2]+=W[0]; Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); Vals[2]+=K[48]; -Vals[2]+=W[0]; Vals[0]+=Vals[2]; Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); @@ -534,10 +534,10 @@ Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[1]+=(rotr(W[2],7)^rotr(W[2],18)^(W[2]>>3U)); W[1]+=W[10]; W[1]+=(rotr(W[15],17)^rotr(W[15],19)^(W[15]>>10U)); +Vals[3]+=W[1]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); Vals[3]+=K[49]; -Vals[3]+=W[1]; Vals[6]+=Vals[3]; Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); @@ -545,10 +545,10 @@ Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[2]+=(rotr(W[3],7)^rotr(W[3],18)^(W[3]>>3U)); W[2]+=W[11]; W[2]+=(rotr(W[0],17)^rotr(W[0],19)^(W[0]>>10U)); +Vals[4]+=W[2]; Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); Vals[4]+=K[50]; -Vals[4]+=W[2]; Vals[7]+=Vals[4]; Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); @@ -556,10 +556,10 @@ Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[3]+=(rotr(W[4],7)^rotr(W[4],18)^(W[4]>>3U)); W[3]+=W[12]; W[3]+=(rotr(W[1],17)^rotr(W[1],19)^(W[1]>>10U)); +Vals[1]+=W[3]; Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); Vals[1]+=K[51]; -Vals[1]+=W[3]; Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); @@ -567,10 +567,10 @@ Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[4]+=(rotr(W[5],7)^rotr(W[5],18)^(W[5]>>3U)); W[4]+=W[13]; W[4]+=(rotr(W[2],17)^rotr(W[2],19)^(W[2]>>10U)); +Vals[0]+=W[4]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); Vals[0]+=K[52]; -Vals[0]+=W[4]; Vals[2]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); @@ -578,10 +578,10 @@ Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[5]+=(rotr(W[6],7)^rotr(W[6],18)^(W[6]>>3U)); W[5]+=W[14]; W[5]+=(rotr(W[3],17)^rotr(W[3],19)^(W[3]>>10U)); +Vals[6]+=W[5]; Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); Vals[6]+=K[53]; -Vals[6]+=W[5]; Vals[3]+=Vals[6]; Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); @@ -589,10 +589,10 @@ Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[6]+=(rotr(W[7],7)^rotr(W[7],18)^(W[7]>>3U)); W[6]+=W[15]; W[6]+=(rotr(W[4],17)^rotr(W[4],19)^(W[4]>>10U)); +Vals[7]+=W[6]; Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); Vals[7]+=K[54]; -Vals[7]+=W[6]; Vals[4]+=Vals[7]; Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); @@ -600,10 +600,10 @@ Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[7]+=(rotr(W[8],7)^rotr(W[8],18)^(W[8]>>3U)); W[7]+=W[0]; W[7]+=(rotr(W[5],17)^rotr(W[5],19)^(W[5]>>10U)); +Vals[5]+=W[7]; Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); Vals[5]+=K[55]; -Vals[5]+=W[7]; Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); @@ -611,10 +611,10 @@ Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); W[8]+=(rotr(W[9],7)^rotr(W[9],18)^(W[9]>>3U)); W[8]+=W[1]; W[8]+=(rotr(W[6],17)^rotr(W[6],19)^(W[6]>>10U)); +Vals[2]+=W[8]; Vals[2]+=(rotr(Vals[1],6)^rotr(Vals[1],11)^rotr(Vals[1],25)); Vals[2]+=ch(Vals[1],Vals[4],Vals[3]); Vals[2]+=K[56]; -Vals[2]+=W[8]; Vals[0]+=Vals[2]; Vals[2]+=(rotr(Vals[5],2)^rotr(Vals[5],13)^rotr(Vals[5],22)); Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); @@ -622,10 +622,10 @@ Vals[2]+=Ma(Vals[6],Vals[5],Vals[7]); W[9]+=(rotr(W[10],7)^rotr(W[10],18)^(W[10]>>3U)); W[9]+=W[2]; W[9]+=(rotr(W[7],17)^rotr(W[7],19)^(W[7]>>10U)); +Vals[3]+=W[9]; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=ch(Vals[0],Vals[1],Vals[4]); Vals[3]+=K[57]; -Vals[3]+=W[9]; Vals[6]+=Vals[3]; Vals[3]+=(rotr(Vals[2],2)^rotr(Vals[2],13)^rotr(Vals[2],22)); Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); @@ -633,10 +633,10 @@ Vals[3]+=Ma(Vals[7],Vals[2],Vals[5]); W[10]+=(rotr(W[11],7)^rotr(W[11],18)^(W[11]>>3U)); W[10]+=W[3]; W[10]+=(rotr(W[8],17)^rotr(W[8],19)^(W[8]>>10U)); +Vals[4]+=W[10]; Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[4]+=ch(Vals[6],Vals[0],Vals[1]); Vals[4]+=K[58]; -Vals[4]+=W[10]; Vals[7]+=Vals[4]; Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); @@ -644,10 +644,10 @@ Vals[4]+=Ma(Vals[5],Vals[3],Vals[2]); W[11]+=(rotr(W[12],7)^rotr(W[12],18)^(W[12]>>3U)); W[11]+=W[4]; W[11]+=(rotr(W[9],17)^rotr(W[9],19)^(W[9]>>10U)); +Vals[1]+=W[11]; Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); Vals[1]+=K[59]; -Vals[1]+=W[11]; Vals[5]+=Vals[1]; Vals[1]+=(rotr(Vals[4],2)^rotr(Vals[4],13)^rotr(Vals[4],22)); Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); @@ -655,10 +655,10 @@ Vals[1]+=Ma(Vals[2],Vals[4],Vals[3]); W[12]+=(rotr(W[13],7)^rotr(W[13],18)^(W[13]>>3U)); W[12]+=W[5]; W[12]+=(rotr(W[10],17)^rotr(W[10],19)^(W[10]>>10U)); +Vals[0]+=W[12]; Vals[0]+=(rotr(Vals[5],6)^rotr(Vals[5],11)^rotr(Vals[5],25)); Vals[0]+=ch(Vals[5],Vals[7],Vals[6]); Vals[0]+=K[60]; -Vals[0]+=W[12]; Vals[2]+=Vals[0]; Vals[0]+=(rotr(Vals[1],2)^rotr(Vals[1],13)^rotr(Vals[1],22)); Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); @@ -666,10 +666,10 @@ Vals[0]+=Ma(Vals[3],Vals[1],Vals[4]); W[13]+=(rotr(W[14],7)^rotr(W[14],18)^(W[14]>>3U)); W[13]+=W[6]; W[13]+=(rotr(W[11],17)^rotr(W[11],19)^(W[11]>>10U)); +Vals[6]+=W[13]; Vals[6]+=(rotr(Vals[2],6)^rotr(Vals[2],11)^rotr(Vals[2],25)); Vals[6]+=ch(Vals[2],Vals[5],Vals[7]); Vals[6]+=K[61]; -Vals[6]+=W[13]; Vals[3]+=Vals[6]; Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); @@ -677,10 +677,10 @@ Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); W[14]+=W[7]; W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); +Vals[7]+=W[14]; Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); Vals[7]+=K[62]; -Vals[7]+=W[14]; Vals[4]+=Vals[7]; Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); @@ -688,10 +688,10 @@ Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); W[15]+=W[8]; W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); +Vals[5]+=W[15]; Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); Vals[5]+=K[63]; -Vals[5]+=W[15]; Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); From 7367f57d14368064b7c2cbc484dfaf9849f6cd91 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 09:28:39 +1000 Subject: [PATCH 098/117] Reuse Vals[] array more than W[] till they're re-initialised on the second sha256 cycle in poclbm kernel. --- poclbm120327.cl | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/poclbm120327.cl b/poclbm120327.cl index 403ad7b6..72491a26 100644 --- a/poclbm120327.cl +++ b/poclbm120327.cl @@ -674,10 +674,10 @@ Vals[3]+=Vals[6]; Vals[6]+=(rotr(Vals[0],2)^rotr(Vals[0],13)^rotr(Vals[0],22)); Vals[6]+=Ma(Vals[4],Vals[0],Vals[1]); -W[14]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); -W[14]+=W[7]; -W[14]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); Vals[7]+=W[14]; +Vals[7]+=(rotr(W[15],7)^rotr(W[15],18)^(W[15]>>3U)); +Vals[7]+=W[7]; +Vals[7]+=(rotr(W[12],17)^rotr(W[12],19)^(W[12]>>10U)); Vals[7]+=(rotr(Vals[3],6)^rotr(Vals[3],11)^rotr(Vals[3],25)); Vals[7]+=ch(Vals[3],Vals[2],Vals[5]); Vals[7]+=K[62]; @@ -685,10 +685,10 @@ Vals[4]+=Vals[7]; Vals[7]+=(rotr(Vals[6],2)^rotr(Vals[6],13)^rotr(Vals[6],22)); Vals[7]+=Ma(Vals[1],Vals[6],Vals[0]); -W[15]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); -W[15]+=W[8]; -W[15]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); Vals[5]+=W[15]; +Vals[5]+=(rotr(W[0],7)^rotr(W[0],18)^(W[0]>>3U)); +Vals[5]+=W[8]; +Vals[5]+=(rotr(W[13],17)^rotr(W[13],19)^(W[13]>>10U)); Vals[5]+=(rotr(Vals[4],6)^rotr(Vals[4],11)^rotr(Vals[4],25)); Vals[5]+=ch(Vals[4],Vals[3],Vals[2]); Vals[5]+=K[63]; @@ -696,14 +696,13 @@ Vals[1]+=Vals[5]; Vals[5]+=(rotr(Vals[7],2)^rotr(Vals[7],13)^rotr(Vals[7],22)); Vals[5]+=Ma(Vals[0],Vals[7],Vals[6]); -W[0]=Vals[5]; -W[0]+=state0; +Vals[5]+=state0; W[7]=state7; W[7]+=Vals[2]; Vals[2]=0xF377ED68U; -Vals[2]+=W[0]; +Vals[2]+=Vals[5]; W[3]=state3; W[3]+=Vals[0]; @@ -719,9 +718,8 @@ Vals[3]=0x90BB1E3CU; Vals[3]+=(rotr(Vals[0],6)^rotr(Vals[0],11)^rotr(Vals[0],25)); Vals[3]+=(0x9b05688cU^(Vals[0]&0xca0b3af3U)); -W[1]=Vals[7]; -W[1]+=state1; -Vals[3]+=W[1]; +Vals[7]+=state1; +Vals[3]+=Vals[7]; W[2]=state2; W[2]+=Vals[6]; @@ -739,6 +737,7 @@ Vals[4]+=(rotr(Vals[6],6)^rotr(Vals[6],11)^rotr(Vals[6],25)); Vals[4]+=ch(Vals[6],Vals[0],0x510e527fU); Vals[4]+=W[2]; +W[1]=Vals[7]; Vals[7]=0xbb67ae85U; Vals[7]+=Vals[4]; Vals[4]+=(rotr(Vals[3],2)^rotr(Vals[3],13)^rotr(Vals[3],22)); @@ -752,6 +751,8 @@ Vals[1]+=(rotr(Vals[7],6)^rotr(Vals[7],11)^rotr(Vals[7],25)); Vals[1]+=ch(Vals[7],Vals[6],Vals[0]); Vals[1]+=W[3]; +W[0]=Vals[5]; + Vals[5]=Vals[1]; Vals[5]+=0x6a09e667U; From f3e4305620825dbaa61eb26b2a0b6d9f5c924338 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 14:11:58 +1000 Subject: [PATCH 099/117] Disable per-device status lines when there are more than 8 devices since screen output will be corrupted, enumerating them to the log output instead at startup. --- cgminer.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/cgminer.c b/cgminer.c index 4fde93fd..595b6087 100644 --- a/cgminer.c +++ b/cgminer.c @@ -1272,7 +1272,9 @@ static void curses_print_devstatus(int thr_id) struct cgpu_info *cgpu = thr_info[thr_id].cgpu; char logline[255]; - cgpu->utility = cgpu->accepted / ( total_secs ? total_secs : 1 ) * 60; + cgpu->utility = cgpu->accepted / ( total_secs ? total_secs : 1 ) * 60; + if (total_devices > 8) + return; mvwprintw(statuswin, devcursor + cgpu->cgminer_id, 0, " %s %d: ", cgpu->api->name, cgpu->device_id); if (cgpu->api->get_statline_before) { @@ -1280,10 +1282,11 @@ static void curses_print_devstatus(int thr_id) cgpu->api->get_statline_before(logline, cgpu); wprintw(statuswin, "%s", logline); } - if (cgpu->status == LIFE_DEAD) - wprintw(statuswin, "DEAD "); - else if (cgpu->status == LIFE_SICK) - wprintw(statuswin, "SICK "); + + if (cgpu->status == LIFE_DEAD) + wprintw(statuswin, "DEAD "); + else if (cgpu->status == LIFE_SICK) + wprintw(statuswin, "SICK "); else if (cgpu->deven == DEV_DISABLED) wprintw(statuswin, "OFF "); else if (cgpu->deven == DEV_RECOVER) @@ -1307,7 +1310,7 @@ static void curses_print_devstatus(int thr_id) wprintw(statuswin, "%s", logline); } - wclrtoeol(statuswin); + wclrtoeol(statuswin); } #endif @@ -4007,8 +4010,8 @@ static void log_print_status(struct cgpu_info *cgpu) { char logline[255]; - get_statline(logline, cgpu); - applog(LOG_WARNING, "%s", logline); + get_statline(logline, cgpu); + applog(LOG_WARNING, "%s", logline); } static void print_summary(void) @@ -4572,7 +4575,18 @@ int main (int argc, char *argv[]) load_temp_cutoffs(); - logstart += total_devices; + if (total_devices <= 8) { + logstart += total_devices; + } else { + applog(LOG_NOTICE, "Too many devices exist for per-device status lines"); + for (i = 0; i < total_devices; ++i) { + struct cgpu_info *cgpu = devices[i]; + + applog(LOG_NOTICE, "%s%d: %s", cgpu->api->name, cgpu->device_id, + cgpu->deven == DEV_ENABLED? "Enabled" : "Disabled"); + } + applog(LOG_NOTICE, "%d devices found, disabling per-device status lines", total_devices); + } logcursor = logstart + 1; #ifdef HAVE_CURSES From 7c6090fbafcb3ececa43e2dfa04b90d41f4de170 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 15:48:31 +1000 Subject: [PATCH 100/117] Cache the initial arguments passed to cgminer and implement an attempted restart option from the settings menu. --- cgminer.c | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/cgminer.c b/cgminer.c index 595b6087..70f3e5e9 100644 --- a/cgminer.c +++ b/cgminer.c @@ -1776,8 +1776,7 @@ static void disable_curses(void) static void print_summary(void); -/* This should be the common exit path */ -void kill_work(void) +static void __kill_work(void) { struct thr_info *thr; int i; @@ -1824,11 +1823,37 @@ void kill_work(void) applog(LOG_DEBUG, "Killing off API thread"); thr = &thr_info[api_thr_id]; thr_info_cancel(thr); +} + +/* This should be the common exit path */ +void kill_work(void) +{ + __kill_work(); quit(0, "Shutdown signal received."); } -void quit(int status, const char *format, ...); +static char **initial_args; + +static void clean_up(void); + +void app_restart(void) +{ + applog(LOG_WARNING, "Attempting to restart %s", packagename); + + __kill_work(); + clean_up(); + +#if defined(unix) + if (forkpid > 0) { + kill(forkpid, SIGTERM); + forkpid = 0; + } +#endif + + execv(initial_args[0], initial_args); + applog(LOG_WARNING, "Failed to restart application"); +} static void sighandler(int __maybe_unused sig) { @@ -2754,7 +2779,8 @@ static void set_options(void) clear_logwin(); retry: wlogprint("\n[L]ongpoll: %s\n", want_longpoll ? "On" : "Off"); - wlogprint("[Q]ueue: %d\n[S]cantime: %d\n[E]xpiry: %d\n[R]etries: %d\n[P]ause: %d\n[W]rite config file\n", + wlogprint("[Q]ueue: %d\n[S]cantime: %d\n[E]xpiry: %d\n[R]etries: %d\n" + "[P]ause: %d\n[W]rite config file\n[C]gminer restart\n", opt_queue, opt_scantime, opt_expiry, opt_retries, opt_fail_pause); wlogprint("Select an option or any other key to return\n"); input = getch(); @@ -2847,6 +2873,13 @@ retry: fclose(fcfg); goto retry; + } else if (!strncasecmp(&input, "c", 1)) { + wlogprint("Are you sure?\n"); + input = getch(); + if (!strncasecmp(&input, "y", 1)) + app_restart(); + else + clear_logwin(); } else clear_logwin(); @@ -4367,7 +4400,7 @@ void enable_device(struct cgpu_info *cgpu) #endif } -int main (int argc, char *argv[]) +int main(int argc, char *argv[]) { struct block *block, *tmpblock; struct work *work, *tmpwork; @@ -4382,6 +4415,11 @@ int main (int argc, char *argv[]) if (unlikely(curl_global_init(CURL_GLOBAL_ALL))) quit(1, "Failed to curl_global_init"); + initial_args = malloc(sizeof(char *) * (argc + 1)); + for (i = 0; i < argc; i++) + initial_args[i] = strdup(argv[i]); + initial_args[argc] = NULL; + mutex_init(&hash_lock); mutex_init(&qd_lock); #ifdef HAVE_CURSES From dc70fe9ce0daefb3192baa06e139b48fc352eeff Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 17:38:31 +1000 Subject: [PATCH 101/117] Do a complete cgminer restart if the ATI Display Library fails, as it does on windows after running for some time, when fanspeed reporting fails. --- adl.c | 10 ++++++++++ miner.h | 1 + 2 files changed, 11 insertions(+) diff --git a/adl.c b/adl.c index 13dd06bc..28be4d5b 100644 --- a/adl.c +++ b/adl.c @@ -679,6 +679,16 @@ int gpu_fanpercent(int gpu) lock_adl(); ret = __gpu_fanpercent(ga); unlock_adl(); + if (unlikely(ga->has_fanspeed && ret == -1)) { + applog(LOG_WARNING, "GPU %d stopped reporting fanspeed due to driver corruption", gpu); + if (opt_restart) { + applog(LOG_WARNING, "Restart enabled, will restart cgminer"); + applog(LOG_WARNING, "You can disable this with the --no-restart option"); + app_restart(); + } + applog(LOG_WARNING, "Disabling fanspeed monitoring on this device"); + ga->has_fanspeed = false; + } return ret; } diff --git a/miner.h b/miner.h index cdcb44c9..24a6ef36 100644 --- a/miner.h +++ b/miner.h @@ -657,5 +657,6 @@ extern void tq_freeze(struct thread_q *tq); extern void tq_thaw(struct thread_q *tq); extern bool successful_connect; extern void adl(void); +extern void app_restart(void); #endif /* __MINER_H__ */ From 2b6ab755393485fd3963de2314a525a0ffada904 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 19:07:41 +1000 Subject: [PATCH 102/117] News update. --- NEWS | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/NEWS b/NEWS index 62232381..3605fa55 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,25 @@ +Version 2.3.3 + +- Do a complete cgminer restart if the ATI Display Library fails, as it does on +windows after running for some time, when fanspeed reporting fails. +- Cache the initial arguments passed to cgminer and implement an attempted +restart option from the settings menu. +- Disable per-device status lines when there are more than 8 devices since +screen output will be corrupted, enumerating them to the log output instead at +startup. +- Reuse Vals[] array more than W[] till they're re-initialised on the second +sha256 cycle in poclbm kernel. +- Minor variable alignment in poclbm kernel. +- Make sure to disable devices with any status not being DEV_ENABLED to ensure +that thermal cutoff code works as it was setting the status to DEV_RECOVER. +- Re-initialising ADL simply made the driver fail since it is corruption over +time within the windows driver that's responsible. Revert "Attempt to +re-initialise ADL should a device that previously reported fanspeed stops +reporting it." +- Microoptimise poclbm kernel by ordering Val variables according to usage +frequency. + + Version 2.3.2 - March 31, 2012 - Damping small changes in hashrate so dramatically has the tendency to always From e0c4d60665fbeb757a2fb3b42fa0eb71aed9d7c1 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 23:47:34 +1000 Subject: [PATCH 103/117] Minor readme updates. --- README | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/README b/README index 0cb57209..bc450b80 100644 --- a/README +++ b/README @@ -873,21 +873,14 @@ any further. Q: Can you change the autofan/autogpu to change speeds in a different manner? A: The defaults are sane and safe. I'm not interested in changing them -further. The starting fan speed is set to 85% in auto-fan mode as a safety -precaution, but if a specific fan speed has been set, it will use that first -before adjusting automatically. - -Q: The fanspeed starts at 85% with --auto-fan. Can I set it lower? -A: The initial fanspeed will always start at 85% unless you choose your own -value with --gpu-fan. In this case it will use the value you give it with ---gpu-fan as the first fanspeed, but it will also use this as the maximum fan -speed unless overheat is detected. +further. The starting fan speed is set to 50% in auto-fan mode as a safety +precaution. Q: Why is my efficiency above/below 100%? A: Efficiency simply means how many shares you return for the amount of work you request. It does not correlate with efficient use of your hardware, and is a measure of a combination of hardware speed, block luck, pool design and other -factors. +factors Q: What are the best parameters to pass for X pool/hardware/device. A: Virtually always, the DEFAULT parameters give the best results. Most user @@ -912,7 +905,7 @@ this time. Q: Which ATI SDK is the best for cgminer? A: At the moment, versions 2.4 and 2.5 work the best. If you are forced to use -the 2.6 SDK, -v 1 might help, along with not decreasing your memory clock speed. +the 2.6 SDK. Q: I have multiple SDKs installed, can I choose which one it uses? A: Run cgminer with the -n option and it will list all the platforms currently From 393200e8d716f90bd8de2165e0b9e92ca12df5ec Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 23:50:41 +1000 Subject: [PATCH 104/117] Don't even display that cpumining is disabled on ./configure to discourage people from enabling it. --- configure.ac | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 88f07afb..b41b6b34 100644 --- a/configure.ac +++ b/configure.ac @@ -431,12 +431,10 @@ if test "x$bitforce" != xno; then echo " libudev.detection....: $libudev" fi -echo if test "x$cpumining" = xyes; then + echo echo " CPU Mining...........: Enabled" echo " ASM.(for CPU mining).: $has_yasm" -else - echo " CPU Mining...........: Disabled" fi echo From cdd4b63ec27a0ca0d4f3efe25363ef8099ef42ae Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 15 Apr 2012 09:44:18 +1000 Subject: [PATCH 105/117] More NEWS updates. --- NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 3605fa55..448a4257 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ -Version 2.3.3 +Version 2.3.3 - April 15, 2012 +- Don't even display that cpumining is disabled on ./configure to discourage +people from enabling it. - Do a complete cgminer restart if the ATI Display Library fails, as it does on windows after running for some time, when fanspeed reporting fails. - Cache the initial arguments passed to cgminer and implement an attempted From c3ef4912dd2c50e9a172c3a34fdeff5516d7c3e7 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 15 Apr 2012 09:46:43 +1000 Subject: [PATCH 106/117] Bump version number to 2.3.3 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index b41b6b34..4f7ed9ac 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_maj], [2]) m4_define([v_min], [3]) -m4_define([v_mic], [2]) +m4_define([v_mic], [3]) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_ver], [v_maj.v_min.v_mic]) m4_define([lt_rev], m4_eval(v_maj + v_min)) From 3a3912070e6cec353a71ea38da4c832a9db182b2 Mon Sep 17 00:00:00 2001 From: Kano Date: Wed, 18 Apr 2012 12:50:26 +1000 Subject: [PATCH 107/117] miner.php optionally support multiple rigs --- miner.php | 365 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 318 insertions(+), 47 deletions(-) diff --git a/miner.php b/miner.php index 5cdcc7e4..6f787507 100644 --- a/miner.php +++ b/miner.php @@ -1,9 +1,11 @@ '; +$warnfont = ''; +$warnoff = ''; + +# +function htmlhead($checkapi) { global $error, $readonly, $here; - if ($readonly === false) + if ($readonly === false && $checkapi === true) { $access = api('privileged'); if ($error != null @@ -36,17 +53,18 @@ td.h { color:blue; font-family:verdana,arial,sans; font-size:13pt; background:#d td.err { color:black; font-family:verdana,arial,sans; font-size:13pt; background:#ff3050 } td.warn { color:black; font-family:verdana,arial,sans; font-size:13pt; background:#ffb050 } td.sta { color:green; font-family:verdana,arial,sans; font-size:13pt; } +td.tot { color:blue; font-family:verdana,arial,sans; font-size:13pt; background:#fff8f2 }
Date: '.date('H:i:s j-M-Y \U\T\CP').'
Date: '.date($dfmt).'
Computer: '.$list['STATUS']['Description'].'When: '.date($dfmt, $list['STATUS']['When']).'Status: '.$stas[$sta].'Message: '.$list['STATUS']['Msg'].'
$name$name
'.fmt($section, $name, $value).''; +$tableend = '