package ige

import 

// DecryptAES256Blocks decrypts src using AES-256 in IGE mode and writes the
// result to dst. It uses an architecture-specific implementation when one is
// available and otherwise falls back to crypto/aes and DecryptBlocks.
//
// The key must be exactly 32 bytes. The IV must contain two AES blocks. Src
// must contain whole AES blocks and dst must be at least as long as src. Dst
// and src must not overlap.
func (, , ,  []byte) {
	if len() != 32 {
		panic(aes.KeySizeError(len()))
	}
	if len() != aes.BlockSize*2 {
		panic(ErrInvalidIV)
	}
	if len()%aes.BlockSize != 0 {
		panic("src not full blocks")
	}
	if len() < len() {
		panic("len(dst) < len(src)")
	}

	if decryptAES256BlocksHardware(, , , ) {
		return
	}

	,  := aes.NewCipher()
	if  != nil {
		panic()
	}
	DecryptBlocks(, , , )
}