// Copyright 2013 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.

// Code generated by go run gen.go -output md5block.go; DO NOT EDIT.

package md5

import (
	
	
)

func blockGeneric( *digest,  []byte) {
	// load state
	, , ,  := .s[0], .s[1], .s[2], .s[3]

	for  := 0;  <= len()-BlockSize;  += BlockSize {
		// eliminate bounds checks on p
		 := [:]
		 = [:BlockSize:BlockSize]

		// save current state
		, , ,  := , , , 

		// load input block
		 := binary.LittleEndian.Uint32([4*0x0:])
		 := binary.LittleEndian.Uint32([4*0x1:])
		 := binary.LittleEndian.Uint32([4*0x2:])
		 := binary.LittleEndian.Uint32([4*0x3:])
		 := binary.LittleEndian.Uint32([4*0x4:])
		 := binary.LittleEndian.Uint32([4*0x5:])
		 := binary.LittleEndian.Uint32([4*0x6:])
		 := binary.LittleEndian.Uint32([4*0x7:])
		 := binary.LittleEndian.Uint32([4*0x8:])
		 := binary.LittleEndian.Uint32([4*0x9:])
		 := binary.LittleEndian.Uint32([4*0xa:])
		 := binary.LittleEndian.Uint32([4*0xb:])
		 := binary.LittleEndian.Uint32([4*0xc:])
		 := binary.LittleEndian.Uint32([4*0xd:])
		 := binary.LittleEndian.Uint32([4*0xe:])
		 := binary.LittleEndian.Uint32([4*0xf:])

		// round 1
		 =  + bits.RotateLeft32((((^)&)^)+++0xd76aa478, 7)
		 =  + bits.RotateLeft32((((^)&)^)+++0xe8c7b756, 12)
		 =  + bits.RotateLeft32((((^)&)^)+++0x242070db, 17)
		 =  + bits.RotateLeft32((((^)&)^)+++0xc1bdceee, 22)
		 =  + bits.RotateLeft32((((^)&)^)+++0xf57c0faf, 7)
		 =  + bits.RotateLeft32((((^)&)^)+++0x4787c62a, 12)
		 =  + bits.RotateLeft32((((^)&)^)+++0xa8304613, 17)
		 =  + bits.RotateLeft32((((^)&)^)+++0xfd469501, 22)
		 =  + bits.RotateLeft32((((^)&)^)+++0x698098d8, 7)
		 =  + bits.RotateLeft32((((^)&)^)+++0x8b44f7af, 12)
		 =  + bits.RotateLeft32((((^)&)^)+++0xffff5bb1, 17)
		 =  + bits.RotateLeft32((((^)&)^)+++0x895cd7be, 22)
		 =  + bits.RotateLeft32((((^)&)^)+++0x6b901122, 7)
		 =  + bits.RotateLeft32((((^)&)^)+++0xfd987193, 12)
		 =  + bits.RotateLeft32((((^)&)^)+++0xa679438e, 17)
		 =  + bits.RotateLeft32((((^)&)^)+++0x49b40821, 22)

		// round 2
		 =  + bits.RotateLeft32((((^)&)^)+++0xf61e2562, 5)
		 =  + bits.RotateLeft32((((^)&)^)+++0xc040b340, 9)
		 =  + bits.RotateLeft32((((^)&)^)+++0x265e5a51, 14)
		 =  + bits.RotateLeft32((((^)&)^)+++0xe9b6c7aa, 20)
		 =  + bits.RotateLeft32((((^)&)^)+++0xd62f105d, 5)
		 =  + bits.RotateLeft32((((^)&)^)+++0x02441453, 9)
		 =  + bits.RotateLeft32((((^)&)^)+++0xd8a1e681, 14)
		 =  + bits.RotateLeft32((((^)&)^)+++0xe7d3fbc8, 20)
		 =  + bits.RotateLeft32((((^)&)^)+++0x21e1cde6, 5)
		 =  + bits.RotateLeft32((((^)&)^)+++0xc33707d6, 9)
		 =  + bits.RotateLeft32((((^)&)^)+++0xf4d50d87, 14)
		 =  + bits.RotateLeft32((((^)&)^)+++0x455a14ed, 20)
		 =  + bits.RotateLeft32((((^)&)^)+++0xa9e3e905, 5)
		 =  + bits.RotateLeft32((((^)&)^)+++0xfcefa3f8, 9)
		 =  + bits.RotateLeft32((((^)&)^)+++0x676f02d9, 14)
		 =  + bits.RotateLeft32((((^)&)^)+++0x8d2a4c8a, 20)

		// round 3
		 =  + bits.RotateLeft32((^^)+++0xfffa3942, 4)
		 =  + bits.RotateLeft32((^^)+++0x8771f681, 11)
		 =  + bits.RotateLeft32((^^)+++0x6d9d6122, 16)
		 =  + bits.RotateLeft32((^^)+++0xfde5380c, 23)
		 =  + bits.RotateLeft32((^^)+++0xa4beea44, 4)
		 =  + bits.RotateLeft32((^^)+++0x4bdecfa9, 11)
		 =  + bits.RotateLeft32((^^)+++0xf6bb4b60, 16)
		 =  + bits.RotateLeft32((^^)+++0xbebfbc70, 23)
		 =  + bits.RotateLeft32((^^)+++0x289b7ec6, 4)
		 =  + bits.RotateLeft32((^^)+++0xeaa127fa, 11)
		 =  + bits.RotateLeft32((^^)+++0xd4ef3085, 16)
		 =  + bits.RotateLeft32((^^)+++0x04881d05, 23)
		 =  + bits.RotateLeft32((^^)+++0xd9d4d039, 4)
		 =  + bits.RotateLeft32((^^)+++0xe6db99e5, 11)
		 =  + bits.RotateLeft32((^^)+++0x1fa27cf8, 16)
		 =  + bits.RotateLeft32((^^)+++0xc4ac5665, 23)

		// round 4
		 =  + bits.RotateLeft32((^(|^))+++0xf4292244, 6)
		 =  + bits.RotateLeft32((^(|^))+++0x432aff97, 10)
		 =  + bits.RotateLeft32((^(|^))+++0xab9423a7, 15)
		 =  + bits.RotateLeft32((^(|^))+++0xfc93a039, 21)
		 =  + bits.RotateLeft32((^(|^))+++0x655b59c3, 6)
		 =  + bits.RotateLeft32((^(|^))+++0x8f0ccc92, 10)
		 =  + bits.RotateLeft32((^(|^))+++0xffeff47d, 15)
		 =  + bits.RotateLeft32((^(|^))+++0x85845dd1, 21)
		 =  + bits.RotateLeft32((^(|^))+++0x6fa87e4f, 6)
		 =  + bits.RotateLeft32((^(|^))+++0xfe2ce6e0, 10)
		 =  + bits.RotateLeft32((^(|^))+++0xa3014314, 15)
		 =  + bits.RotateLeft32((^(|^))+++0x4e0811a1, 21)
		 =  + bits.RotateLeft32((^(|^))+++0xf7537e82, 6)
		 =  + bits.RotateLeft32((^(|^))+++0xbd3af235, 10)
		 =  + bits.RotateLeft32((^(|^))+++0x2ad7d2bb, 15)
		 =  + bits.RotateLeft32((^(|^))+++0xeb86d391, 21)

		// add saved state
		 += 
		 += 
		 += 
		 += 
	}

	// save state
	.s[0], .s[1], .s[2], .s[3] = , , , 
}