// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// SHA256 block step.
// In its own file so that a faster assembly or C version
// can be substituted easily.

package sha256

import 

var _K = [...]uint32{
	0x428a2f98,
	0x71374491,
	0xb5c0fbcf,
	0xe9b5dba5,
	0x3956c25b,
	0x59f111f1,
	0x923f82a4,
	0xab1c5ed5,
	0xd807aa98,
	0x12835b01,
	0x243185be,
	0x550c7dc3,
	0x72be5d74,
	0x80deb1fe,
	0x9bdc06a7,
	0xc19bf174,
	0xe49b69c1,
	0xefbe4786,
	0x0fc19dc6,
	0x240ca1cc,
	0x2de92c6f,
	0x4a7484aa,
	0x5cb0a9dc,
	0x76f988da,
	0x983e5152,
	0xa831c66d,
	0xb00327c8,
	0xbf597fc7,
	0xc6e00bf3,
	0xd5a79147,
	0x06ca6351,
	0x14292967,
	0x27b70a85,
	0x2e1b2138,
	0x4d2c6dfc,
	0x53380d13,
	0x650a7354,
	0x766a0abb,
	0x81c2c92e,
	0x92722c85,
	0xa2bfe8a1,
	0xa81a664b,
	0xc24b8b70,
	0xc76c51a3,
	0xd192e819,
	0xd6990624,
	0xf40e3585,
	0x106aa070,
	0x19a4c116,
	0x1e376c08,
	0x2748774c,
	0x34b0bcb5,
	0x391c0cb3,
	0x4ed8aa4a,
	0x5b9cca4f,
	0x682e6ff3,
	0x748f82ee,
	0x78a5636f,
	0x84c87814,
	0x8cc70208,
	0x90befffa,
	0xa4506ceb,
	0xbef9a3f7,
	0xc67178f2,
}

func blockGeneric( *Digest,  []byte) {
	var  [64]uint32
	, , , , , , ,  := .h[0], .h[1], .h[2], .h[3], .h[4], .h[5], .h[6], .h[7]
	for len() >= chunk {
		// Can interlace the computation of w with the
		// rounds below if needed for speed.
		for  := 0;  < 16; ++ {
			 :=  * 4
			[] = uint32([])<<24 | uint32([+1])<<16 | uint32([+2])<<8 | uint32([+3])
		}
		for  := 16;  < 64; ++ {
			 := [-2]
			 := (bits.RotateLeft32(, -17)) ^ (bits.RotateLeft32(, -19)) ^ ( >> 10)
			 := [-15]
			 := (bits.RotateLeft32(, -7)) ^ (bits.RotateLeft32(, -18)) ^ ( >> 3)
			[] =  + [-7] +  + [-16]
		}

		, , , , , , ,  := , , , , , , , 

		for  := 0;  < 64; ++ {
			 :=  + ((bits.RotateLeft32(, -6)) ^ (bits.RotateLeft32(, -11)) ^ (bits.RotateLeft32(, -25))) + (( & ) ^ (^ & )) + _K[] + []

			 := ((bits.RotateLeft32(, -2)) ^ (bits.RotateLeft32(, -13)) ^ (bits.RotateLeft32(, -22))) + (( & ) ^ ( & ) ^ ( & ))

			 = 
			 = 
			 = 
			 =  + 
			 = 
			 = 
			 = 
			 =  + 
		}

		 += 
		 += 
		 += 
		 += 
		 += 
		 += 
		 += 
		 += 

		 = [chunk:]
	}

	.h[0], .h[1], .h[2], .h[3], .h[4], .h[5], .h[6], .h[7] = , , , , , , , 
}