a += s2(b, c, d, e,w[ 39]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 40]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 41]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 42]); e = rotateLeft( e, 30); b += s3(c, d, e, a,w[ 43]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 44]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 45]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 46]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 47]); e = rotateLeft( e, 30); b += s3(c, d, e, a,w[ 48]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 49]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 50]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 51]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 52]); e = rotateLeft( e, 30); b += s3(c, d, e, a,w[ 53]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 54]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 55]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 56]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 57]); e = rotateLeft( e, 30); state58.save(a, b, c, d, e); b += s3(c, d, e, a,w[ 58]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 59]); c = rotateLeft( c, 30);
{ b = rotateRight( b, 30); e -= s4(a, b, c, d,w2[ 60]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 59]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 58]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 57]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 56]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 55]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 54]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 53]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 52]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 51]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 50]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 49]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 48]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 47]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 46]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 45]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 44]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 43]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 42]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 41]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 40]);} { b += s3(c, d, e, a,w2[ 58]); d = rotateLeft( d, 30);} { a += s3(b, c, d, e,w2[ 59]); c = rotateLeft( c, 30);}
a += s2(b, c, d, e,w[ 39]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 40]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 41]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 42]); e = rotateLeft( e, 30); b += s3(c, d, e, a,w[ 43]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 44]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 45]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 46]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 47]); e = rotateLeft( e, 30); b += s3(c, d, e, a,w[ 48]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 49]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 50]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 51]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 52]); e = rotateLeft( e, 30); b += s3(c, d, e, a,w[ 53]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 54]); c = rotateLeft( c, 30); e += s3(a, b, c, d,w[ 55]); b = rotateLeft( b, 30); d += s3(e, a, b, c,w[ 56]); a = rotateLeft( a, 30); c += s3(d, e, a, b,w[ 57]); e = rotateLeft( e, 30); state58.save(a, b, c, d, e); b += s3(c, d, e, a,w[ 58]); d = rotateLeft( d, 30); a += s3(b, c, d, e,w[ 59]); c = rotateLeft( c, 30);
{ b = rotateRight( b, 30); e -= s4(a, b, c, d,w2[ 60]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 59]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 58]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 57]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 56]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 55]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 54]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 53]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 52]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 51]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 50]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 49]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 48]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 47]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 46]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 45]);} { c = rotateRight( c, 30); a -= s3(b, c, d, e,w2[ 44]);} { d = rotateRight( d, 30); b -= s3(c, d, e, a,w2[ 43]);} { e = rotateRight( e, 30); c -= s3(d, e, a, b,w2[ 42]);} { a = rotateRight( a, 30); d -= s3(e, a, b, c,w2[ 41]);} { b = rotateRight( b, 30); e -= s3(a, b, c, d,w2[ 40]);} { b += s3(c, d, e, a,w2[ 58]); d = rotateLeft( d, 30);} { a += s3(b, c, d, e,w2[ 59]); c = rotateLeft( c, 30);}