diff --git a/avoutil/simd/simd_sse2.go b/avoutil/simd/simd_sse2.go index 050a7b0..34934ce 100644 --- a/avoutil/simd/simd_sse2.go +++ b/avoutil/simd/simd_sse2.go @@ -798,3 +798,108 @@ const ( C_MM_HINT_T2 = 1 C_MM_HINT_NTA = 0 ) + +/* +* +Synopsis + + __m128i _mm_srli_si128 (__m128i a, int imm8) + #include + Instruction: psrldq xmm, imm8 + CPUID Flags: SSE2 + +Description + + Shift a right by imm8 bytes while shifting in zeros, and store the results in dst. + +Operation + + tmp := imm8[7:0] + IF tmp > 15 + tmp := 16 + FI + dst[127:0] := a[127:0] >> (tmp*8) +*/ +func F_mm_srli_si128(dst VecVirtual, a, imm8 Op) VecVirtual { + if dst != a { + MOVOad(dst, a) + } + + CheckType( + ` + // PSRLDQ imm8 xmm + `, + imm8, dst, + ) + + PSRLDQ(imm8, dst) + return dst +} + +/* +* +Synopsis + + __m128i _mm_slli_si128 (__m128i a, int imm8) + #include + Instruction: pslldq xmm, imm8 + CPUID Flags: SSE2 + +Description + + Shift a left by imm8 bytes while shifting in zeros, and store the results in dst. + +Operation + + tmp := imm8[7:0] + IF tmp > 15 + tmp := 16 + FI + dst[127:0] := a[127:0] << (tmp*8) +*/ +func F_mm_slli_si128(dst VecVirtual, a, imm8 Op) VecVirtual { + if dst != a { + MOVOad(dst, a) + } + + CheckType( + ` + // PSLLDQ imm8 xmm + `, + imm8, dst, + ) + + PSLLDQ(imm8, dst) + return dst +} + +/* +* +Synopsis + + int _mm_extract_epi8 (__m128i a, const int imm8) + #include + Instruction: pextrb r32, xmm, imm8 + CPUID Flags: SSE4.1 + +Description + + Extract an 8-bit integer from a, selected with imm8, and store the result in the lower element of dst. + +Operation + + dst[7:0] := (a[127:0] >> (imm8[3:0] * 8))[7:0] + dst[31:8] := 0 +*/ +func F_mm_extract_epi8(dst Register, a, imm8 Op) Register { + CheckType( + ` + // PEXTRB imm8 xmm m8 + // PEXTRB imm8 xmm r32 + `, + imm8, a, dst, + ) + + PEXTRB(imm8, a, dst) + return dst +} diff --git a/avoutil/simd/simd_ssse3.go b/avoutil/simd/simd_ssse3.go index dbc28c0..85ca7a5 100644 --- a/avoutil/simd/simd_ssse3.go +++ b/avoutil/simd/simd_ssse3.go @@ -31,19 +31,51 @@ dst = a */ func F_mm_shuffle_epi8(dst VecVirtual, a, b Op) VecVirtual { - if dst != a { + // _mm_shuffle_epi8(a, b); + // -> pshufb a, b + // -> PSHUFB (B, A) + + switch { + case dst == a: + CheckType( + ` + // PSHUFB m128 xmm + // PSHUFB xmm xmm + `, + b, dst, + ) + + PSHUFB(b, dst) + + case dst == b: + CheckType( + ` + // PSHUFB m128 xmm + // PSHUFB xmm xmm + `, + a, dst, + ) + + tmp := XMM() + MOVOad(tmp, b) MOVOad(dst, a) - } + PSHUFB(tmp, dst) + + default: + if dst != a { + MOVOad(dst, a) + } - CheckType( - ` - // PSHUFB m128 xmm - // PSHUFB xmm xmm - `, - b, dst, - ) + CheckType( + ` + // PSHUFB m128 xmm + // PSHUFB xmm xmm + `, + b, dst, + ) - PSHUFB(b, dst) + PSHUFB(b, dst) + } return dst } diff --git a/internal/kryptoutil/avo/avo.go b/internal/kryptoutil/avo/avo.go deleted file mode 100644 index 75519cc..0000000 --- a/internal/kryptoutil/avo/avo.go +++ /dev/null @@ -1,12 +0,0 @@ -package avo - -import ( - . "github.com/mmcloughlin/avo/build" - /* - . "github.com/mmcloughlin/avo/operand" - . "github.com/mmcloughlin/avo/reg" - */) - -func main() { - TEXT("lsh256InitSSE2", NOSPLIT, "func(ctx *[]byte, value uint])") -} diff --git a/internal/kryptoutil/memset.go b/internal/kryptoutil/memset.go new file mode 100644 index 0000000..7cc6acc --- /dev/null +++ b/internal/kryptoutil/memset.go @@ -0,0 +1,41 @@ +package kryptoutil + +func MemsetByte(a []byte, v byte) { + if len(a) == 0 { + return + } + a[0] = v + for bp := 1; bp < len(a); bp *= 2 { + copy(a[bp:], a[:bp]) + } +} + +func MemsetUint32(a []uint32, v uint32) { + if len(a) == 0 { + return + } + a[0] = v + for bp := 1; bp < len(a); bp *= 2 { + copy(a[bp:], a[:bp]) + } +} + +func MemsetUint64(a []uint64, v uint64) { + if len(a) == 0 { + return + } + a[0] = v + for bp := 1; bp < len(a); bp *= 2 { + copy(a[bp:], a[:bp]) + } +} + +func MemsetInt(a []int, v int) { + if len(a) == 0 { + return + } + a[0] = v + for bp := 1; bp < len(a); bp *= 2 { + copy(a[bp:], a[:bp]) + } +} diff --git a/lea/lea.go b/lea/lea.go index 21d9227..cc58325 100644 --- a/lea/lea.go +++ b/lea/lea.go @@ -1,7 +1,53 @@ +// Package lea implements LEA encryption, as defined in TTAK.KO-12.0223 package lea +import ( + "crypto/cipher" + "fmt" +) + +type funcNew func(key []byte) (cipher.Block, error) +type funcBlock func(ctx *leaContext, dst, src []byte) + type leaContext struct { round uint8 rk [192]uint32 ecb bool } + +var ( + leaEnc1 funcBlock = leaEnc1Go + leaEnc4 funcBlock = leaEnc4Go + leaEnc8 funcBlock = leaEnc8Go + + leaDec1 funcBlock = leaDec1Go + leaDec4 funcBlock = leaDec4Go + leaDec8 funcBlock = leaDec8Go + + leaNew funcNew = newCipherGo + leaNewECB funcNew = newCipherECBGo +) + +const ( + // The LEA block size in bytes. + BlockSize = 16 +) + +type KeySizeError int + +func (k KeySizeError) Error() string { + return fmt.Sprintf("krypto/lea: invalid key size %d", int(k)) +} + +// NewCipher creates and returns a new cipher.Block. +// The key argument should be the LEA key, either 16, 24, or 32 bytes to select LEA-128, LEA-192, or LEA-256. +func NewCipher(key []byte) (cipher.Block, error) { + return leaNew(key) +} + +// NewCipherECB creates and returns a new cipher.Block by ECB mode. +// This function can be useful in amd64. +// The key argument should be the LEA key, either 16, 24, or 32 bytes to select LEA-128, LEA-192, or LEA-256. +func NewCipherECB(key []byte) (cipher.Block, error) { + return leaNewECB(key) +} diff --git a/lea/lea_amd64.go b/lea/lea_amd64.go new file mode 100644 index 0000000..af979b6 --- /dev/null +++ b/lea/lea_amd64.go @@ -0,0 +1,148 @@ +//go:build amd64 && gc && !purego + +package lea + +import ( + "crypto/cipher" + "fmt" + + "golang.org/x/sys/cpu" +) + +var ( + hasAVX2 = cpu.X86.HasAVX2 && cpu.X86.HasAVX + + useAVX2 = false +) + +func init() { + leaEnc4 = leaEnc4SSE2 + leaDec4 = leaDec4SSE2 + + leaEnc8 = leaEnc8SSE2 + leaDec8 = leaDec8SSE2 + + if hasAVX2 && useAVX2 { + leaEnc8 = leaEnc8AVX2 + leaDec8 = leaDec8AVX2 + } + + leaNew = newCipherAsm + leaNewECB = newCipherAsmECB +} + +func leaEnc8SSE2(ctx *leaContext, dst, src []byte) { + leaEnc4SSE2(ctx, dst[0x00:], src[0x00:]) + leaEnc4SSE2(ctx, dst[0x40:], src[0x40:]) +} +func leaDec8SSE2(ctx *leaContext, dst, src []byte) { + leaDec4SSE2(ctx, dst[0x00:], src[0x00:]) + leaDec4SSE2(ctx, dst[0x40:], src[0x40:]) +} + +type leaContextAsm struct { + g leaContext +} + +func newCipherAsm(key []byte) (cipher.Block, error) { + ctx := new(leaContextAsm) + + if err := ctx.g.initContext(key); err != nil { + return nil, err + } + return ctx, nil +} + +func newCipherAsmECB(key []byte) (cipher.Block, error) { + ctx := new(leaContextAsm) + ctx.g.ecb = true + + if err := ctx.g.initContext(key); err != nil { + return nil, err + } + return ctx, nil +} + +func (ctx *leaContextAsm) BlockSize() int { + return BlockSize +} + +func (ctx *leaContextAsm) Encrypt(dst, src []byte) { + if len(src) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (src)", len(src))) + } + if len(dst) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (dst)", len(dst))) + } + + if !ctx.g.ecb { + leaEnc1(&ctx.g, dst, src) + } else { + if len(src)%BlockSize != 0 { + panic("krypto/lea: input not full blocks") + } + + remainBlock := len(src) / ctx.BlockSize() + + for remainBlock >= 8 { + remainBlock -= 8 + leaEnc8(&ctx.g, dst, src) + + dst, src = dst[0x80:], src[0x80:] + } + + for remainBlock >= 4 { + remainBlock -= 4 + leaEnc4(&ctx.g, dst, src) + + dst, src = dst[0x40:], src[0x40:] + } + + for remainBlock > 0 { + remainBlock -= 1 + leaEnc1(&ctx.g, dst, src) + + dst, src = dst[0x10:], src[0x10:] + } + } +} + +func (ctx *leaContextAsm) Decrypt(dst, src []byte) { + if len(src) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (src)", len(src))) + } + if len(dst) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (dst)", len(dst))) + } + + if !ctx.g.ecb { + leaDec1(&ctx.g, dst, src) + } else { + if len(src)%BlockSize != 0 { + panic("krypto/lea: input not full blocks") + } + + remainBlock := len(src) / ctx.BlockSize() + + for remainBlock >= 8 { + remainBlock -= 8 + leaDec8(&ctx.g, dst, src) + + dst, src = dst[0x80:], src[0x80:] + } + + for remainBlock >= 4 { + remainBlock -= 4 + leaDec4(&ctx.g, dst, src) + + dst, src = dst[0x40:], src[0x40:] + } + + for remainBlock > 0 { + remainBlock -= 1 + leaDec1(&ctx.g, dst, src) + + dst, src = dst[0x10:], src[0x10:] + } + } +} diff --git a/lea/lea_generic.go b/lea/lea_generic.go new file mode 100644 index 0000000..570e6c4 --- /dev/null +++ b/lea/lea_generic.go @@ -0,0 +1,912 @@ +package lea + +import ( + "crypto/cipher" + "encoding/binary" + "fmt" + "math/bits" + + "kryptosimd/internal/kryptoutil" +) + +func newCipherGo(key []byte) (cipher.Block, error) { + ctx := new(leaContext) + + if err := ctx.initContext(key); err != nil { + return nil, err + } + return ctx, nil +} + +func newCipherECBGo(key []byte) (cipher.Block, error) { + ctx := new(leaContext) + ctx.ecb = true + + if err := ctx.initContext(key); err != nil { + return nil, err + } + return ctx, nil +} + +func (ctx *leaContext) initContext(key []byte) error { + l := len(key) + switch l { + case 16: + case 24: + case 32: + default: + return KeySizeError(l) + } + + kryptoutil.MemsetUint32(ctx.rk[:], 0) + ctx.round = uint8(leaSetKeyGo(ctx.rk[:], key)) + + return nil +} + +func (ctx *leaContext) BlockSize() int { + return BlockSize +} + +func (ctx *leaContext) Encrypt(dst, src []byte) { + if len(src) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (src)", len(src))) + } + if len(dst) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (dst)", len(dst))) + } + + encrypt(ctx, dst, src, ctx.ecb) +} +func encrypt(ctx *leaContext, dst, src []byte, ecb bool) { + if !ctx.ecb { + leaEnc1Go(ctx, dst, src) + } else { + if len(src)%BlockSize != 0 { + panic("krypto/lea: input not full blocks") + } + + remainBlock := len(src) / ctx.BlockSize() + + for remainBlock >= 8 { + remainBlock -= 8 + leaEnc8Go(ctx, dst, src) + + dst, src = dst[0x80:], src[0x80:] + } + + for remainBlock >= 4 { + remainBlock -= 4 + leaEnc4Go(ctx, dst, src) + + dst, src = dst[0x40:], src[0x40:] + } + + for remainBlock > 0 { + remainBlock -= 1 + leaEnc1Go(ctx, dst, src) + + dst, src = dst[0x10:], src[0x10:] + } + } +} + +func (ctx *leaContext) Decrypt(dst, src []byte) { + if len(src) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (src)", len(src))) + } + if len(dst) < BlockSize { + panic(fmt.Sprintf("krypto/lea: invalid block size %d (dst)", len(dst))) + } + + decrypt(ctx, dst, src, ctx.ecb) +} +func decrypt(ctx *leaContext, dst, src []byte, ecb bool) { + if !ctx.ecb { + leaDec1Go(ctx, dst, src) + } else { + if len(src)%BlockSize != 0 { + panic("krypto/lea: input not full blocks") + } + + remainBlock := len(src) / ctx.BlockSize() + + for remainBlock >= 8 { + remainBlock -= 8 + leaDec8Go(ctx, dst, src) + + dst, src = dst[0x80:], src[0x80:] + } + + for remainBlock >= 4 { + remainBlock -= 4 + leaDec4Go(ctx, dst, src) + + dst, src = dst[0x40:], src[0x40:] + } + + for remainBlock > 0 { + remainBlock -= 1 + leaDec1Go(ctx, dst, src) + + dst, src = dst[0x10:], src[0x10:] + } + } +} + +func leaSetKeyGo(rk []uint32, key []byte) int { + keyLen := len(key) + + switch keyLen { + case 16: + rk[0] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*0:])+delta[0][0], 1) + rk[6] = bits.RotateLeft32(rk[0]+delta[1][1], 1) + rk[12] = bits.RotateLeft32(rk[6]+delta[2][2], 1) + rk[18] = bits.RotateLeft32(rk[12]+delta[3][3], 1) + rk[24] = bits.RotateLeft32(rk[18]+delta[0][4], 1) + rk[30] = bits.RotateLeft32(rk[24]+delta[1][5], 1) + rk[36] = bits.RotateLeft32(rk[30]+delta[2][6], 1) + rk[42] = bits.RotateLeft32(rk[36]+delta[3][7], 1) + rk[48] = bits.RotateLeft32(rk[42]+delta[0][8], 1) + rk[54] = bits.RotateLeft32(rk[48]+delta[1][9], 1) + rk[60] = bits.RotateLeft32(rk[54]+delta[2][10], 1) + rk[66] = bits.RotateLeft32(rk[60]+delta[3][11], 1) + rk[72] = bits.RotateLeft32(rk[66]+delta[0][12], 1) + rk[78] = bits.RotateLeft32(rk[72]+delta[1][13], 1) + rk[84] = bits.RotateLeft32(rk[78]+delta[2][14], 1) + rk[90] = bits.RotateLeft32(rk[84]+delta[3][15], 1) + rk[96] = bits.RotateLeft32(rk[90]+delta[0][16], 1) + rk[102] = bits.RotateLeft32(rk[96]+delta[1][17], 1) + rk[108] = bits.RotateLeft32(rk[102]+delta[2][18], 1) + rk[114] = bits.RotateLeft32(rk[108]+delta[3][19], 1) + rk[120] = bits.RotateLeft32(rk[114]+delta[0][20], 1) + rk[126] = bits.RotateLeft32(rk[120]+delta[1][21], 1) + rk[132] = bits.RotateLeft32(rk[126]+delta[2][22], 1) + rk[138] = bits.RotateLeft32(rk[132]+delta[3][23], 1) + + /** + rk[ 1] = rk[ 3] = rk[ 5] = bits.RotateLeft32(loadU32(mk,1) + delta[0][ 1], 3); + rk[ 7] = rk[ 9] = rk[ 11] = bits.RotateLeft32(rk[ 1] + delta[1][ 2], 3); + rk[ 13] = rk[ 15] = rk[ 17] = bits.RotateLeft32(rk[ 7] + delta[2][ 3], 3); + rk[ 19] = rk[ 21] = rk[ 23] = bits.RotateLeft32(rk[ 13] + delta[3][ 4], 3); + rk[ 25] = rk[ 27] = rk[ 29] = bits.RotateLeft32(rk[ 19] + delta[0][ 5], 3); + rk[ 31] = rk[ 33] = rk[ 35] = bits.RotateLeft32(rk[ 25] + delta[1][ 6], 3); + rk[ 37] = rk[ 39] = rk[ 41] = bits.RotateLeft32(rk[ 31] + delta[2][ 7], 3); + rk[ 43] = rk[ 45] = rk[ 47] = bits.RotateLeft32(rk[ 37] + delta[3][ 8], 3); + rk[ 49] = rk[ 51] = rk[ 53] = bits.RotateLeft32(rk[ 43] + delta[0][ 9], 3); + rk[ 55] = rk[ 57] = rk[ 59] = bits.RotateLeft32(rk[ 49] + delta[1][10], 3); + rk[ 61] = rk[ 63] = rk[ 65] = bits.RotateLeft32(rk[ 55] + delta[2][11], 3); + rk[ 67] = rk[ 69] = rk[ 71] = bits.RotateLeft32(rk[ 61] + delta[3][12], 3); + rk[ 73] = rk[ 75] = rk[ 77] = bits.RotateLeft32(rk[ 67] + delta[0][13], 3); + rk[ 79] = rk[ 81] = rk[ 83] = bits.RotateLeft32(rk[ 73] + delta[1][14], 3); + rk[ 85] = rk[ 87] = rk[ 89] = bits.RotateLeft32(rk[ 79] + delta[2][15], 3); + rk[ 91] = rk[ 93] = rk[ 95] = bits.RotateLeft32(rk[ 85] + delta[3][16], 3); + rk[ 97] = rk[ 99] = rk[101] = bits.RotateLeft32(rk[ 91] + delta[0][17], 3); + rk[103] = rk[105] = rk[107] = bits.RotateLeft32(rk[ 97] + delta[1][18], 3); + rk[109] = rk[111] = rk[113] = bits.RotateLeft32(rk[103] + delta[2][19], 3); + rk[115] = rk[117] = rk[119] = bits.RotateLeft32(rk[109] + delta[3][20], 3); + rk[121] = rk[123] = rk[125] = bits.RotateLeft32(rk[115] + delta[0][21], 3); + rk[127] = rk[129] = rk[131] = bits.RotateLeft32(rk[121] + delta[1][22], 3); + rk[133] = rk[135] = rk[137] = bits.RotateLeft32(rk[127] + delta[2][23], 3); + rk[139] = rk[141] = rk[143] = bits.RotateLeft32(rk[133] + delta[3][24], 3); + */ + tmp := bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*1:])+delta[0][1], 3) + rk[1] = tmp + rk[3] = tmp + rk[5] = tmp + + for i := 1; i <= 23; i++ { + tmp = bits.RotateLeft32(rk[(i-1)*6+1]+delta[i%4][i+1], 3) + + rk[i*6+1] = tmp + rk[i*6+3] = tmp + rk[i*6+5] = tmp + } + + rk[2] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*2:])+delta[0][2], 6) + rk[8] = bits.RotateLeft32(rk[2]+delta[1][3], 6) + rk[14] = bits.RotateLeft32(rk[8]+delta[2][4], 6) + rk[20] = bits.RotateLeft32(rk[14]+delta[3][5], 6) + rk[26] = bits.RotateLeft32(rk[20]+delta[0][6], 6) + rk[32] = bits.RotateLeft32(rk[26]+delta[1][7], 6) + rk[38] = bits.RotateLeft32(rk[32]+delta[2][8], 6) + rk[44] = bits.RotateLeft32(rk[38]+delta[3][9], 6) + rk[50] = bits.RotateLeft32(rk[44]+delta[0][10], 6) + rk[56] = bits.RotateLeft32(rk[50]+delta[1][11], 6) + rk[62] = bits.RotateLeft32(rk[56]+delta[2][12], 6) + rk[68] = bits.RotateLeft32(rk[62]+delta[3][13], 6) + rk[74] = bits.RotateLeft32(rk[68]+delta[0][14], 6) + rk[80] = bits.RotateLeft32(rk[74]+delta[1][15], 6) + rk[86] = bits.RotateLeft32(rk[80]+delta[2][16], 6) + rk[92] = bits.RotateLeft32(rk[86]+delta[3][17], 6) + rk[98] = bits.RotateLeft32(rk[92]+delta[0][18], 6) + rk[104] = bits.RotateLeft32(rk[98]+delta[1][19], 6) + rk[110] = bits.RotateLeft32(rk[104]+delta[2][20], 6) + rk[116] = bits.RotateLeft32(rk[110]+delta[3][21], 6) + rk[122] = bits.RotateLeft32(rk[116]+delta[0][22], 6) + rk[128] = bits.RotateLeft32(rk[122]+delta[1][23], 6) + rk[134] = bits.RotateLeft32(rk[128]+delta[2][24], 6) + rk[140] = bits.RotateLeft32(rk[134]+delta[3][25], 6) + + rk[4] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*3:])+delta[0][3], 11) + rk[10] = bits.RotateLeft32(rk[4]+delta[1][4], 11) + rk[16] = bits.RotateLeft32(rk[10]+delta[2][5], 11) + rk[22] = bits.RotateLeft32(rk[16]+delta[3][6], 11) + rk[28] = bits.RotateLeft32(rk[22]+delta[0][7], 11) + rk[34] = bits.RotateLeft32(rk[28]+delta[1][8], 11) + rk[40] = bits.RotateLeft32(rk[34]+delta[2][9], 11) + rk[46] = bits.RotateLeft32(rk[40]+delta[3][10], 11) + rk[52] = bits.RotateLeft32(rk[46]+delta[0][11], 11) + rk[58] = bits.RotateLeft32(rk[52]+delta[1][12], 11) + rk[64] = bits.RotateLeft32(rk[58]+delta[2][13], 11) + rk[70] = bits.RotateLeft32(rk[64]+delta[3][14], 11) + rk[76] = bits.RotateLeft32(rk[70]+delta[0][15], 11) + rk[82] = bits.RotateLeft32(rk[76]+delta[1][16], 11) + rk[88] = bits.RotateLeft32(rk[82]+delta[2][17], 11) + rk[94] = bits.RotateLeft32(rk[88]+delta[3][18], 11) + rk[100] = bits.RotateLeft32(rk[94]+delta[0][19], 11) + rk[106] = bits.RotateLeft32(rk[100]+delta[1][20], 11) + rk[112] = bits.RotateLeft32(rk[106]+delta[2][21], 11) + rk[118] = bits.RotateLeft32(rk[112]+delta[3][22], 11) + rk[124] = bits.RotateLeft32(rk[118]+delta[0][23], 11) + rk[130] = bits.RotateLeft32(rk[124]+delta[1][24], 11) + rk[136] = bits.RotateLeft32(rk[130]+delta[2][25], 11) + rk[142] = bits.RotateLeft32(rk[136]+delta[3][26], 11) + break + + case 24: + rk[0] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*0:])+delta[0][0], 1) + rk[6] = bits.RotateLeft32(rk[0]+delta[1][1], 1) + rk[12] = bits.RotateLeft32(rk[6]+delta[2][2], 1) + rk[18] = bits.RotateLeft32(rk[12]+delta[3][3], 1) + rk[24] = bits.RotateLeft32(rk[18]+delta[4][4], 1) + rk[30] = bits.RotateLeft32(rk[24]+delta[5][5], 1) + rk[36] = bits.RotateLeft32(rk[30]+delta[0][6], 1) + rk[42] = bits.RotateLeft32(rk[36]+delta[1][7], 1) + rk[48] = bits.RotateLeft32(rk[42]+delta[2][8], 1) + rk[54] = bits.RotateLeft32(rk[48]+delta[3][9], 1) + rk[60] = bits.RotateLeft32(rk[54]+delta[4][10], 1) + rk[66] = bits.RotateLeft32(rk[60]+delta[5][11], 1) + rk[72] = bits.RotateLeft32(rk[66]+delta[0][12], 1) + rk[78] = bits.RotateLeft32(rk[72]+delta[1][13], 1) + rk[84] = bits.RotateLeft32(rk[78]+delta[2][14], 1) + rk[90] = bits.RotateLeft32(rk[84]+delta[3][15], 1) + rk[96] = bits.RotateLeft32(rk[90]+delta[4][16], 1) + rk[102] = bits.RotateLeft32(rk[96]+delta[5][17], 1) + rk[108] = bits.RotateLeft32(rk[102]+delta[0][18], 1) + rk[114] = bits.RotateLeft32(rk[108]+delta[1][19], 1) + rk[120] = bits.RotateLeft32(rk[114]+delta[2][20], 1) + rk[126] = bits.RotateLeft32(rk[120]+delta[3][21], 1) + rk[132] = bits.RotateLeft32(rk[126]+delta[4][22], 1) + rk[138] = bits.RotateLeft32(rk[132]+delta[5][23], 1) + rk[144] = bits.RotateLeft32(rk[138]+delta[0][24], 1) + rk[150] = bits.RotateLeft32(rk[144]+delta[1][25], 1) + rk[156] = bits.RotateLeft32(rk[150]+delta[2][26], 1) + rk[162] = bits.RotateLeft32(rk[156]+delta[3][27], 1) + + rk[1] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*1:])+delta[0][1], 3) + rk[7] = bits.RotateLeft32(rk[1]+delta[1][2], 3) + rk[13] = bits.RotateLeft32(rk[7]+delta[2][3], 3) + rk[19] = bits.RotateLeft32(rk[13]+delta[3][4], 3) + rk[25] = bits.RotateLeft32(rk[19]+delta[4][5], 3) + rk[31] = bits.RotateLeft32(rk[25]+delta[5][6], 3) + rk[37] = bits.RotateLeft32(rk[31]+delta[0][7], 3) + rk[43] = bits.RotateLeft32(rk[37]+delta[1][8], 3) + rk[49] = bits.RotateLeft32(rk[43]+delta[2][9], 3) + rk[55] = bits.RotateLeft32(rk[49]+delta[3][10], 3) + rk[61] = bits.RotateLeft32(rk[55]+delta[4][11], 3) + rk[67] = bits.RotateLeft32(rk[61]+delta[5][12], 3) + rk[73] = bits.RotateLeft32(rk[67]+delta[0][13], 3) + rk[79] = bits.RotateLeft32(rk[73]+delta[1][14], 3) + rk[85] = bits.RotateLeft32(rk[79]+delta[2][15], 3) + rk[91] = bits.RotateLeft32(rk[85]+delta[3][16], 3) + rk[97] = bits.RotateLeft32(rk[91]+delta[4][17], 3) + rk[103] = bits.RotateLeft32(rk[97]+delta[5][18], 3) + rk[109] = bits.RotateLeft32(rk[103]+delta[0][19], 3) + rk[115] = bits.RotateLeft32(rk[109]+delta[1][20], 3) + rk[121] = bits.RotateLeft32(rk[115]+delta[2][21], 3) + rk[127] = bits.RotateLeft32(rk[121]+delta[3][22], 3) + rk[133] = bits.RotateLeft32(rk[127]+delta[4][23], 3) + rk[139] = bits.RotateLeft32(rk[133]+delta[5][24], 3) + rk[145] = bits.RotateLeft32(rk[139]+delta[0][25], 3) + rk[151] = bits.RotateLeft32(rk[145]+delta[1][26], 3) + rk[157] = bits.RotateLeft32(rk[151]+delta[2][27], 3) + rk[163] = bits.RotateLeft32(rk[157]+delta[3][28], 3) + + rk[2] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*2:])+delta[0][2], 6) + rk[8] = bits.RotateLeft32(rk[2]+delta[1][3], 6) + rk[14] = bits.RotateLeft32(rk[8]+delta[2][4], 6) + rk[20] = bits.RotateLeft32(rk[14]+delta[3][5], 6) + rk[26] = bits.RotateLeft32(rk[20]+delta[4][6], 6) + rk[32] = bits.RotateLeft32(rk[26]+delta[5][7], 6) + rk[38] = bits.RotateLeft32(rk[32]+delta[0][8], 6) + rk[44] = bits.RotateLeft32(rk[38]+delta[1][9], 6) + rk[50] = bits.RotateLeft32(rk[44]+delta[2][10], 6) + rk[56] = bits.RotateLeft32(rk[50]+delta[3][11], 6) + rk[62] = bits.RotateLeft32(rk[56]+delta[4][12], 6) + rk[68] = bits.RotateLeft32(rk[62]+delta[5][13], 6) + rk[74] = bits.RotateLeft32(rk[68]+delta[0][14], 6) + rk[80] = bits.RotateLeft32(rk[74]+delta[1][15], 6) + rk[86] = bits.RotateLeft32(rk[80]+delta[2][16], 6) + rk[92] = bits.RotateLeft32(rk[86]+delta[3][17], 6) + rk[98] = bits.RotateLeft32(rk[92]+delta[4][18], 6) + rk[104] = bits.RotateLeft32(rk[98]+delta[5][19], 6) + rk[110] = bits.RotateLeft32(rk[104]+delta[0][20], 6) + rk[116] = bits.RotateLeft32(rk[110]+delta[1][21], 6) + rk[122] = bits.RotateLeft32(rk[116]+delta[2][22], 6) + rk[128] = bits.RotateLeft32(rk[122]+delta[3][23], 6) + rk[134] = bits.RotateLeft32(rk[128]+delta[4][24], 6) + rk[140] = bits.RotateLeft32(rk[134]+delta[5][25], 6) + rk[146] = bits.RotateLeft32(rk[140]+delta[0][26], 6) + rk[152] = bits.RotateLeft32(rk[146]+delta[1][27], 6) + rk[158] = bits.RotateLeft32(rk[152]+delta[2][28], 6) + rk[164] = bits.RotateLeft32(rk[158]+delta[3][29], 6) + + rk[3] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*3:])+delta[0][3], 11) + rk[9] = bits.RotateLeft32(rk[3]+delta[1][4], 11) + rk[15] = bits.RotateLeft32(rk[9]+delta[2][5], 11) + rk[21] = bits.RotateLeft32(rk[15]+delta[3][6], 11) + rk[27] = bits.RotateLeft32(rk[21]+delta[4][7], 11) + rk[33] = bits.RotateLeft32(rk[27]+delta[5][8], 11) + rk[39] = bits.RotateLeft32(rk[33]+delta[0][9], 11) + rk[45] = bits.RotateLeft32(rk[39]+delta[1][10], 11) + rk[51] = bits.RotateLeft32(rk[45]+delta[2][11], 11) + rk[57] = bits.RotateLeft32(rk[51]+delta[3][12], 11) + rk[63] = bits.RotateLeft32(rk[57]+delta[4][13], 11) + rk[69] = bits.RotateLeft32(rk[63]+delta[5][14], 11) + rk[75] = bits.RotateLeft32(rk[69]+delta[0][15], 11) + rk[81] = bits.RotateLeft32(rk[75]+delta[1][16], 11) + rk[87] = bits.RotateLeft32(rk[81]+delta[2][17], 11) + rk[93] = bits.RotateLeft32(rk[87]+delta[3][18], 11) + rk[99] = bits.RotateLeft32(rk[93]+delta[4][19], 11) + rk[105] = bits.RotateLeft32(rk[99]+delta[5][20], 11) + rk[111] = bits.RotateLeft32(rk[105]+delta[0][21], 11) + rk[117] = bits.RotateLeft32(rk[111]+delta[1][22], 11) + rk[123] = bits.RotateLeft32(rk[117]+delta[2][23], 11) + rk[129] = bits.RotateLeft32(rk[123]+delta[3][24], 11) + rk[135] = bits.RotateLeft32(rk[129]+delta[4][25], 11) + rk[141] = bits.RotateLeft32(rk[135]+delta[5][26], 11) + rk[147] = bits.RotateLeft32(rk[141]+delta[0][27], 11) + rk[153] = bits.RotateLeft32(rk[147]+delta[1][28], 11) + rk[159] = bits.RotateLeft32(rk[153]+delta[2][29], 11) + rk[165] = bits.RotateLeft32(rk[159]+delta[3][30], 11) + + rk[4] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*4:])+delta[0][4], 13) + rk[10] = bits.RotateLeft32(rk[4]+delta[1][5], 13) + rk[16] = bits.RotateLeft32(rk[10]+delta[2][6], 13) + rk[22] = bits.RotateLeft32(rk[16]+delta[3][7], 13) + rk[28] = bits.RotateLeft32(rk[22]+delta[4][8], 13) + rk[34] = bits.RotateLeft32(rk[28]+delta[5][9], 13) + rk[40] = bits.RotateLeft32(rk[34]+delta[0][10], 13) + rk[46] = bits.RotateLeft32(rk[40]+delta[1][11], 13) + rk[52] = bits.RotateLeft32(rk[46]+delta[2][12], 13) + rk[58] = bits.RotateLeft32(rk[52]+delta[3][13], 13) + rk[64] = bits.RotateLeft32(rk[58]+delta[4][14], 13) + rk[70] = bits.RotateLeft32(rk[64]+delta[5][15], 13) + rk[76] = bits.RotateLeft32(rk[70]+delta[0][16], 13) + rk[82] = bits.RotateLeft32(rk[76]+delta[1][17], 13) + rk[88] = bits.RotateLeft32(rk[82]+delta[2][18], 13) + rk[94] = bits.RotateLeft32(rk[88]+delta[3][19], 13) + rk[100] = bits.RotateLeft32(rk[94]+delta[4][20], 13) + rk[106] = bits.RotateLeft32(rk[100]+delta[5][21], 13) + rk[112] = bits.RotateLeft32(rk[106]+delta[0][22], 13) + rk[118] = bits.RotateLeft32(rk[112]+delta[1][23], 13) + rk[124] = bits.RotateLeft32(rk[118]+delta[2][24], 13) + rk[130] = bits.RotateLeft32(rk[124]+delta[3][25], 13) + rk[136] = bits.RotateLeft32(rk[130]+delta[4][26], 13) + rk[142] = bits.RotateLeft32(rk[136]+delta[5][27], 13) + rk[148] = bits.RotateLeft32(rk[142]+delta[0][28], 13) + rk[154] = bits.RotateLeft32(rk[148]+delta[1][29], 13) + rk[160] = bits.RotateLeft32(rk[154]+delta[2][30], 13) + rk[166] = bits.RotateLeft32(rk[160]+delta[3][31], 13) + + rk[5] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*5:])+delta[0][5], 17) + rk[11] = bits.RotateLeft32(rk[5]+delta[1][6], 17) + rk[17] = bits.RotateLeft32(rk[11]+delta[2][7], 17) + rk[23] = bits.RotateLeft32(rk[17]+delta[3][8], 17) + rk[29] = bits.RotateLeft32(rk[23]+delta[4][9], 17) + rk[35] = bits.RotateLeft32(rk[29]+delta[5][10], 17) + rk[41] = bits.RotateLeft32(rk[35]+delta[0][11], 17) + rk[47] = bits.RotateLeft32(rk[41]+delta[1][12], 17) + rk[53] = bits.RotateLeft32(rk[47]+delta[2][13], 17) + rk[59] = bits.RotateLeft32(rk[53]+delta[3][14], 17) + rk[65] = bits.RotateLeft32(rk[59]+delta[4][15], 17) + rk[71] = bits.RotateLeft32(rk[65]+delta[5][16], 17) + rk[77] = bits.RotateLeft32(rk[71]+delta[0][17], 17) + rk[83] = bits.RotateLeft32(rk[77]+delta[1][18], 17) + rk[89] = bits.RotateLeft32(rk[83]+delta[2][19], 17) + rk[95] = bits.RotateLeft32(rk[89]+delta[3][20], 17) + rk[101] = bits.RotateLeft32(rk[95]+delta[4][21], 17) + rk[107] = bits.RotateLeft32(rk[101]+delta[5][22], 17) + rk[113] = bits.RotateLeft32(rk[107]+delta[0][23], 17) + rk[119] = bits.RotateLeft32(rk[113]+delta[1][24], 17) + rk[125] = bits.RotateLeft32(rk[119]+delta[2][25], 17) + rk[131] = bits.RotateLeft32(rk[125]+delta[3][26], 17) + rk[137] = bits.RotateLeft32(rk[131]+delta[4][27], 17) + rk[143] = bits.RotateLeft32(rk[137]+delta[5][28], 17) + rk[149] = bits.RotateLeft32(rk[143]+delta[0][29], 17) + rk[155] = bits.RotateLeft32(rk[149]+delta[1][30], 17) + rk[161] = bits.RotateLeft32(rk[155]+delta[2][31], 17) + rk[167] = bits.RotateLeft32(rk[161]+delta[3][0], 17) + break + + case 32: + rk[0] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*0:])+delta[0][0], 1) + rk[8] = bits.RotateLeft32(rk[0]+delta[1][3], 6) + rk[16] = bits.RotateLeft32(rk[8]+delta[2][6], 13) + rk[24] = bits.RotateLeft32(rk[16]+delta[4][4], 1) + rk[32] = bits.RotateLeft32(rk[24]+delta[5][7], 6) + rk[40] = bits.RotateLeft32(rk[32]+delta[6][10], 13) + rk[48] = bits.RotateLeft32(rk[40]+delta[0][8], 1) + rk[56] = bits.RotateLeft32(rk[48]+delta[1][11], 6) + rk[64] = bits.RotateLeft32(rk[56]+delta[2][14], 13) + rk[72] = bits.RotateLeft32(rk[64]+delta[4][12], 1) + rk[80] = bits.RotateLeft32(rk[72]+delta[5][15], 6) + rk[88] = bits.RotateLeft32(rk[80]+delta[6][18], 13) + rk[96] = bits.RotateLeft32(rk[88]+delta[0][16], 1) + rk[104] = bits.RotateLeft32(rk[96]+delta[1][19], 6) + rk[112] = bits.RotateLeft32(rk[104]+delta[2][22], 13) + rk[120] = bits.RotateLeft32(rk[112]+delta[4][20], 1) + rk[128] = bits.RotateLeft32(rk[120]+delta[5][23], 6) + rk[136] = bits.RotateLeft32(rk[128]+delta[6][26], 13) + rk[144] = bits.RotateLeft32(rk[136]+delta[0][24], 1) + rk[152] = bits.RotateLeft32(rk[144]+delta[1][27], 6) + rk[160] = bits.RotateLeft32(rk[152]+delta[2][30], 13) + rk[168] = bits.RotateLeft32(rk[160]+delta[4][28], 1) + rk[176] = bits.RotateLeft32(rk[168]+delta[5][31], 6) + rk[184] = bits.RotateLeft32(rk[176]+delta[6][2], 13) + + rk[1] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*1:])+delta[0][1], 3) + rk[9] = bits.RotateLeft32(rk[1]+delta[1][4], 11) + rk[17] = bits.RotateLeft32(rk[9]+delta[2][7], 17) + rk[25] = bits.RotateLeft32(rk[17]+delta[4][5], 3) + rk[33] = bits.RotateLeft32(rk[25]+delta[5][8], 11) + rk[41] = bits.RotateLeft32(rk[33]+delta[6][11], 17) + rk[49] = bits.RotateLeft32(rk[41]+delta[0][9], 3) + rk[57] = bits.RotateLeft32(rk[49]+delta[1][12], 11) + rk[65] = bits.RotateLeft32(rk[57]+delta[2][15], 17) + rk[73] = bits.RotateLeft32(rk[65]+delta[4][13], 3) + rk[81] = bits.RotateLeft32(rk[73]+delta[5][16], 11) + rk[89] = bits.RotateLeft32(rk[81]+delta[6][19], 17) + rk[97] = bits.RotateLeft32(rk[89]+delta[0][17], 3) + rk[105] = bits.RotateLeft32(rk[97]+delta[1][20], 11) + rk[113] = bits.RotateLeft32(rk[105]+delta[2][23], 17) + rk[121] = bits.RotateLeft32(rk[113]+delta[4][21], 3) + rk[129] = bits.RotateLeft32(rk[121]+delta[5][24], 11) + rk[137] = bits.RotateLeft32(rk[129]+delta[6][27], 17) + rk[145] = bits.RotateLeft32(rk[137]+delta[0][25], 3) + rk[153] = bits.RotateLeft32(rk[145]+delta[1][28], 11) + rk[161] = bits.RotateLeft32(rk[153]+delta[2][31], 17) + rk[169] = bits.RotateLeft32(rk[161]+delta[4][29], 3) + rk[177] = bits.RotateLeft32(rk[169]+delta[5][0], 11) + rk[185] = bits.RotateLeft32(rk[177]+delta[6][3], 17) + + rk[2] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*2:])+delta[0][2], 6) + rk[10] = bits.RotateLeft32(rk[2]+delta[1][5], 13) + rk[18] = bits.RotateLeft32(rk[10]+delta[3][3], 1) + rk[26] = bits.RotateLeft32(rk[18]+delta[4][6], 6) + rk[34] = bits.RotateLeft32(rk[26]+delta[5][9], 13) + rk[42] = bits.RotateLeft32(rk[34]+delta[7][7], 1) + rk[50] = bits.RotateLeft32(rk[42]+delta[0][10], 6) + rk[58] = bits.RotateLeft32(rk[50]+delta[1][13], 13) + rk[66] = bits.RotateLeft32(rk[58]+delta[3][11], 1) + rk[74] = bits.RotateLeft32(rk[66]+delta[4][14], 6) + rk[82] = bits.RotateLeft32(rk[74]+delta[5][17], 13) + rk[90] = bits.RotateLeft32(rk[82]+delta[7][15], 1) + rk[98] = bits.RotateLeft32(rk[90]+delta[0][18], 6) + rk[106] = bits.RotateLeft32(rk[98]+delta[1][21], 13) + rk[114] = bits.RotateLeft32(rk[106]+delta[3][19], 1) + rk[122] = bits.RotateLeft32(rk[114]+delta[4][22], 6) + rk[130] = bits.RotateLeft32(rk[122]+delta[5][25], 13) + rk[138] = bits.RotateLeft32(rk[130]+delta[7][23], 1) + rk[146] = bits.RotateLeft32(rk[138]+delta[0][26], 6) + rk[154] = bits.RotateLeft32(rk[146]+delta[1][29], 13) + rk[162] = bits.RotateLeft32(rk[154]+delta[3][27], 1) + rk[170] = bits.RotateLeft32(rk[162]+delta[4][30], 6) + rk[178] = bits.RotateLeft32(rk[170]+delta[5][1], 13) + rk[186] = bits.RotateLeft32(rk[178]+delta[7][31], 1) + + rk[3] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*3:])+delta[0][3], 11) + rk[11] = bits.RotateLeft32(rk[3]+delta[1][6], 17) + rk[19] = bits.RotateLeft32(rk[11]+delta[3][4], 3) + rk[27] = bits.RotateLeft32(rk[19]+delta[4][7], 11) + rk[35] = bits.RotateLeft32(rk[27]+delta[5][10], 17) + rk[43] = bits.RotateLeft32(rk[35]+delta[7][8], 3) + rk[51] = bits.RotateLeft32(rk[43]+delta[0][11], 11) + rk[59] = bits.RotateLeft32(rk[51]+delta[1][14], 17) + rk[67] = bits.RotateLeft32(rk[59]+delta[3][12], 3) + rk[75] = bits.RotateLeft32(rk[67]+delta[4][15], 11) + rk[83] = bits.RotateLeft32(rk[75]+delta[5][18], 17) + rk[91] = bits.RotateLeft32(rk[83]+delta[7][16], 3) + rk[99] = bits.RotateLeft32(rk[91]+delta[0][19], 11) + rk[107] = bits.RotateLeft32(rk[99]+delta[1][22], 17) + rk[115] = bits.RotateLeft32(rk[107]+delta[3][20], 3) + rk[123] = bits.RotateLeft32(rk[115]+delta[4][23], 11) + rk[131] = bits.RotateLeft32(rk[123]+delta[5][26], 17) + rk[139] = bits.RotateLeft32(rk[131]+delta[7][24], 3) + rk[147] = bits.RotateLeft32(rk[139]+delta[0][27], 11) + rk[155] = bits.RotateLeft32(rk[147]+delta[1][30], 17) + rk[163] = bits.RotateLeft32(rk[155]+delta[3][28], 3) + rk[171] = bits.RotateLeft32(rk[163]+delta[4][31], 11) + rk[179] = bits.RotateLeft32(rk[171]+delta[5][2], 17) + rk[187] = bits.RotateLeft32(rk[179]+delta[7][0], 3) + + rk[4] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*4:])+delta[0][4], 13) + rk[12] = bits.RotateLeft32(rk[4]+delta[2][2], 1) + rk[20] = bits.RotateLeft32(rk[12]+delta[3][5], 6) + rk[28] = bits.RotateLeft32(rk[20]+delta[4][8], 13) + rk[36] = bits.RotateLeft32(rk[28]+delta[6][6], 1) + rk[44] = bits.RotateLeft32(rk[36]+delta[7][9], 6) + rk[52] = bits.RotateLeft32(rk[44]+delta[0][12], 13) + rk[60] = bits.RotateLeft32(rk[52]+delta[2][10], 1) + rk[68] = bits.RotateLeft32(rk[60]+delta[3][13], 6) + rk[76] = bits.RotateLeft32(rk[68]+delta[4][16], 13) + rk[84] = bits.RotateLeft32(rk[76]+delta[6][14], 1) + rk[92] = bits.RotateLeft32(rk[84]+delta[7][17], 6) + rk[100] = bits.RotateLeft32(rk[92]+delta[0][20], 13) + rk[108] = bits.RotateLeft32(rk[100]+delta[2][18], 1) + rk[116] = bits.RotateLeft32(rk[108]+delta[3][21], 6) + rk[124] = bits.RotateLeft32(rk[116]+delta[4][24], 13) + rk[132] = bits.RotateLeft32(rk[124]+delta[6][22], 1) + rk[140] = bits.RotateLeft32(rk[132]+delta[7][25], 6) + rk[148] = bits.RotateLeft32(rk[140]+delta[0][28], 13) + rk[156] = bits.RotateLeft32(rk[148]+delta[2][26], 1) + rk[164] = bits.RotateLeft32(rk[156]+delta[3][29], 6) + rk[172] = bits.RotateLeft32(rk[164]+delta[4][0], 13) + rk[180] = bits.RotateLeft32(rk[172]+delta[6][30], 1) + rk[188] = bits.RotateLeft32(rk[180]+delta[7][1], 6) + + rk[5] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*5:])+delta[0][5], 17) + rk[13] = bits.RotateLeft32(rk[5]+delta[2][3], 3) + rk[21] = bits.RotateLeft32(rk[13]+delta[3][6], 11) + rk[29] = bits.RotateLeft32(rk[21]+delta[4][9], 17) + rk[37] = bits.RotateLeft32(rk[29]+delta[6][7], 3) + rk[45] = bits.RotateLeft32(rk[37]+delta[7][10], 11) + rk[53] = bits.RotateLeft32(rk[45]+delta[0][13], 17) + rk[61] = bits.RotateLeft32(rk[53]+delta[2][11], 3) + rk[69] = bits.RotateLeft32(rk[61]+delta[3][14], 11) + rk[77] = bits.RotateLeft32(rk[69]+delta[4][17], 17) + rk[85] = bits.RotateLeft32(rk[77]+delta[6][15], 3) + rk[93] = bits.RotateLeft32(rk[85]+delta[7][18], 11) + rk[101] = bits.RotateLeft32(rk[93]+delta[0][21], 17) + rk[109] = bits.RotateLeft32(rk[101]+delta[2][19], 3) + rk[117] = bits.RotateLeft32(rk[109]+delta[3][22], 11) + rk[125] = bits.RotateLeft32(rk[117]+delta[4][25], 17) + rk[133] = bits.RotateLeft32(rk[125]+delta[6][23], 3) + rk[141] = bits.RotateLeft32(rk[133]+delta[7][26], 11) + rk[149] = bits.RotateLeft32(rk[141]+delta[0][29], 17) + rk[157] = bits.RotateLeft32(rk[149]+delta[2][27], 3) + rk[165] = bits.RotateLeft32(rk[157]+delta[3][30], 11) + rk[173] = bits.RotateLeft32(rk[165]+delta[4][1], 17) + rk[181] = bits.RotateLeft32(rk[173]+delta[6][31], 3) + rk[189] = bits.RotateLeft32(rk[181]+delta[7][2], 11) + + rk[6] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*6:])+delta[1][1], 1) + rk[14] = bits.RotateLeft32(rk[6]+delta[2][4], 6) + rk[22] = bits.RotateLeft32(rk[14]+delta[3][7], 13) + rk[30] = bits.RotateLeft32(rk[22]+delta[5][5], 1) + rk[38] = bits.RotateLeft32(rk[30]+delta[6][8], 6) + rk[46] = bits.RotateLeft32(rk[38]+delta[7][11], 13) + rk[54] = bits.RotateLeft32(rk[46]+delta[1][9], 1) + rk[62] = bits.RotateLeft32(rk[54]+delta[2][12], 6) + rk[70] = bits.RotateLeft32(rk[62]+delta[3][15], 13) + rk[78] = bits.RotateLeft32(rk[70]+delta[5][13], 1) + rk[86] = bits.RotateLeft32(rk[78]+delta[6][16], 6) + rk[94] = bits.RotateLeft32(rk[86]+delta[7][19], 13) + rk[102] = bits.RotateLeft32(rk[94]+delta[1][17], 1) + rk[110] = bits.RotateLeft32(rk[102]+delta[2][20], 6) + rk[118] = bits.RotateLeft32(rk[110]+delta[3][23], 13) + rk[126] = bits.RotateLeft32(rk[118]+delta[5][21], 1) + rk[134] = bits.RotateLeft32(rk[126]+delta[6][24], 6) + rk[142] = bits.RotateLeft32(rk[134]+delta[7][27], 13) + rk[150] = bits.RotateLeft32(rk[142]+delta[1][25], 1) + rk[158] = bits.RotateLeft32(rk[150]+delta[2][28], 6) + rk[166] = bits.RotateLeft32(rk[158]+delta[3][31], 13) + rk[174] = bits.RotateLeft32(rk[166]+delta[5][29], 1) + rk[182] = bits.RotateLeft32(rk[174]+delta[6][0], 6) + rk[190] = bits.RotateLeft32(rk[182]+delta[7][3], 13) + + rk[7] = bits.RotateLeft32(binary.LittleEndian.Uint32(key[4*7:])+delta[1][2], 3) + rk[15] = bits.RotateLeft32(rk[7]+delta[2][5], 11) + rk[23] = bits.RotateLeft32(rk[15]+delta[3][8], 17) + rk[31] = bits.RotateLeft32(rk[23]+delta[5][6], 3) + rk[39] = bits.RotateLeft32(rk[31]+delta[6][9], 11) + rk[47] = bits.RotateLeft32(rk[39]+delta[7][12], 17) + rk[55] = bits.RotateLeft32(rk[47]+delta[1][10], 3) + rk[63] = bits.RotateLeft32(rk[55]+delta[2][13], 11) + rk[71] = bits.RotateLeft32(rk[63]+delta[3][16], 17) + rk[79] = bits.RotateLeft32(rk[71]+delta[5][14], 3) + rk[87] = bits.RotateLeft32(rk[79]+delta[6][17], 11) + rk[95] = bits.RotateLeft32(rk[87]+delta[7][20], 17) + rk[103] = bits.RotateLeft32(rk[95]+delta[1][18], 3) + rk[111] = bits.RotateLeft32(rk[103]+delta[2][21], 11) + rk[119] = bits.RotateLeft32(rk[111]+delta[3][24], 17) + rk[127] = bits.RotateLeft32(rk[119]+delta[5][22], 3) + rk[135] = bits.RotateLeft32(rk[127]+delta[6][25], 11) + rk[143] = bits.RotateLeft32(rk[135]+delta[7][28], 17) + rk[151] = bits.RotateLeft32(rk[143]+delta[1][26], 3) + rk[159] = bits.RotateLeft32(rk[151]+delta[2][29], 11) + rk[167] = bits.RotateLeft32(rk[159]+delta[3][0], 17) + rk[175] = bits.RotateLeft32(rk[167]+delta[5][30], 3) + rk[183] = bits.RotateLeft32(rk[175]+delta[6][1], 11) + rk[191] = bits.RotateLeft32(rk[183]+delta[7][4], 17) + break + } + + return (keyLen >> 1) + 16 +} + +func leaEnc1Go(ctx *leaContext, dst, src []byte) { + X0 := binary.LittleEndian.Uint32(src[4*0:]) + X1 := binary.LittleEndian.Uint32(src[4*1:]) + X2 := binary.LittleEndian.Uint32(src[4*2:]) + X3 := binary.LittleEndian.Uint32(src[4*3:]) + + X3 = bitsRotateRight32((X2^ctx.rk[4])+(X3^ctx.rk[5]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[2])+(X2^ctx.rk[3]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[0])+(X1^ctx.rk[1]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[10])+(X0^ctx.rk[11]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[8])+(X3^ctx.rk[9]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[6])+(X2^ctx.rk[7]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[16])+(X1^ctx.rk[17]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[14])+(X0^ctx.rk[15]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[12])+(X3^ctx.rk[13]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[22])+(X2^ctx.rk[23]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[20])+(X1^ctx.rk[21]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[18])+(X0^ctx.rk[19]), 9) + + X3 = bitsRotateRight32((X2^ctx.rk[28])+(X3^ctx.rk[29]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[26])+(X2^ctx.rk[27]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[24])+(X1^ctx.rk[25]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[34])+(X0^ctx.rk[35]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[32])+(X3^ctx.rk[33]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[30])+(X2^ctx.rk[31]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[40])+(X1^ctx.rk[41]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[38])+(X0^ctx.rk[39]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[36])+(X3^ctx.rk[37]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[46])+(X2^ctx.rk[47]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[44])+(X1^ctx.rk[45]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[42])+(X0^ctx.rk[43]), 9) + + X3 = bitsRotateRight32((X2^ctx.rk[52])+(X3^ctx.rk[53]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[50])+(X2^ctx.rk[51]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[48])+(X1^ctx.rk[49]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[58])+(X0^ctx.rk[59]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[56])+(X3^ctx.rk[57]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[54])+(X2^ctx.rk[55]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[64])+(X1^ctx.rk[65]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[62])+(X0^ctx.rk[63]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[60])+(X3^ctx.rk[61]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[70])+(X2^ctx.rk[71]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[68])+(X1^ctx.rk[69]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[66])+(X0^ctx.rk[67]), 9) + + X3 = bitsRotateRight32((X2^ctx.rk[76])+(X3^ctx.rk[77]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[74])+(X2^ctx.rk[75]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[72])+(X1^ctx.rk[73]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[82])+(X0^ctx.rk[83]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[80])+(X3^ctx.rk[81]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[78])+(X2^ctx.rk[79]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[88])+(X1^ctx.rk[89]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[86])+(X0^ctx.rk[87]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[84])+(X3^ctx.rk[85]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[94])+(X2^ctx.rk[95]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[92])+(X1^ctx.rk[93]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[90])+(X0^ctx.rk[91]), 9) + + X3 = bitsRotateRight32((X2^ctx.rk[100])+(X3^ctx.rk[101]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[98])+(X2^ctx.rk[99]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[96])+(X1^ctx.rk[97]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[106])+(X0^ctx.rk[107]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[104])+(X3^ctx.rk[105]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[102])+(X2^ctx.rk[103]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[112])+(X1^ctx.rk[113]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[110])+(X0^ctx.rk[111]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[108])+(X3^ctx.rk[109]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[118])+(X2^ctx.rk[119]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[116])+(X1^ctx.rk[117]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[114])+(X0^ctx.rk[115]), 9) + + X3 = bitsRotateRight32((X2^ctx.rk[124])+(X3^ctx.rk[125]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[122])+(X2^ctx.rk[123]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[120])+(X1^ctx.rk[121]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[130])+(X0^ctx.rk[131]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[128])+(X3^ctx.rk[129]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[126])+(X2^ctx.rk[127]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[136])+(X1^ctx.rk[137]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[134])+(X0^ctx.rk[135]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[132])+(X3^ctx.rk[133]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[142])+(X2^ctx.rk[143]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[140])+(X1^ctx.rk[141]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[138])+(X0^ctx.rk[139]), 9) + + if ctx.round > 24 { + X3 = bitsRotateRight32((X2^ctx.rk[148])+(X3^ctx.rk[149]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[146])+(X2^ctx.rk[147]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[144])+(X1^ctx.rk[145]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[154])+(X0^ctx.rk[155]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[152])+(X3^ctx.rk[153]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[150])+(X2^ctx.rk[151]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[160])+(X1^ctx.rk[161]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[158])+(X0^ctx.rk[159]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[156])+(X3^ctx.rk[157]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[166])+(X2^ctx.rk[167]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[164])+(X1^ctx.rk[165]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[162])+(X0^ctx.rk[163]), 9) + } + + if ctx.round > 28 { + X3 = bitsRotateRight32((X2^ctx.rk[172])+(X3^ctx.rk[173]), 3) + X2 = bitsRotateRight32((X1^ctx.rk[170])+(X2^ctx.rk[171]), 5) + X1 = bits.RotateLeft32((X0^ctx.rk[168])+(X1^ctx.rk[169]), 9) + X0 = bitsRotateRight32((X3^ctx.rk[178])+(X0^ctx.rk[179]), 3) + X3 = bitsRotateRight32((X2^ctx.rk[176])+(X3^ctx.rk[177]), 5) + X2 = bits.RotateLeft32((X1^ctx.rk[174])+(X2^ctx.rk[175]), 9) + X1 = bitsRotateRight32((X0^ctx.rk[184])+(X1^ctx.rk[185]), 3) + X0 = bitsRotateRight32((X3^ctx.rk[182])+(X0^ctx.rk[183]), 5) + X3 = bits.RotateLeft32((X2^ctx.rk[180])+(X3^ctx.rk[181]), 9) + X2 = bitsRotateRight32((X1^ctx.rk[190])+(X2^ctx.rk[191]), 3) + X1 = bitsRotateRight32((X0^ctx.rk[188])+(X1^ctx.rk[189]), 5) + X0 = bits.RotateLeft32((X3^ctx.rk[186])+(X0^ctx.rk[187]), 9) + } + + binary.LittleEndian.PutUint32(dst[4*0:], X0) + binary.LittleEndian.PutUint32(dst[4*1:], X1) + binary.LittleEndian.PutUint32(dst[4*2:], X2) + binary.LittleEndian.PutUint32(dst[4*3:], X3) +} + +func leaDec1Go(ctx *leaContext, dst, src []byte) { + X0 := binary.LittleEndian.Uint32(src[4*0:]) + X1 := binary.LittleEndian.Uint32(src[4*1:]) + X2 := binary.LittleEndian.Uint32(src[4*2:]) + X3 := binary.LittleEndian.Uint32(src[4*3:]) + + if ctx.round > 28 { + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[186])) ^ ctx.rk[187] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[188])) ^ ctx.rk[189] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[190])) ^ ctx.rk[191] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[180])) ^ ctx.rk[181] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[182])) ^ ctx.rk[183] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[184])) ^ ctx.rk[185] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[174])) ^ ctx.rk[175] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[176])) ^ ctx.rk[177] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[178])) ^ ctx.rk[179] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[168])) ^ ctx.rk[169] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[170])) ^ ctx.rk[171] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[172])) ^ ctx.rk[173] + } + + if ctx.round > 24 { + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[162])) ^ ctx.rk[163] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[164])) ^ ctx.rk[165] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[166])) ^ ctx.rk[167] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[156])) ^ ctx.rk[157] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[158])) ^ ctx.rk[159] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[160])) ^ ctx.rk[161] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[150])) ^ ctx.rk[151] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[152])) ^ ctx.rk[153] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[154])) ^ ctx.rk[155] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[144])) ^ ctx.rk[145] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[146])) ^ ctx.rk[147] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[148])) ^ ctx.rk[149] + } + + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[138])) ^ ctx.rk[139] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[140])) ^ ctx.rk[141] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[142])) ^ ctx.rk[143] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[132])) ^ ctx.rk[133] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[134])) ^ ctx.rk[135] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[136])) ^ ctx.rk[137] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[126])) ^ ctx.rk[127] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[128])) ^ ctx.rk[129] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[130])) ^ ctx.rk[131] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[120])) ^ ctx.rk[121] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[122])) ^ ctx.rk[123] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[124])) ^ ctx.rk[125] + + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[114])) ^ ctx.rk[115] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[116])) ^ ctx.rk[117] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[118])) ^ ctx.rk[119] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[108])) ^ ctx.rk[109] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[110])) ^ ctx.rk[111] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[112])) ^ ctx.rk[113] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[102])) ^ ctx.rk[103] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[104])) ^ ctx.rk[105] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[106])) ^ ctx.rk[107] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[96])) ^ ctx.rk[97] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[98])) ^ ctx.rk[99] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[100])) ^ ctx.rk[101] + + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[90])) ^ ctx.rk[91] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[92])) ^ ctx.rk[93] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[94])) ^ ctx.rk[95] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[84])) ^ ctx.rk[85] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[86])) ^ ctx.rk[87] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[88])) ^ ctx.rk[89] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[78])) ^ ctx.rk[79] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[80])) ^ ctx.rk[81] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[82])) ^ ctx.rk[83] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[72])) ^ ctx.rk[73] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[74])) ^ ctx.rk[75] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[76])) ^ ctx.rk[77] + + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[66])) ^ ctx.rk[67] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[68])) ^ ctx.rk[69] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[70])) ^ ctx.rk[71] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[60])) ^ ctx.rk[61] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[62])) ^ ctx.rk[63] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[64])) ^ ctx.rk[65] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[54])) ^ ctx.rk[55] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[56])) ^ ctx.rk[57] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[58])) ^ ctx.rk[59] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[48])) ^ ctx.rk[49] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[50])) ^ ctx.rk[51] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[52])) ^ ctx.rk[53] + + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[42])) ^ ctx.rk[43] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[44])) ^ ctx.rk[45] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[46])) ^ ctx.rk[47] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[36])) ^ ctx.rk[37] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[38])) ^ ctx.rk[39] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[40])) ^ ctx.rk[41] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[30])) ^ ctx.rk[31] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[32])) ^ ctx.rk[33] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[34])) ^ ctx.rk[35] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[24])) ^ ctx.rk[25] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[26])) ^ ctx.rk[27] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[28])) ^ ctx.rk[29] + + X0 = (bitsRotateRight32(X0, 9) - (X3 ^ ctx.rk[18])) ^ ctx.rk[19] + X1 = (bits.RotateLeft32(X1, 5) - (X0 ^ ctx.rk[20])) ^ ctx.rk[21] + X2 = (bits.RotateLeft32(X2, 3) - (X1 ^ ctx.rk[22])) ^ ctx.rk[23] + X3 = (bitsRotateRight32(X3, 9) - (X2 ^ ctx.rk[12])) ^ ctx.rk[13] + X0 = (bits.RotateLeft32(X0, 5) - (X3 ^ ctx.rk[14])) ^ ctx.rk[15] + X1 = (bits.RotateLeft32(X1, 3) - (X0 ^ ctx.rk[16])) ^ ctx.rk[17] + X2 = (bitsRotateRight32(X2, 9) - (X1 ^ ctx.rk[6])) ^ ctx.rk[7] + X3 = (bits.RotateLeft32(X3, 5) - (X2 ^ ctx.rk[8])) ^ ctx.rk[9] + X0 = (bits.RotateLeft32(X0, 3) - (X3 ^ ctx.rk[10])) ^ ctx.rk[11] + X1 = (bitsRotateRight32(X1, 9) - (X0 ^ ctx.rk[0])) ^ ctx.rk[1] + X2 = (bits.RotateLeft32(X2, 5) - (X1 ^ ctx.rk[2])) ^ ctx.rk[3] + X3 = (bits.RotateLeft32(X3, 3) - (X2 ^ ctx.rk[4])) ^ ctx.rk[5] + + binary.LittleEndian.PutUint32(dst[4*0:], X0) + binary.LittleEndian.PutUint32(dst[4*1:], X1) + binary.LittleEndian.PutUint32(dst[4*2:], X2) + binary.LittleEndian.PutUint32(dst[4*3:], X3) +} + +func leaEnc4Go(ctx *leaContext, dst, src []byte) { + leaEnc1Go(ctx, dst[BlockSize*0:], src[BlockSize*0:]) + leaEnc1Go(ctx, dst[BlockSize*1:], src[BlockSize*1:]) + leaEnc1Go(ctx, dst[BlockSize*2:], src[BlockSize*2:]) + leaEnc1Go(ctx, dst[BlockSize*3:], src[BlockSize*3:]) +} +func leaDec4Go(ctx *leaContext, dst, src []byte) { + leaDec1Go(ctx, dst[BlockSize*0:], src[BlockSize*0:]) + leaDec1Go(ctx, dst[BlockSize*1:], src[BlockSize*1:]) + leaDec1Go(ctx, dst[BlockSize*2:], src[BlockSize*2:]) + leaDec1Go(ctx, dst[BlockSize*3:], src[BlockSize*3:]) +} + +func leaEnc8Go(ctx *leaContext, dst, src []byte) { + leaEnc1Go(ctx, dst[BlockSize*0:], src[BlockSize*0:]) + leaEnc1Go(ctx, dst[BlockSize*1:], src[BlockSize*1:]) + leaEnc1Go(ctx, dst[BlockSize*2:], src[BlockSize*2:]) + leaEnc1Go(ctx, dst[BlockSize*3:], src[BlockSize*3:]) + leaEnc1Go(ctx, dst[BlockSize*4:], src[BlockSize*4:]) + leaEnc1Go(ctx, dst[BlockSize*5:], src[BlockSize*5:]) + leaEnc1Go(ctx, dst[BlockSize*6:], src[BlockSize*6:]) + leaEnc1Go(ctx, dst[BlockSize*7:], src[BlockSize*7:]) + +} +func leaDec8Go(ctx *leaContext, dst, src []byte) { + leaDec1Go(ctx, dst[BlockSize*0:], src[BlockSize*0:]) + leaDec1Go(ctx, dst[BlockSize*1:], src[BlockSize*1:]) + leaDec1Go(ctx, dst[BlockSize*2:], src[BlockSize*2:]) + leaDec1Go(ctx, dst[BlockSize*3:], src[BlockSize*3:]) + leaDec1Go(ctx, dst[BlockSize*4:], src[BlockSize*4:]) + leaDec1Go(ctx, dst[BlockSize*5:], src[BlockSize*5:]) + leaDec1Go(ctx, dst[BlockSize*6:], src[BlockSize*6:]) + leaDec1Go(ctx, dst[BlockSize*7:], src[BlockSize*7:]) +} diff --git a/lea/lea_generic_const.go b/lea/lea_generic_const.go new file mode 100644 index 0000000..6cb0b23 --- /dev/null +++ b/lea/lea_generic_const.go @@ -0,0 +1,62 @@ +package lea + +var ( + delta = [8][36]uint32{ + { + 0xc3efe9db, 0x87dfd3b7, 0x0fbfa76f, 0x1f7f4ede, 0x3efe9dbc, 0x7dfd3b78, 0xfbfa76f0, 0xf7f4ede1, + 0xefe9dbc3, 0xdfd3b787, 0xbfa76f0f, 0x7f4ede1f, 0xfe9dbc3e, 0xfd3b787d, 0xfa76f0fb, 0xf4ede1f7, + 0xe9dbc3ef, 0xd3b787df, 0xa76f0fbf, 0x4ede1f7f, 0x9dbc3efe, 0x3b787dfd, 0x76f0fbfa, 0xede1f7f4, + 0xdbc3efe9, 0xb787dfd3, 0x6f0fbfa7, 0xde1f7f4e, 0xbc3efe9d, 0x787dfd3b, 0xf0fbfa76, 0xe1f7f4eD, + 0xc3efe9db, 0x87dfd3b7, 0x0fbfa76f, 0x1f7f4ede, + }, + { + 0x44626b02, 0x88c4d604, 0x1189ac09, 0x23135812, 0x4626b024, 0x8c4d6048, 0x189ac091, 0x31358122, + 0x626b0244, 0xc4d60488, 0x89ac0911, 0x13581223, 0x26b02446, 0x4d60488c, 0x9ac09118, 0x35812231, + 0x6b024462, 0xd60488c4, 0xac091189, 0x58122313, 0xb0244626, 0x60488c4d, 0xc091189a, 0x81223135, + 0x0244626b, 0x0488c4d6, 0x091189ac, 0x12231358, 0x244626b0, 0x488c4d60, 0x91189ac0, 0x22313581, + 0x44626b02, 0x88c4d604, 0x1189ac09, 0x23135812, + }, + { + 0x79e27c8a, 0xf3c4f914, 0xe789f229, 0xcf13e453, 0x9e27c8a7, 0x3c4f914f, 0x789f229e, 0xf13e453c, + 0xe27c8a79, 0xc4f914f3, 0x89f229e7, 0x13e453cf, 0x27c8a79e, 0x4f914f3c, 0x9f229e78, 0x3e453cf1, + 0x7c8a79e2, 0xf914f3c4, 0xf229e789, 0xe453cf13, 0xc8a79e27, 0x914f3c4f, 0x229e789f, 0x453cf13e, + 0x8a79e27c, 0x14f3c4f9, 0x29e789f2, 0x53cf13e4, 0xa79e27c8, 0x4f3c4f91, 0x9e789f22, 0x3cf13e45, + 0x79e27c8a, 0xf3c4f914, 0xe789f229, 0xcf13e453, + }, + { + 0x78df30ec, 0xf1be61d8, 0xe37cc3b1, 0xc6f98763, 0x8df30ec7, 0x1be61d8f, 0x37cc3b1e, 0x6f98763c, + 0xdf30ec78, 0xbe61d8f1, 0x7cc3b1e3, 0xf98763c6, 0xf30ec78d, 0xe61d8f1b, 0xcc3b1e37, 0x98763c6f, + 0x30ec78df, 0x61d8f1be, 0xc3b1e37c, 0x8763c6f9, 0x0ec78df3, 0x1d8f1be6, 0x3b1e37cc, 0x763c6f98, + 0xec78df30, 0xd8f1be61, 0xb1e37cc3, 0x63c6f987, 0xc78df30e, 0x8f1be61d, 0x1e37cc3b, 0x3c6f9876, + 0x78df30ec, 0xf1be61d8, 0xe37cc3b1, 0xc6f98763, + }, + { + 0x715ea49e, 0xe2bd493c, 0xc57a9279, 0x8af524f3, 0x15ea49e7, 0x2bd493ce, 0x57a9279c, 0xaf524f38, + 0x5ea49e71, 0xbd493ce2, 0x7a9279c5, 0xf524f38a, 0xea49e715, 0xd493ce2b, 0xa9279c57, 0x524f38af, + 0xa49e715e, 0x493ce2bd, 0x9279c57a, 0x24f38af5, 0x49e715ea, 0x93ce2bd4, 0x279c57a9, 0x4f38af52, + 0x9e715ea4, 0x3ce2bd49, 0x79c57a92, 0xf38af524, 0xe715ea49, 0xce2bd493, 0x9c57a927, 0x38af524f, + 0x715ea49e, 0xe2bd493c, 0xc57a9279, 0x8af524f3, + }, + { + 0xc785da0a, 0x8f0bb415, 0x1e17682b, 0x3c2ed056, 0x785da0ac, 0xf0bb4158, 0xe17682b1, 0xc2ed0563, + 0x85da0ac7, 0x0bb4158f, 0x17682b1e, 0x2ed0563c, 0x5da0ac78, 0xbb4158f0, 0x7682b1e1, 0xed0563c2, + 0xda0ac785, 0xb4158f0b, 0x682b1e17, 0xd0563c2e, 0xa0ac785d, 0x4158f0bb, 0x82b1e176, 0x0563c2ed, + 0x0ac785da, 0x158f0bb4, 0x2b1e1768, 0x563c2ed0, 0xac785da0, 0x58f0bb41, 0xb1e17682, 0x63c2ed05, + 0xc785da0a, 0x8f0bb415, 0x1e17682b, 0x3c2ed056, + }, + { + 0xe04ef22a, 0xc09de455, 0x813bc8ab, 0x02779157, 0x04ef22ae, 0x09de455c, 0x13bc8ab8, 0x27791570, + 0x4ef22ae0, 0x9de455c0, 0x3bc8ab81, 0x77915702, 0xef22ae04, 0xde455c09, 0xbc8ab813, 0x79157027, + 0xf22ae04e, 0xe455c09d, 0xc8ab813b, 0x91570277, 0x22ae04ef, 0x455c09de, 0x8ab813bc, 0x15702779, + 0x2ae04ef2, 0x55c09de4, 0xab813bc8, 0x57027791, 0xae04ef22, 0x5c09de45, 0xb813bc8a, 0x70277915, + 0xe04ef22a, 0xc09de455, 0x813bc8ab, 0x02779157, + }, + { + 0xe5c40957, 0xcb8812af, 0x9710255f, 0x2e204abf, 0x5c40957e, 0xb8812afc, 0x710255f9, 0xe204abf2, + 0xc40957e5, 0x8812afcb, 0x10255f97, 0x204abf2e, 0x40957e5c, 0x812afcb8, 0x0255f971, 0x04abf2e2, + 0x0957e5c4, 0x12afcb88, 0x255f9710, 0x4abf2e20, 0x957e5c40, 0x2afcb881, 0x55f97102, 0xabf2e204, + 0x57e5c409, 0xafcb8812, 0x5f971025, 0xbf2e204a, 0x7e5c4095, 0xfcb8812a, 0xf9710255, 0xf2e204ab, + 0xe5c40957, 0xcb8812af, 0x9710255f, 0x2e204abf, + }, + } +) diff --git a/lea/lea_test.go b/lea/lea_test.go deleted file mode 100644 index 4195a0d..0000000 --- a/lea/lea_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package lea - -import ( - "log" - "testing" -) - -const ( - BlockSize = 16 -) - -var ( - ctx = &leaContext{ - round: 24, - } - src = make([]byte, BlockSize*8) -) - -func init() { - for idx := range src { - src[idx] = byte(idx) - } -} - -func Test_leaEnc4SSE2(t *testing.T) { - dst := make([]byte, BlockSize*4) - leaEnc4SSE2(ctx, dst, src) - log.Println(dst) -} - -func Test_leaEnc8AVX2(t *testing.T) { - dst := make([]byte, BlockSize*8) - leaEnc8AVX2(ctx, dst, src) - log.Println(dst) -} - -func Test_leaDec4SSE2(t *testing.T) { - dst := make([]byte, BlockSize*4) - leaDec4SSE2(ctx, dst, src) - log.Println(dst) -} - -func Test_leaDec8AVX2(t *testing.T) { - dst := make([]byte, BlockSize*8) - leaDec8AVX2(ctx, dst, src) - log.Println(dst) -} diff --git a/lea/test_128_test.go b/lea/test_128_test.go new file mode 100644 index 0000000..aa06156 --- /dev/null +++ b/lea/test_128_test.go @@ -0,0 +1,1396 @@ +package lea + +import ( + "testing" + + "kryptosimd/internal" +) + +func Test_LEA128_Encrypt_1Block_Go(t *testing.T) { testEncryptGo(t, testCases128) } +func Test_LEA128_Decrypt_1Block_Go(t *testing.T) { testDecryptGo(t, testCases128) } + +// 암호알고리즘 검증기준 V3.0 +// 테스트 벡터 +// LEA128(ECB)KAT.txt +var testCases128 = []testCase{ + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`80000000000000000000000000000000`), + Secure: internal.HB(`CE8DCF04DD60982B1D8F5035FD534DE2`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`C0000000000000000000000000000000`), + Secure: internal.HB(`196D7D801A91C862CB9FC739BB42EFB7`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`E0000000000000000000000000000000`), + Secure: internal.HB(`9AD0A3385AF3D8A2062B67E0B162F47D`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`F0000000000000000000000000000000`), + Secure: internal.HB(`825426C40976FB0E0DBEF135BE25CC25`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`F8000000000000000000000000000000`), + Secure: internal.HB(`C73F835D04197A4CAAF59AA0631A5A18`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FC000000000000000000000000000000`), + Secure: internal.HB(`D39F215E6AFC8FF9B1E24DB7A9A52903`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FE000000000000000000000000000000`), + Secure: internal.HB(`C1F0150CA39427CE9E1CB1A518136A4E`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FF000000000000000000000000000000`), + Secure: internal.HB(`AD2FBBEC64C2E74BC447D095EC02559B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FF800000000000000000000000000000`), + Secure: internal.HB(`E33EC75D3AF34FDD5D73BFE80AC92D6A`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFC00000000000000000000000000000`), + Secure: internal.HB(`08D7224CEEB038A21DB8F9960064DD62`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFE00000000000000000000000000000`), + Secure: internal.HB(`B5E1D33CF7C943B043B1A79341A3C1CE`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFF00000000000000000000000000000`), + Secure: internal.HB(`2D116F08A782B6D7D92D4A3AC3A28684`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFF80000000000000000000000000000`), + Secure: internal.HB(`EC426825FA172D5C77F43F5B02726D78`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFC0000000000000000000000000000`), + Secure: internal.HB(`E7CE58E798D74D5B685BD01FE222812E`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFE0000000000000000000000000000`), + Secure: internal.HB(`1CFE78BB1031F68B5A0173D205C6DCD6`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFF0000000000000000000000000000`), + Secure: internal.HB(`0539587EEF1313DBBCE5FF72F39FC84B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFF8000000000000000000000000000`), + Secure: internal.HB(`0BB8E2793180DB07A69291F781715716`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFC000000000000000000000000000`), + Secure: internal.HB(`35D5FF905F8E21C93E9016E92A42A989`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFE000000000000000000000000000`), + Secure: internal.HB(`665C1BEE9EA4A6C92D78D79C61C04B49`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFF000000000000000000000000000`), + Secure: internal.HB(`913C3BF589E9574A980015E814F1546C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFF800000000000000000000000000`), + Secure: internal.HB(`E45E2E58E4CB593368F47B660BAE753A`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFC00000000000000000000000000`), + Secure: internal.HB(`5E5F431561CCD084D50EFDEFEE9435F0`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFE00000000000000000000000000`), + Secure: internal.HB(`3153CAED5CD03086D25E1093A1DCD696`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFF00000000000000000000000000`), + Secure: internal.HB(`1E1BE9A93ADE255FC7DE97A15FF46B3C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFF80000000000000000000000000`), + Secure: internal.HB(`1DC80F97349CC8C762F955A8814B7BFE`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFC0000000000000000000000000`), + Secure: internal.HB(`F40FFEF66C6D12F5F8BB60D9F55CEFB9`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFE0000000000000000000000000`), + Secure: internal.HB(`7273C6A85F03B32E5FAB1E888126FBE5`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFF0000000000000000000000000`), + Secure: internal.HB(`292FB857EEC571C02F1C700DBF29F264`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFF8000000000000000000000000`), + Secure: internal.HB(`10414470B27127DF500D5D6ABA13E98D`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFC000000000000000000000000`), + Secure: internal.HB(`647CD211092AC976BDB9D8D472D469B3`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFE000000000000000000000000`), + Secure: internal.HB(`9DA369BB7A4CB52F0801A3F31C696D3D`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFF000000000000000000000000`), + Secure: internal.HB(`7172239F1DB2CA3B5817013FE020962C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFF800000000000000000000000`), + Secure: internal.HB(`5703C50CCDE97629DCCB93DE37E42505`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFC00000000000000000000000`), + Secure: internal.HB(`EE81F0BE060F5FE92E25C45E2DAE11CF`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFE00000000000000000000000`), + Secure: internal.HB(`AA9BDFEFF75CB631A830DAD94CCAF081`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFF00000000000000000000000`), + Secure: internal.HB(`755E2C24D72CF8091C6E90F2135A0173`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFF80000000000000000000000`), + Secure: internal.HB(`B0A09CC6C62F36FC79C82C6E10A6386B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFC0000000000000000000000`), + Secure: internal.HB(`D33D538DB001B329F8AC0F57DA4B74C6`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFE0000000000000000000000`), + Secure: internal.HB(`52B36860EC08372A799FE60E7521965C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFF0000000000000000000000`), + Secure: internal.HB(`25EEEA1CAE4AB33A859E95686ED18445`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFF8000000000000000000000`), + Secure: internal.HB(`53322C905A32B781AA6ED9F015403566`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFC000000000000000000000`), + Secure: internal.HB(`C7967E739354B1302FB4578FBD725842`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFE000000000000000000000`), + Secure: internal.HB(`843BB2771C90A0E21DB399E995F022F5`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFF000000000000000000000`), + Secure: internal.HB(`0183A2E6FFAA00A88E72EBC1807731FF`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFF800000000000000000000`), + Secure: internal.HB(`59CDA812AD3BABE290104BC81DB03F34`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFC00000000000000000000`), + Secure: internal.HB(`C30EACC58FA34F508E5ECC4DF6CB2DE9`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFE00000000000000000000`), + Secure: internal.HB(`A77CFA7CE4DD1065776DFA622679349F`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFF00000000000000000000`), + Secure: internal.HB(`4276CFB138CCD8E00954E9A29D25B8B9`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFF80000000000000000000`), + Secure: internal.HB(`84BA1DB1E95875AF74EDFE8D1BFDC571`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFC0000000000000000000`), + Secure: internal.HB(`FDD6291756537136C90BA3EE718B8CFB`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFE0000000000000000000`), + Secure: internal.HB(`F7F13E1D62367630C7F9E9499873E9C0`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFF0000000000000000000`), + Secure: internal.HB(`8F8E69C9FC90642D0A13A70E134756F7`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFF8000000000000000000`), + Secure: internal.HB(`BBBAFC3B8EA00DE2975FEF090B7C2167`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFC000000000000000000`), + Secure: internal.HB(`FB7217CCE67D123107A9E29B6D8F3C7B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFE000000000000000000`), + Secure: internal.HB(`0CC662EFF553B1D940CF75416DB667DA`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFF000000000000000000`), + Secure: internal.HB(`A42A3C5F269DA61B308578542C90173C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFF800000000000000000`), + Secure: internal.HB(`266963E494A1CA9BC46773A5A1FF68A4`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFC00000000000000000`), + Secure: internal.HB(`BBF8D055CD4C9413722625FB508AA310`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFE00000000000000000`), + Secure: internal.HB(`EA072663B2F702176D62D859CBB687B3`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFF00000000000000000`), + Secure: internal.HB(`87A2A798920788BB9A527AFD9294F550`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFF80000000000000000`), + Secure: internal.HB(`5F39F71BC6A297B017B6F6023F71AE4C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFC0000000000000000`), + Secure: internal.HB(`31A81D816EAAB0A363B81B5DC82DBD57`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFE0000000000000000`), + Secure: internal.HB(`BCDFEB36C74AE08F0277FD6D5AB9F685`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFF0000000000000000`), + Secure: internal.HB(`E49609E2FE47B273CEE4D0202B117E38`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFF8000000000000000`), + Secure: internal.HB(`ACAE35F0FF36A57058988B74C78E4483`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFC000000000000000`), + Secure: internal.HB(`A490DE333E151CF96C0BACF671F10829`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFE000000000000000`), + Secure: internal.HB(`5D1F93E7DFA3614442898442E8A2261C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFF000000000000000`), + Secure: internal.HB(`972924787763694BCB11249F2749A5AF`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFF800000000000000`), + Secure: internal.HB(`C8326E0477F1235BA61897AA8730D137`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFC00000000000000`), + Secure: internal.HB(`E8E1101790C8DCBC509C7F4AF17BD036`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFE00000000000000`), + Secure: internal.HB(`0C356BF0788AC4A3D755933B143087FD`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFF00000000000000`), + Secure: internal.HB(`DB1ADEB2E36CE367B09F77480EB813A2`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFF80000000000000`), + Secure: internal.HB(`CB0FB53ED9AEEBB0CD02FF97BB58D037`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFC0000000000000`), + Secure: internal.HB(`954F31F785EFCE400B47AE8EC3CD8FB7`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFE0000000000000`), + Secure: internal.HB(`F9451258416B3D64A4BAF2DC9EA591A8`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFF0000000000000`), + Secure: internal.HB(`8A686CCFD69078ADF0225E9502075563`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFF8000000000000`), + Secure: internal.HB(`5E5D7280C37B1DC096C06C2F9AD8ECDF`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFC000000000000`), + Secure: internal.HB(`C5D9A71D6C09392FC4870C0B0B7E1E8F`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFE000000000000`), + Secure: internal.HB(`D846CEADE7A6CD06619C08D9B7CDE682`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFF000000000000`), + Secure: internal.HB(`351BED04F949C3163198950565DBFF40`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFF800000000000`), + Secure: internal.HB(`4626CBDE45DDF87072BAD9634BAE6499`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFC00000000000`), + Secure: internal.HB(`79C031960F24622657B2E8A1F707C5DB`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFE00000000000`), + Secure: internal.HB(`74E2D62A3153E2A68804FC017C1BB4F5`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFF00000000000`), + Secure: internal.HB(`244FE1C0A89B3CD5A5ED9DD4C7B6BBCE`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFF80000000000`), + Secure: internal.HB(`06C3A6715172F7BD69217C5E302CBB5D`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFC0000000000`), + Secure: internal.HB(`34D185919D633211DCF0960FC6F5B252`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFE0000000000`), + Secure: internal.HB(`3114C1E01C092F4D40F09395D877826A`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF0000000000`), + Secure: internal.HB(`E01A250934DA0A743ECD17D123054099`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF8000000000`), + Secure: internal.HB(`F1C876EA91B4C2F02CEC0696FFD37F5F`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFC000000000`), + Secure: internal.HB(`BD06E4A45F3DD62CE9AC4B5F3E1BFB3F`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFE000000000`), + Secure: internal.HB(`3316FE34467E233AEEDDFF9CD367655D`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF000000000`), + Secure: internal.HB(`0AF6572CD29F895C4065230011A4CAE1`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF800000000`), + Secure: internal.HB(`5316EFF7892A30AC4817994369524BFC`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFC00000000`), + Secure: internal.HB(`C5CDDACDA663C11F9A6A72E7234347ED`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFE00000000`), + Secure: internal.HB(`40B2E96385B4ECE6CC025D1DDBB7D425`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF00000000`), + Secure: internal.HB(`BD9DDEF5A3F8F7594AE428A59F902AA6`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF80000000`), + Secure: internal.HB(`712071D3ADA6532D07A20D03AF649B88`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFC0000000`), + Secure: internal.HB(`8DDD1D809106399353B19B1C5BB2C067`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFE0000000`), + Secure: internal.HB(`11932D5C751F63349CE4A82D7809970B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF0000000`), + Secure: internal.HB(`D3140DED37A637F1E4E7B5180434313B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF8000000`), + Secure: internal.HB(`5B18BF419519DF77484619272BFE95F3`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFC000000`), + Secure: internal.HB(`DD1E816A72AF5B0BFA9C9498133E31F8`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFE000000`), + Secure: internal.HB(`0B334A72C3B59FBB7180C4E809A077A9`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF000000`), + Secure: internal.HB(`037F190320DEE1EEC2A586E6E2D97D87`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF800000`), + Secure: internal.HB(`9E2631B6B92CB108C9DE544FAFCD9D20`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFC00000`), + Secure: internal.HB(`D9ED3DCF946D65AAFCED541D227F89E9`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFE00000`), + Secure: internal.HB(`C4D856F41AE51F5B7A741A2407EC703B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF00000`), + Secure: internal.HB(`7070E50DEE9B3C3249871D955CAD00A4`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF80000`), + Secure: internal.HB(`2CA5C7F0E0836F8646A7D20BC77B5B0C`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFC0000`), + Secure: internal.HB(`FAA101F6F47A3CE5EE68268A0C1C32A5`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFE0000`), + Secure: internal.HB(`231E5386F9A918E0B12CF4AF968AC0DD`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000`), + Secure: internal.HB(`7F33CDE311B8201A3E468C1CB948E236`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF8000`), + Secure: internal.HB(`63E35D7A58876FEF288B1CC9D4B1979A`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFC000`), + Secure: internal.HB(`62D75F3BDC019332D49E8DD900958BEC`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000`), + Secure: internal.HB(`D77F98C50E8F70F2C3323A6FE903CB53`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000`), + Secure: internal.HB(`FF82A84FC55250B8173D80573598321A`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF800`), + Secure: internal.HB(`9C9A71ED4CBA875A5D5369F736E58106`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00`), + Secure: internal.HB(`E32C52820E4CFCE1ADD98CD854BCE5D4`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00`), + Secure: internal.HB(`146DFE1B7B0185F0531E6D924D8CE530`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00`), + Secure: internal.HB(`151F27AA0F4709DAB1C0BD5A37F5B336`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80`), + Secure: internal.HB(`AF0662EA274E477C8F60D7780D9F9CD7`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0`), + Secure: internal.HB(`02658859C0F7873F07A9B79C1D9335A3`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0`), + Secure: internal.HB(`D84E25589EA0150B54984C43D04A0A34`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0`), + Secure: internal.HB(`94B692A5938CCA2CEF604732B73D5229`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8`), + Secure: internal.HB(`2BE3EB5A2A543F3B4BEA76E9D63331E1`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC`), + Secure: internal.HB(`33F038E4AF78989E02E1CB89275DD54D`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE`), + Secure: internal.HB(`3A01FDC8CB58D29907DAD9DE198392EA`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`), + Secure: internal.HB(`5311E9CF5A38D30FFAB396F4BEFD4A62`), + }, + { + Key: internal.HB(`80000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4D83E55D4BA87093B609C574E4F65A23`), + }, + { + Key: internal.HB(`C0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E88C3F0294A029AAAFFE5C5CCF1C00CE`), + }, + { + Key: internal.HB(`E0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`61B6A8C4513BC625EC4787F90705D734`), + }, + { + Key: internal.HB(`F0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`714949B9E7AFA3393B0B3CF3DF546FC3`), + }, + { + Key: internal.HB(`F8000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E2DB7082611BB498A079EA8E8C53F88D`), + }, + { + Key: internal.HB(`FC000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E52F254632324D1493822A27408726F5`), + }, + { + Key: internal.HB(`FE000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9407C26622BE16101D97D3E40EEDD0F4`), + }, + { + Key: internal.HB(`FF000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6935C7978C3C7A9EDA8924F6949F9B6F`), + }, + { + Key: internal.HB(`FF800000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7B2743FBADA83881094B63F5089107B6`), + }, + { + Key: internal.HB(`FFC00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0E25B9BBD07CE47553A09985423ECF72`), + }, + { + Key: internal.HB(`FFE00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B0D144890704581CE6B1635544BE82BF`), + }, + { + Key: internal.HB(`FFF00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B14B669ADBFF39F56B609A58A7225078`), + }, + { + Key: internal.HB(`FFF80000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`85AB6B304D05B1626098B7D47EBC2BFD`), + }, + { + Key: internal.HB(`FFFC0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EAE4D1C6190F19635064C4A79A2B8D57`), + }, + { + Key: internal.HB(`FFFE0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D96AE7784A0F85DB4C2E8BA31B866DC9`), + }, + { + Key: internal.HB(`FFFF0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7A66635DEAE4BF2B9C5C374F80CAF49C`), + }, + { + Key: internal.HB(`FFFF8000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`257E0CFF96148C15AEE61D3058AE3EA4`), + }, + { + Key: internal.HB(`FFFFC000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D7A651EFC30498CEB869D8746DDC1C98`), + }, + { + Key: internal.HB(`FFFFE000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E68AB12EDFC2D483E19F450D431F9624`), + }, + { + Key: internal.HB(`FFFFF000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6006735A54430E8505B826D6CF7B2540`), + }, + { + Key: internal.HB(`FFFFF800000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BDA3ACC58E8FC48AD4F4C143F1C0773D`), + }, + { + Key: internal.HB(`FFFFFC00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`880182BE64407B31CF4CE4B50290FDAC`), + }, + { + Key: internal.HB(`FFFFFE00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1DD2B51066895585864ACE6A9B9759BB`), + }, + { + Key: internal.HB(`FFFFFF00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`979B19C765FB634B62E17B8DB916B861`), + }, + { + Key: internal.HB(`FFFFFF80000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BDB10B34BFCEC6BEE08F44DB7A750973`), + }, + { + Key: internal.HB(`FFFFFFC0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5F91D78C375915A9191A6E3B87FFA34D`), + }, + { + Key: internal.HB(`FFFFFFE0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`17806E0A55B7118E2C240C74CA0FE48B`), + }, + { + Key: internal.HB(`FFFFFFF0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`110531FB9EFC8629EB9F8A3C16BF9782`), + }, + { + Key: internal.HB(`FFFFFFF8000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`51C215198F24E8B1581FAD211F93A429`), + }, + { + Key: internal.HB(`FFFFFFFC000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8B165D701E44BA61DAFE6169CD9993E9`), + }, + { + Key: internal.HB(`FFFFFFFE000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A145536098C06DE6666575944AD079D4`), + }, + { + Key: internal.HB(`FFFFFFFF000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`00051DA2418063E0FE7564F4F7BE1885`), + }, + { + Key: internal.HB(`FFFFFFFF800000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FF0D1391672414E6DC8E16A2CD6B056F`), + }, + { + Key: internal.HB(`FFFFFFFFC00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C5F4FB7E61B1252BA2248D79B74B05E4`), + }, + { + Key: internal.HB(`FFFFFFFFE00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6BA19D3CBD0E373FB6FAAB3337419C06`), + }, + { + Key: internal.HB(`FFFFFFFFF00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D43B38EF5C906961B5DD7E45DB476283`), + }, + { + Key: internal.HB(`FFFFFFFFF80000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`281860584B49D8E4F80F712D7D12205C`), + }, + { + Key: internal.HB(`FFFFFFFFFC0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C5DE51EBFFB3D3274FCCDA7DCE622C49`), + }, + { + Key: internal.HB(`FFFFFFFFFE0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`46373EA8B2555FABBDA077F9DE7764B3`), + }, + { + Key: internal.HB(`FFFFFFFFFF0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FD03A797083B310D3C1CE3CF2416573E`), + }, + { + Key: internal.HB(`FFFFFFFFFF8000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4C79CEFE3503A6424B352923E05C233F`), + }, + { + Key: internal.HB(`FFFFFFFFFFC000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FD1B4F0A6EB0EEBE8E102BC067AC604F`), + }, + { + Key: internal.HB(`FFFFFFFFFFE000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`802367AE8A10B315B1CE7DB4195F98C2`), + }, + { + Key: internal.HB(`FFFFFFFFFFF000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`47EFF98595BD0CC4F2B3E84F51AE41A5`), + }, + { + Key: internal.HB(`FFFFFFFFFFF800000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2EDFA2C18CB27DF4732613808F79EE89`), + }, + { + Key: internal.HB(`FFFFFFFFFFFC00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2B942597C6EA720BFAC77D6497D5A3CF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFE00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A162270ADB575B945209F245E8298358`), + }, + { + Key: internal.HB(`FFFFFFFFFFFF00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BF55FD25C66FA6D22E5B4496952965CF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFF80000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`51D7D5FC72F7DDAFD11E4845C4458F4E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFC0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6BD584B789FABB4C8BA0A9D6D915DC8B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFE0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7E3B3ED61CF19123E438ACEF9965F1A3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFF0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6F5AFEB31ABF4116920C1C98644FD497`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFF8000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4714547E153CDA3C50F6C5A95F4CB437`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFC000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B39E8CAE24D08464A6249DF6829A8C7F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFE000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`030EC10B16EA74B1E24210C9D1FECCB8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFF000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`ADB7664E78DB54F031720BA3673F12B3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFF800000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4F8856C9432B8F6E0D00AD8F94180E33`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFC00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A911D1CFF90337155F6A23CB99A4BCFB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFE00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AD9074BF91A1D7404D3CD511D7F2D6A8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFF00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`12DC1BCC0C53BE870BCA3CB4192F8B6D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFF80000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`33AEBC615345621569A83419AF321ACF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFC0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A34C28C481A204AC497E65641FE4393D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFE0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6714041F8DDD04110DD3A52E60F0D061`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFF0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F3C8BC941ABE5345FF78B729C0EEB321`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFF8000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AA7B10BDE7D4504BA924D09DC074284F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFC000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`023EFE4E4CB9288EDE577581EB4F78C5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFE000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F7DA83B05B43B364C44B86FEC5AB3114`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFF000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8C21FD8433482B6D0019C4838BA1C7FA`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFF800000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E15D32DE5CAED3A030256A6AC003A8A6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFC00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2038E47C015494BD6B0A151EF53DF5F9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFE00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0B228743D6A8F0B7EBA6CD0F4C41E977`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFF00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0C441C78023DDC73A7C2BD4E3A917858`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFF80000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`362D69FB68427855C8928604E7CD9C65`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFC0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`232EDF1E9CF04519FDD89631415F1EFC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFE0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F7CA12BBA8B9FD32971AE86879D45A42`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFF0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1411193286A448EF5B21B0300DCDE76D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFF8000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`912B7C2A0C623E2148902DB7F8758658`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFC000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4024E61FC8A51940A170C7E1159A8745`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFE000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BFC57EEEFC1CE15CB9FDFA3200D7B3D8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFF000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`62C54A219DD9F647857730C1B1FFE562`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFF800000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C53B3B1F2250432BF5E669854FD56C67`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFC00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`36601C40A2088E013ED74ABEE848EBEB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFE00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8468C9240AA1425290B435EE3615C9F3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFF00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2978F6BE27F551FDC1505C32A7C6B112`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFF80000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2C2163B7EA3D64F9AAC7E4E44D48DAED`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFC0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8EE94847184286FA7FD95A80D826A345`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFE0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`132661B98803678C4C2F83C5949CA2B3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DD290C5C7BE64FAA4A4A210F9CA357F0`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF8000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2FF8837E9A5A11AC0FFF3C3A351B6C18`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFC000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AD0390E0CEA89AFECB74199BD04FF960`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFE000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`51EC9BAA356B8F12CBA48AB2A30742C6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9F1167B341C1038C91C9839E40776593`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF800000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F81FCE369F112EB4F577E0AB19043BB3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFC00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`24483BC48308D7A1C99D1CFD527AF997`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFE00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F5545706DC2AC20F0D51B34D212E17BE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`064B7DC9B1E7852DD0222929B4D28838`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF80000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C7F0BD4E70D634D477AF690EB7006233`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFC0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1BF418CF0C0A80546671A9221859BC6C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFE0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`19C40495F80AB6CF85FEC3289495DD68`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`17BCED8D639BE99D93B97B709D6EBCE1`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF8000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B3377E382E36B0A97317C3004B164F73`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFC000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5BBAA15E4EB4D7D0A828B2BA88306764`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFE000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`160717DDC0A1DC9FD6D688D750652AAF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2B7D4252C4E9D6E3BA00368E3AD5B6CD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF800000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`89019039003CD6D07712D5BF95C38D20`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFC00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7D19AADB1C2A9E7FBBED5563082E5CDE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFE00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`66D1D0A36FFCFF1F61442AF14A0DAF91`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`823B798A1156356A45DE81D8321281D6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF80000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A2C383A5194B11D7067A2850E8775D60`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFC0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`45CBD80AF24C251C639FE43C6F6C2E58`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFE0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1FCBE3096F66BD120D381C8E353C39B7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5997335D517A5D513B3598DE58AF2CB9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF8000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9C895525D796515CC26AA9048D2FC23C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFC000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`3CF4E0A67B3094CE879E8D65F03F3789`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`319E47AD78977136D887CDB27CE2168F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`90DF738B0451897E17D1E382AFFE37A4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF800`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`68A3596D1587B4F743F790C7FAA0F348`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`30A2CEBBE33B014FB343609B55B53971`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5A3713DBB73D3DFE137C14F3841059D3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`01FEDC921BC0B1C634B4FBBFEF26344B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`3A755276D0BBCCA7DB22404C0E791D55`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`76D71E5FB2B61DE5CF3D476887A494F1`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A15A22521F9F78A0FFB457FA9880F54E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`473AE0BD5C11804F1C6068CC28FCC50A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1D518BEB5BD67623654BA8088D97C338`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`318714C37E6F9CFC69ADB2B069BD168D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A160DAEC139B24F5A004FB9D9F410E20`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`35760B28A6575BFC90408A80872B0BB2`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`6E52BA79C8E46A76E58EA46586A4BA5B`), + Secure: internal.HB(`95477D37FAB6EA969AF30A6F3DE2288D`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`3C006E246FF712DAA58CEEB601E4E227`), + Secure: internal.HB(`2394F5896B9F786168DF1075BE2309BA`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`0AFA4D21AF942DB8877687ED5DD509C8`), + Secure: internal.HB(`9A2D9364FA4E69451FC153DCA2D3A689`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`EB0EEEA7E69822D53B37A65E99733722`), + Secure: internal.HB(`8A88615E094904843316B6B5F2823053`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`2F492A29B7209B36B3FFC69FF6FCB55B`), + Secure: internal.HB(`DE812EA64447B0131FE14E1BC4EF07B5`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`67F81C5D028981201F389F84F7ED0DD8`), + Secure: internal.HB(`500D91F09BA3C75A3C4464E26BA552A8`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`64A71B38E870FD19F1912B225B02073E`), + Secure: internal.HB(`81AE4769F620610F6D43A6F455557337`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`3724C0EFCBB277E5D9F5A1CF2538AD71`), + Secure: internal.HB(`D87D949C8144226D7F8892D8E8395556`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`317CE6F64B6D9A88C9947C1F94CD4796`), + Secure: internal.HB(`D804DCA59831ECC2D4FBE5FA956DFF35`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`E3FCA40449FC4E49F2D874E72A3E5F14`), + Secure: internal.HB(`3819623A8DB8F4BB4B5C2962B5758C81`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`1E30540DE7FDBCACC470823DA747BD8E`), + Secure: internal.HB(`07E54C4E66085E108A6CD8C58B6F7938`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`F4E68F45854D4C76F148DF750EE56AE9`), + Secure: internal.HB(`8B26C3E901A7250430210F4B99C765E5`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`B42B2D22C409A9AD698D05259E57B04B`), + Secure: internal.HB(`44DF3D0AE663A5448CAE29107492CECA`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`F14C4859868FBB945EADAC21D9171819`), + Secure: internal.HB(`9B8C0886EB1731B566E50C25DB561E3B`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`7AD639E0EB7AAAB24153CD7E80E46AF8`), + Secure: internal.HB(`13F3CECE6036713B49A46F0DC8481C15`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`629598EA54A8E1CAC26EA19294BBAFCC`), + Secure: internal.HB(`230CFB57AEF6A09F6EF980ED74AB3B97`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`F9973FEC633607E3D32BA1F156D831BB`), + Secure: internal.HB(`20CEFF372C7AE23D2D98464463F53645`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`CF29479DF8820741A4F5877147B97829`), + Secure: internal.HB(`31CBFA52745001E38E3698212E1FA16A`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`B7D709F134270869A77B4A26271A4EBC`), + Secure: internal.HB(`FA72B144B376FB286CE03894BD549350`), + }, + { + Key: internal.HB(`00000000000000000000000000000000`), + Plain: internal.HB(`C1701D1C790374218CA92565F8F9BB59`), + Secure: internal.HB(`3B8E8ACB7031747BB78E7D68379BFA8B`), + }, +} diff --git a/lea/test_196_test.go b/lea/test_196_test.go new file mode 100644 index 0000000..a130fb5 --- /dev/null +++ b/lea/test_196_test.go @@ -0,0 +1,1716 @@ +package lea + +import ( + "testing" + + "kryptosimd/internal" +) + +func Test_LEA196_Encrypt_1Block_Go(t *testing.T) { testEncryptGo(t, testCases196) } +func Test_LEA196_Decrypt_1Block_Go(t *testing.T) { testDecryptGo(t, testCases196) } + +// 암호알고리즘 검증기준 V3.0 +// 테스트 벡터 +// LEA196(ECB)KAT.txt +var testCases196 = []testCase{ + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`80000000000000000000000000000000`), + Secure: internal.HB(`F0DE5F8374905BB31E0110ADF109EDD2`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`C0000000000000000000000000000000`), + Secure: internal.HB(`1657DF5183910346A1B6E5129C39038D`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`E0000000000000000000000000000000`), + Secure: internal.HB(`03E66E1A583357364A3D340193C1CFC0`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`F0000000000000000000000000000000`), + Secure: internal.HB(`28B3DE63EBB937A44612919138320874`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`F8000000000000000000000000000000`), + Secure: internal.HB(`D2C9FE08BDFE8C72F3E1036045BE0C6F`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FC000000000000000000000000000000`), + Secure: internal.HB(`81B5ABF4A802A46F642ADCF062E06AD8`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FE000000000000000000000000000000`), + Secure: internal.HB(`07D0FDFD1C98C2068DBB3111E9B425CC`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FF000000000000000000000000000000`), + Secure: internal.HB(`81F8FCFECE59114A5D6F563356D8E83B`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FF800000000000000000000000000000`), + Secure: internal.HB(`31A9FB0E0A97F7C83D344F89D5E0B9FB`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFC00000000000000000000000000000`), + Secure: internal.HB(`0A9A2FC4EDA815E9EBC90D9EF1E5EDA9`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFE00000000000000000000000000000`), + Secure: internal.HB(`4064A738597C1DCB1E1026E47EB5DA11`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFF00000000000000000000000000000`), + Secure: internal.HB(`267296F7EDD3B143BDB34B113813C1C1`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFF80000000000000000000000000000`), + Secure: internal.HB(`654B8A7C03FA9C36F619C4EAA827F5ED`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFC0000000000000000000000000000`), + Secure: internal.HB(`0BAF4DD68FCDEB52CB61C091DE7F4D4E`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFE0000000000000000000000000000`), + Secure: internal.HB(`3CE3A05F1F9FF1CB8324E0C5F605DB9A`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFF0000000000000000000000000000`), + Secure: internal.HB(`E6AE405630B9056C36A8CAEE2B03EB5E`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFF8000000000000000000000000000`), + Secure: internal.HB(`FBC8BAC283090622A434EED076E0FEFE`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFC000000000000000000000000000`), + Secure: internal.HB(`33C30FF376A28E8D6D0C52F80C3B61DA`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFE000000000000000000000000000`), + Secure: internal.HB(`860CBC4C48F6089D72C832AF97A62A7D`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFF000000000000000000000000000`), + Secure: internal.HB(`23536C1A69EFD1A402F525A5C497C47C`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFF800000000000000000000000000`), + Secure: internal.HB(`E7DA22DD3DD2EB90535B29260D77172E`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFC00000000000000000000000000`), + Secure: internal.HB(`4A6A71927590DF3336873F151AE727EC`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFE00000000000000000000000000`), + Secure: internal.HB(`9E13E41C138534A3AB88129D0E272051`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFF00000000000000000000000000`), + Secure: internal.HB(`35964466A64FC38ADA180D8FE9DF4B46`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFF80000000000000000000000000`), + Secure: internal.HB(`D3F8D8B63706482AC21469288392BEB2`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFC0000000000000000000000000`), + Secure: internal.HB(`36C541E3119D16B32552EA67178DC38A`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFE0000000000000000000000000`), + Secure: internal.HB(`4D5524032620E3E3A6E21649FD485B86`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFF0000000000000000000000000`), + Secure: internal.HB(`81FBD57EC09146E03779C39594FE0FB8`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFF8000000000000000000000000`), + Secure: internal.HB(`36DC21BF96367B0EFABD2233EA0382B6`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFC000000000000000000000000`), + Secure: internal.HB(`4532FA275906F2A060A0E191E14AA57B`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFE000000000000000000000000`), + Secure: internal.HB(`9177834DE5063F3C21A5A87CFFCEE8C8`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFF000000000000000000000000`), + Secure: internal.HB(`AE02038EE9000CA438E80514CC21A2BF`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFF800000000000000000000000`), + Secure: internal.HB(`D0855CF09F1C6ACF37CBD6750DEC2706`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFC00000000000000000000000`), + Secure: internal.HB(`CB43F1B70EDADFC0F69CDA82BE58DFDD`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFE00000000000000000000000`), + Secure: internal.HB(`94911284B51AA080CC1C8355449F3BCD`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFF00000000000000000000000`), + Secure: internal.HB(`FE2BFB54CD93EE887A062D0055CAB94D`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFF80000000000000000000000`), + Secure: internal.HB(`E9B2D9BE18F8EF307648594A1BFFDA0F`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFC0000000000000000000000`), + Secure: internal.HB(`4E566A74EF6CF0807000AC5E1A31E8FC`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFE0000000000000000000000`), + Secure: internal.HB(`8B364C1EF528AEBB6D9E03CB36ECDD10`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFF0000000000000000000000`), + Secure: internal.HB(`4D9FDE0161BEBC22799231B63F1AD895`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFF8000000000000000000000`), + Secure: internal.HB(`42A86A11A52C3EFAFF1DF9658CFECA1A`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFC000000000000000000000`), + Secure: internal.HB(`FD71D2805BC17E92E590534D6FA1B190`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFE000000000000000000000`), + Secure: internal.HB(`4AB3D120BF3F4D71010889E3CAD6408A`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFF000000000000000000000`), + Secure: internal.HB(`85DD773F81146530AC0A6D5C352E2A1B`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFF800000000000000000000`), + Secure: internal.HB(`64907FF8FFB60811ABA48B02843237E6`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFC00000000000000000000`), + Secure: internal.HB(`2EF604B843408B379249771F06338702`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFE00000000000000000000`), + Secure: internal.HB(`34B1AC8FE48B2E1612F2C7B8D551F580`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFF00000000000000000000`), + Secure: internal.HB(`727A189D6432AE91F65EB3BE1FFE6221`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFF80000000000000000000`), + Secure: internal.HB(`96A741A324A6FBC35495FEF3C88458EB`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFC0000000000000000000`), + Secure: internal.HB(`23D38A17A0561E3D0AFA28EBD4380375`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFE0000000000000000000`), + Secure: internal.HB(`54C326D08E7BA0D6316744C1B5CEF305`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFF0000000000000000000`), + Secure: internal.HB(`82C639281D58DC36A8E0DCADB54CE7A5`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFF8000000000000000000`), + Secure: internal.HB(`AE437EA5E97EA93F3B6A668ECA9B5551`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFC000000000000000000`), + Secure: internal.HB(`6E053332D9AB0B58666B70DF6CABD6B2`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFE000000000000000000`), + Secure: internal.HB(`56360308A094F8017432D089887AF569`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFF000000000000000000`), + Secure: internal.HB(`ADF991503994FAC4FC02E941AB4445E5`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFF800000000000000000`), + Secure: internal.HB(`9141B1DDF50EECE9EDD85FA53FCDDFC0`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFC00000000000000000`), + Secure: internal.HB(`E38F53A5CBC3905DDE99F0C70FF479C1`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFE00000000000000000`), + Secure: internal.HB(`76AB72AFA40202185414EC3DE8CB6B72`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFF00000000000000000`), + Secure: internal.HB(`19BC59A3B974F89595E60ABE0E314FF0`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFF80000000000000000`), + Secure: internal.HB(`8D3AEA4F0CE0496C17EC0A4C1EC08130`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFC0000000000000000`), + Secure: internal.HB(`F878085F4F36F5F303340D6AFAE432BE`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFE0000000000000000`), + Secure: internal.HB(`4A560C802AD3DB31FA6C6560C4BA2207`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFF0000000000000000`), + Secure: internal.HB(`45AB06F2EA96C131B955C3B3FA614293`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFF8000000000000000`), + Secure: internal.HB(`E03767F23E0768B63A036CD0A092B6B7`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFC000000000000000`), + Secure: internal.HB(`35568830EEF29843C0911FDC409303D0`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFE000000000000000`), + Secure: internal.HB(`20124C116E2F18F63C9CEF15386DB442`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFF000000000000000`), + Secure: internal.HB(`964D558D5215F5597BD210E97012572E`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFF800000000000000`), + Secure: internal.HB(`D71EB0255D143F896708CE1C05C1AE60`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFC00000000000000`), + Secure: internal.HB(`12CBA89AAE1FA7F02551DF9BC2AD998B`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFE00000000000000`), + Secure: internal.HB(`1F96415A268F9E4248707E56E1FD5B52`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFF00000000000000`), + Secure: internal.HB(`429D15E1030ECBC5A4957D0877D98ADA`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFF80000000000000`), + Secure: internal.HB(`3977579668AEF686C8E1528DD20B55BE`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFC0000000000000`), + Secure: internal.HB(`FC9FB0937516EEBF12A949986D6F56F7`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFE0000000000000`), + Secure: internal.HB(`A4AC75F25A2A27D1806FD9A71D9D1CC9`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFF0000000000000`), + Secure: internal.HB(`6ACD5F24598070F2543C4C26C47D8866`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFF8000000000000`), + Secure: internal.HB(`B6E54928BA98EFD59E7DCC6B36987945`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFC000000000000`), + Secure: internal.HB(`8FBFDF9072FAABD64F9189F790736A9C`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFE000000000000`), + Secure: internal.HB(`3B2594604FD5F4A52A372B735F6E7FA0`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFF000000000000`), + Secure: internal.HB(`01804BE664749C540C57B1E367E4D343`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFF800000000000`), + Secure: internal.HB(`071A17AD3D53B563E90B04E180F79021`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFC00000000000`), + Secure: internal.HB(`76756AAC8522E2D47E46528CA262DFBD`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFE00000000000`), + Secure: internal.HB(`106AEAAD683ED08261B379E9C423380A`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFF00000000000`), + Secure: internal.HB(`199E53ECC553C64D69B62BBC3806C484`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFF80000000000`), + Secure: internal.HB(`050FFBCAD06C5989D047EFF112CB805E`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFC0000000000`), + Secure: internal.HB(`76078F0ADE4EA297EA6014EA622039BE`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFE0000000000`), + Secure: internal.HB(`83EBA5CEDAA010D8FF1ECEFEB47D9F63`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF0000000000`), + Secure: internal.HB(`3DDB5CD2CCFE835C1A3A6C69099CA640`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF8000000000`), + Secure: internal.HB(`D4FC023F80C746CFF58656E2B5A44869`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFC000000000`), + Secure: internal.HB(`A4318C095D2F2E4B568FBB646978586A`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFE000000000`), + Secure: internal.HB(`97AE7B5B144260AC09F10B3F1DA29B53`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF000000000`), + Secure: internal.HB(`6DD5EABEE6501FF0410A7219C82189B7`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF800000000`), + Secure: internal.HB(`711DFA8D35FAABE7FB0B061342726E26`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFC00000000`), + Secure: internal.HB(`B38EAFE251852A265BF1FA7E7F1660B6`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFE00000000`), + Secure: internal.HB(`4AEE31DFEC906EE02D5A7E3EB4D0FB3B`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF00000000`), + Secure: internal.HB(`03565C310F7C26E14EF63D4E50D4CABD`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF80000000`), + Secure: internal.HB(`B982CE4EA46AA6362FA22FC98D8802C9`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFC0000000`), + Secure: internal.HB(`92B1B5F499FAF18643B78A40DBC8B8D1`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFE0000000`), + Secure: internal.HB(`5198EA51BEEDF01766D6179C56A098FE`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF0000000`), + Secure: internal.HB(`0B97D5F7DACEF1F0D93D01A2A7AC260A`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF8000000`), + Secure: internal.HB(`CB48270A1EF6F770630B12C878AAFD85`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFC000000`), + Secure: internal.HB(`60CD00777FD8FE01BF4A335F290109E8`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFE000000`), + Secure: internal.HB(`3901A1FD4954FFCA2959924B0BE39EE8`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF000000`), + Secure: internal.HB(`E3D602D2E4A256EF89D41606D91B7896`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF800000`), + Secure: internal.HB(`FF7D434F5312171265699EB14448FFC3`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFC00000`), + Secure: internal.HB(`5D52A6E31C60D179BB512116B3422F39`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFE00000`), + Secure: internal.HB(`F0B488FD3278512A65AFC8012CEADAED`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF00000`), + Secure: internal.HB(`47A0E90FA62D40567EBD9E04CD1374DD`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF80000`), + Secure: internal.HB(`9E99FE38DBEE3D09930F40648AC03F35`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFC0000`), + Secure: internal.HB(`7731811DA19C008AB2E6CC5933324D86`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFE0000`), + Secure: internal.HB(`BE8E3915139D0599A371E8D8B0C606D5`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000`), + Secure: internal.HB(`F5C1F04471A9435325C9AA4FED7FB104`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF8000`), + Secure: internal.HB(`9B5EE8F49460A5A73D03A4C5E57D80A8`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFC000`), + Secure: internal.HB(`4C7FE9A0B26FAC6D936C1C15F349E854`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000`), + Secure: internal.HB(`B5FA5B40F72FB09CF78A6A6204EA39BE`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000`), + Secure: internal.HB(`27AB77649ED4273B0648E9D7B2E94D08`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF800`), + Secure: internal.HB(`9ED11A1E021B713F46AF8A2C599A1970`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00`), + Secure: internal.HB(`988545566FBAB9A35FDE56123D9990CA`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00`), + Secure: internal.HB(`8C9A0D26D35D4D008E03D6B9A887AA96`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00`), + Secure: internal.HB(`1DCB19C679572D55B49B94CE6B417AA3`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80`), + Secure: internal.HB(`D7D01F8A2C5F5537B71BC90A35D09D44`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0`), + Secure: internal.HB(`6952110C55D599852EF8DFDA9602EA30`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0`), + Secure: internal.HB(`41066AC7EF009B20282B22E32AE9F55F`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0`), + Secure: internal.HB(`7BD5227E10E2B69110CD8F4E55D6490E`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8`), + Secure: internal.HB(`C824D656C358C48573D070F6DED363F9`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC`), + Secure: internal.HB(`FD5FA90D9EC6DC72A4F2CE21E08B92DE`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE`), + Secure: internal.HB(`8E92E174553D5F443DEA15559F0952AD`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`), + Secure: internal.HB(`793AE0F13E152CD264EEEF7D88735FFB`), + }, + { + Key: internal.HB(`800000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`694B918EB7F7DDABF49311CEB83C5D53`), + }, + { + Key: internal.HB(`C00000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`17B9134A35BA469F4F2EBFF8C1E168A8`), + }, + { + Key: internal.HB(`E00000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`701FEDC1BFFB13F93D67407393264589`), + }, + { + Key: internal.HB(`F00000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2353E16E5608A7288E3BB7EC5438A148`), + }, + { + Key: internal.HB(`F80000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CFB0557D8B05D454F4404C2907236013`), + }, + { + Key: internal.HB(`FC0000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4CEBBF017F2758669A45CE507AFBE7E6`), + }, + { + Key: internal.HB(`FE0000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CA8F072BA722CB13F150EEBA268BF5DA`), + }, + { + Key: internal.HB(`FF0000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`39C0E4E6706B4BDF1E6E72A5EDAC08F2`), + }, + { + Key: internal.HB(`FF8000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`25F1F10BA9A6D150DC00BFF72B4B048B`), + }, + { + Key: internal.HB(`FFC000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1C8ED9E1FBB708D35D541118629450CE`), + }, + { + Key: internal.HB(`FFE000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8A8167E3C15ED0B0F46E582527E42EFF`), + }, + { + Key: internal.HB(`FFF000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B25CAE4F8D95A7D74DEE28B95992F5AF`), + }, + { + Key: internal.HB(`FFF800000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E8F7D521A0409145EC5EF2CCA5F030B2`), + }, + { + Key: internal.HB(`FFFC00000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D37984182EDBC0F77BA871687CB57633`), + }, + { + Key: internal.HB(`FFFE00000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BB0535BBC30E741E7D55E9E421A81F56`), + }, + { + Key: internal.HB(`FFFF00000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C9F04A67CB96515DC814D78023CF1FE1`), + }, + { + Key: internal.HB(`FFFF80000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8431723B85AB45ACBEBC8469C14CC203`), + }, + { + Key: internal.HB(`FFFFC0000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`90072FF09B5438CD2B4CCAAB35571247`), + }, + { + Key: internal.HB(`FFFFE0000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`46DD196111D676B0EA102AD9A68C87DD`), + }, + { + Key: internal.HB(`FFFFF0000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`76CC512D37353B4D29D47F2C4871A923`), + }, + { + Key: internal.HB(`FFFFF8000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`56AFD63D0130B720E529EA4FBCD2C092`), + }, + { + Key: internal.HB(`FFFFFC000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7420CC03ABB2405F9C74CC10070AD04D`), + }, + { + Key: internal.HB(`FFFFFE000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`099E1FAE9A8781244F88FD06B9E1759F`), + }, + { + Key: internal.HB(`FFFFFF000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`46507EF89A8A605021C9F03DC5EE5991`), + }, + { + Key: internal.HB(`FFFFFF800000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`38CEFDE11376043AB42FA3495A3F732D`), + }, + { + Key: internal.HB(`FFFFFFC00000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BF1429F53487ED93C7FADCDDEAAE006A`), + }, + { + Key: internal.HB(`FFFFFFE00000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2D3B389B05760FB7D98775C2D7E88D7C`), + }, + { + Key: internal.HB(`FFFFFFF00000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`308526F33CEC944CFD57AF0FEAE0755A`), + }, + { + Key: internal.HB(`FFFFFFF80000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`06734C9EB13BAC87C8A2DE3FE3FB1D12`), + }, + { + Key: internal.HB(`FFFFFFFC0000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`58EB139FEDECFBD0BE56F40203EC913D`), + }, + { + Key: internal.HB(`FFFFFFFE0000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1E8AB789AB8EFD66304033E66B552AC7`), + }, + { + Key: internal.HB(`FFFFFFFF0000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F960831629AD7FD3C058BEDC197B0C7E`), + }, + { + Key: internal.HB(`FFFFFFFF8000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DA59A759A6457AE51F6836A1498AFC54`), + }, + { + Key: internal.HB(`FFFFFFFFC000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2FB44E3711817A90ADCED7FF1F73D94F`), + }, + { + Key: internal.HB(`FFFFFFFFE000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`858DEE10261C75EC2F44059031CFB186`), + }, + { + Key: internal.HB(`FFFFFFFFF000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A87D2C9BEFFFDCAFC3F3449220DF1BF3`), + }, + { + Key: internal.HB(`FFFFFFFFF800000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0B327B74A82F739D4B518FC69E8041B9`), + }, + { + Key: internal.HB(`FFFFFFFFFC00000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4ACBD78A489D7AF1AF1E9F2B84138C94`), + }, + { + Key: internal.HB(`FFFFFFFFFE00000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`64049BCA27229BEC05A4C2E5C1A4BC45`), + }, + { + Key: internal.HB(`FFFFFFFFFF00000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`02628F26CC69109AAD9CA9BE5FDB9C97`), + }, + { + Key: internal.HB(`FFFFFFFFFF80000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B51EC0FEE521ED0A3309F08E0C5F8B9A`), + }, + { + Key: internal.HB(`FFFFFFFFFFC0000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EE5C17FCA9995CE006F932888D945B54`), + }, + { + Key: internal.HB(`FFFFFFFFFFE0000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`3110D6A13BAA55E996603AEFD1A5525A`), + }, + { + Key: internal.HB(`FFFFFFFFFFF0000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`12ACE4B9D31CF8DF318F377C57B40952`), + }, + { + Key: internal.HB(`FFFFFFFFFFF8000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`340062923066AF0D616A6FB33BFC9865`), + }, + { + Key: internal.HB(`FFFFFFFFFFFC000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4E193D8355947A26D1929AD09D302620`), + }, + { + Key: internal.HB(`FFFFFFFFFFFE000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DC005F318B655A86DEBD9A197BB6F25F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFF000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9183ED9EB78EA94C2693BD1D721A4A7D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFF800000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`02179A08ED0C807D4AB9DCFC605B39BF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFC00000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`324465450BC95BC0079BFA46678C3C93`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFE00000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C7D5A5E9DB839B7E825DE2499CA60639`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFF00000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8461062C02B8F807ABE1B64A263C83C8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFF80000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FD4C829536E6E4A947640652D6D268E7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFC0000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1FCDE498D4676F75771C2334F8D6251B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFE0000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D24E5113DF1010B3C91A58EA43EE2B64`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFF0000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B4B702714D6B8E852730DBC568B989A6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFF8000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A88B3F49238CA6F2109188C011380A2B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFC000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`37B919EDDD957A3345D1EB1B05A53BAC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFE000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DD6468D27FFB41D0E07EAB3803691B4F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFF000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`551A0CEC23FDDABC1A1AE34CFC823FD4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFF800000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B40D50030EC115CD0FB28C1BE57B5CD2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFC00000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0F9A2EA2E0AB97A07EB203F63AB0B73A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFE00000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C186275DEF8A04CC32466247E5010BD7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFF00000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EDC16A481F3181645288FB75EE459F30`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFF80000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`279AE7A1DEBCAF9EA04950F77FED9D39`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFC0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`129526957EA39E8F7057D886845E628F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFE0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`425D0D52DE0FC90728418652F879E3EB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFF0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`55E52EF609850570D4E883AAF9DE65FD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFF8000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F9B3CBDEDFA3D8CF1EDEBB034763D97D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFC000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DCA7C26750BEA483EE77234E51763F30`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFE000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`86573D687F3855129A2ADCAEC4445ED8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFF000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4B5C57E903B1167265FCDB885EAD613B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFF800000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C19F4237816EE25903DEE1B52C2400EE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFC00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4BC5A88C6A25CC4D8DD58710C13EC2BD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFE00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A7CD2EA0E5FE5E533B87DF328F8F2FF1`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFF00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`02D4B7504CD14C2A51A9C205B8330DBD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFF80000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C192CB4BD1E63ECEFC2E424954E1C736`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFC0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AA7CB151E8A8EBAC335EE4802EC5DDD7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFE0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`251205AE30CD112EA25B589D719A5AE9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B735B4F32C36DDE18C529B45171F8851`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFF8000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7449C3B6D2E19A7093F671A89BE5A774`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFC000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`00BF024313FBE8FA51DE380FD8E5C827`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFE000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8B943D628FB9BBF5F051A88BC3C8C902`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFF000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E5CE9BD74CC9010E36E347A382672086`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFF800000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F713ADC8DA8EA2AB9FA99244083F6816`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7DC9761D1477801072B9522A99575CB9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AFCA963DF90B98FE01A65B07B431B0F8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`18AEBC6D64ADD074ED804F7567EF45C9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D459C88E2E3ABBB601585FA098E203F8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8282FE1FCCD641661D076A328FDCF560`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`13A6BC2D2F11C8F67EC6AC06B71EB02B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`20EE510B082EE4C1FE62FE2FAB9B2B32`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2B0E41DFABFAAB83DF0D3B2D416E753B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EF9FAC5A6B9E9CDFBB87A44A80E03560`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`34ED9DEF894851800178604DACC0818E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4B096C94CF10E45F0F5E6BD2FEE65ED7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`73EF838B80FBD2722B14C9E11BA94749`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FC7A34D4C8DC441562C2422D8EFF8493`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E16989E79EF6ACA88C91F42693FCB318`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8B4CAEDB36F25CB04E5672F340537FDA`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`01A334D9E84ABCC7FB1ACEEC6979BD73`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0F6025E7244855F5335486166016965E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D6357A505C353F3E864F3D36CE7C031D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EDF76532C86CFF0C30D1AC91E2DAEEB6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A8BADFEB37CDD39AC765369841F677DB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E0BD797142BB5713568D1EBB2158BFD0`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`192AA0E755B054206F8C64F6FB3A8C55`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E1169315A550B41F18CBB1F184334B87`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5717D25E54453415107925B1821ECEF8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0D1FAD6E5399DEEE8CCCAD98CCA65F8C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6AD4F7648A0381CE989693CA1BD2E152`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4B3C1FC485713665822B86223870B412`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8B1E3759C88EB409FC9267EC6AE02DF3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F9686FA229AFA0B50F0CEB2C7086EC9C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`47603FC09BDC0ABB507E3BB3C3BC8C95`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`88DE0D8963E38CE9BDE4A01D378945FA`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E04D601E7EDBE8F4C798F59E7ECC2C59`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AB55E7174D79F04794C88BF70666E48B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0F2219E41258379F64AE675780DFD01B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5FFA50FDF4694A37F04DA2FAC8B196D4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FDEF54AB92212C6EA3387B2D20E64C8F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CC9E5F6FCE54BA310CF44625022B2042`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D4A1A573B6447E5ECC9BADA0F6C26035`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E5E5499F22D222522366C2CB4C014B62`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1235AC9FF150D15127ACD1477B0CB1A2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D3BEAF5287DA5D8732DEBF967163B53A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5BA8614E4C26149556555BA4EBB90201`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`534A92A6305A9CDB54A219544A26B300`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2FC291384CB3FAB1A381E234A8A65986`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`94B0FDAA193368A6701B7CAA3CCA5FB2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E53828ADC131BCF0996CFF2D3CB60F6A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`13897BE957833EF777658B4758CEB488`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4165CFF197221465A9E0426EF0DEF57D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`62EEB08E428D2EE4145F10A7CF7ADE0C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`46186FD0C14DE51C6C2C627AD70742B0`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C8BAD4979CC695E9AA38C66D5B8DCD42`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F5E3D26C2EF3AA7FA9BD9A96889A78EF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7CD314FD983E49A80E4732AFF1D1F205`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E207A09A55C5D955C301FBD65D59B0CE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`347A3AB9A12AB25B267E58F4CE82E15C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9161DA77DC36E1EAB37FE9C53DFBF85A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1EB23FB4F74EFBAF81FD2CE9F11ED412`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1A8EC34B11499F959FE92E8D51F2436A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`792E6FD97CC0C50078C6FE5F1F62DE99`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9D0165C50D6BB38D3C8E38AD3302CE2D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`81E1B21F3EBDFFD5EF231AB5520AA6DF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8176BDC82DBE2CEE688946D0CE755E12`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F42A93B5E55AAF0252E7A5444A6BD70D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1B9602220AB7E7500828825FEAC568D1`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C4460929188DBA2528C4F3D8BB678EF8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5C5C23ED61204C441FFC86639B5C5634`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8CC3D09D2081E73B53E6B576F6B1A986`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6F430D544FBBF442BEB831CEEB9B7904`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C4774C1C2416635181A2744481C370E5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`33EA9F3A9F8FEEB55D1B672A88D36B60`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4F9CCE1914F3EB950907D4EF2EE9534D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B6C4B4EC5EDA331BFF5C55557582A317`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7D824145CD86DE9B48CB4C94A1A51C8D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`199F1896981AFD8B973E540F1435B362`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FD705883C10C0A441FA8AFCC484240AF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CFBE0C8D0A2CF79FFD7C93B490AAA614`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A3E6E1758B4F07D8DF5174291DBD1773`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E0D1D6545F2ABEBA9874F9B0AB93A4FD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`3AE630EB937C6A4F78437195E85B6011`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4769D15681E876686A60085793D695D7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`26EECD56302BEF8424FFACD961594A92`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`91C4416D9557CCAE81E8231053D0B9AC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`09E75608EBADDDD72627156C49CFC159`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`76A1FA5FFDEF08787D9F291836145A99`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F0B357F2533741FD43816254E3AB72EC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CB16463CC55F693869222299962963EC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9D1B4CAF851126F887C5751C43B2C818`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1248A91AA8BA093C45AEB38D11E8B1AC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`65ECE46B0A1D65D15DEFDA6C0E100C6C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A8ABD3D57DAD34147DD6F129E8B379D6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8D7433B7EE2C5458E09ADEDD6F351B8C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`11F2197444528BB05AE25914845E3495`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5F8365CBEC208FC882B70D749670F67A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B460BD8A8868EEA6B6C1AB450F0201F7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EE45EDFBE4125E5014AD0AEA1DC43892`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7CA969273D75E7ED798F3B56057983CD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`014F84939057309F94979CBEEA9C74AE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F7CFE9D995FAE311091EAA664572EE1A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`61F700FABAFCE3A497BB90CDE1E0A932`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E6E4EAA27B749C207BF35BAAD8800294`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F47B72C66EF5CD511ACB294FB73F7F42`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`598E84EBCDC047FF0262F18ADEABC993`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B3D1DE1A2C02D61401BB6F49DCEF07A9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C78DA1569A64B9B6E2894393EDF5CDE4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D5A98C0A424A5D3992B92AD7B6C5FCCA`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E9B20A7FAE806BFACE7BEE1447F3BE3B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`147ECD0C84ABABB0B22F07C53B30FBA2`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`724F8279123B9307658A109101466A15`), + Secure: internal.HB(`3CAEFA9F6A239EA22053E18DE6B3BDEB`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FEF995090770B941B0BF2B120A859BB8`), + Secure: internal.HB(`4A368BCDD2656E05347C3620C97AA868`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`76718FF5B60510FB4A9AA28CF9A57A60`), + Secure: internal.HB(`4545AA808509A55EEEA31ECE653C1A81`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`AE38ECC785CC238F263D14285216B406`), + Secure: internal.HB(`E609A55993999F8F7675064243062064`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`BB0F694719D4BF967A085D4FD98A37E3`), + Secure: internal.HB(`DAAEC1BC206BA5B3F4F7018AF6E11026`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`F3F7057F5670F3E8BB9D9AAA95F12F71`), + Secure: internal.HB(`CEB27BF64AF900A00406B17FBDCC17AC`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`EA30FAB7622F0A9F9EDC2821CA7D0968`), + Secure: internal.HB(`56B2D169B99A9A64DA17F4AE73BBEA7D`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`763DC878A1E4931417E6A4DFFE9F72C1`), + Secure: internal.HB(`2C9102A4744F56CD529CD5D7ACE50BD5`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`ABDD298CBA9F58E05D1CEA4CF40758B5`), + Secure: internal.HB(`13D597DC7EB46D0927F1062059474A9C`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`DE121DFC8FB169DBE3201910B2A7E7BE`), + Secure: internal.HB(`3AABDE5154E75F6D92071814B1631EE8`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`A51DDE1048AB121F60D28D167EAF8C94`), + Secure: internal.HB(`46F076C50D032E8281D91420FBB2C022`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`D47EEC51485EDF05C753E385DC91F52F`), + Secure: internal.HB(`A2089399BC6B97609682A99176BB7C8D`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`81F8018935DB9E254E05F8C891FE0DCA`), + Secure: internal.HB(`B8C48C5D7352C8B130665F764B8B5D34`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`008A1DC0F3735B596A88E986A2E603DE`), + Secure: internal.HB(`0C843B45E840F39E097D3A7905A32431`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`E6767B40A8B765BAD0BE13A9547B4422`), + Secure: internal.HB(`65C6CE96E6D8969C1C956548146BCE60`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`093D9891B97847A075C7135B2C2D7B91`), + Secure: internal.HB(`12692AAA87D3146E79CE98E2322DB984`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`7DA0327DCAC8CFA58E04C603F0AE9763`), + Secure: internal.HB(`616F578FFF859FD25416769E796B0FB4`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`98A0450CC1F60AA28F16494BA3EEC411`), + Secure: internal.HB(`21B26E218309006FE6B606B6CA72B8CA`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`EE7D0F88C29545B02FDFF91C8C1F6F54`), + Secure: internal.HB(`032FCEFD4F2A64D23E1092E99A828E1F`), + }, + { + Key: internal.HB(`000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`54B90C7934750C27617F739F2FB24626`), + Secure: internal.HB(`F4B75C83491A2BE33A9F2C722CDA78E0`), + }, +} diff --git a/lea/test_256_test.go b/lea/test_256_test.go new file mode 100644 index 0000000..31b91e3 --- /dev/null +++ b/lea/test_256_test.go @@ -0,0 +1,2036 @@ +package lea + +import ( + "testing" + + "kryptosimd/internal" +) + +func Test_LEA256_Encrypt_1Block_Go(t *testing.T) { testEncryptGo(t, testCases256) } +func Test_LEA256_Decrypt_1Block_Go(t *testing.T) { testDecryptGo(t, testCases256) } + +// 암호알고리즘 검증기준 V3.0 +// 테스트 벡터 +// LEA256(ECB)KAT.txt +var testCases256 = []testCase{ + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`80000000000000000000000000000000`), + Secure: internal.HB(`BA91D622BAF683D7BFCF1785FBE32A44`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`C0000000000000000000000000000000`), + Secure: internal.HB(`1188E33909A1B2E7126B2BF946407A4F`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`E0000000000000000000000000000000`), + Secure: internal.HB(`73C499FDA4E73451C3780B055A476944`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`F0000000000000000000000000000000`), + Secure: internal.HB(`2E87166FC6AA9A5072618F76F1461844`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`F8000000000000000000000000000000`), + Secure: internal.HB(`7F2020641A5F54240092CC609788236F`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FC000000000000000000000000000000`), + Secure: internal.HB(`EEA64EEB642DC676C4BD391153A60F83`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FE000000000000000000000000000000`), + Secure: internal.HB(`868FCD6C143F17907E3D89FD7C389CB6`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FF000000000000000000000000000000`), + Secure: internal.HB(`DC8D3C465B3698D9AA08C17292B6CFF0`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FF800000000000000000000000000000`), + Secure: internal.HB(`02CDC6DE003E03668349858612C386F8`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFC00000000000000000000000000000`), + Secure: internal.HB(`8B170ABCB312D65611A7D72DFB9B4813`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFE00000000000000000000000000000`), + Secure: internal.HB(`4657633536B5554E352C829C63525E73`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFF00000000000000000000000000000`), + Secure: internal.HB(`F567D59CAE48267DEDF38F4DF83611C0`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFF80000000000000000000000000000`), + Secure: internal.HB(`8FFF6798E342F60CD4D1F4978EC7D9C4`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFC0000000000000000000000000000`), + Secure: internal.HB(`1A936F1E13239B458A7DCCF46A081508`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFE0000000000000000000000000000`), + Secure: internal.HB(`FF6462E0601FF0F7792DEA9F34C82100`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFF0000000000000000000000000000`), + Secure: internal.HB(`ACC6720A70116B5F69FEBE7E7A04F5F9`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFF8000000000000000000000000000`), + Secure: internal.HB(`DE4EEFE33E83E05D9CBE8288B72528FA`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFC000000000000000000000000000`), + Secure: internal.HB(`4C8E9A2AA03C0846CEB0642B89E61F9D`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFE000000000000000000000000000`), + Secure: internal.HB(`F053AD468C8873A2128912FF6B270D66`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFF000000000000000000000000000`), + Secure: internal.HB(`92C380636779C3CCB2D4127359CBD5EB`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFF800000000000000000000000000`), + Secure: internal.HB(`B02BC028F85ABB5258134CEB4BA61B92`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFC00000000000000000000000000`), + Secure: internal.HB(`7E2000FA22DD9E66DA3A09BC176F0482`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFE00000000000000000000000000`), + Secure: internal.HB(`D1F16B01AC483DFF6C583AA4689644B3`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFF00000000000000000000000000`), + Secure: internal.HB(`67E3572DB7B2582321AA23011945F0D4`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFF80000000000000000000000000`), + Secure: internal.HB(`B7C3A0CC6C0CBCB7113D2237DFF64F38`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFC0000000000000000000000000`), + Secure: internal.HB(`CC9A874674F123F989D3A823B075B51E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFE0000000000000000000000000`), + Secure: internal.HB(`D8E1AB02935F48FDB59837D4ED49316E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFF0000000000000000000000000`), + Secure: internal.HB(`A786AE37038B22710D0763254065E2AC`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFF8000000000000000000000000`), + Secure: internal.HB(`BEE1B4472B6E05612DD7F1070518F6DD`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFC000000000000000000000000`), + Secure: internal.HB(`EB5C23495816B86BC78469A742289DD7`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFE000000000000000000000000`), + Secure: internal.HB(`2297A4498623CE3E79D33DBF20E65B15`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFF000000000000000000000000`), + Secure: internal.HB(`EACB1E8C4880D3C8BC17A8D317239BD8`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFF800000000000000000000000`), + Secure: internal.HB(`48E62454573C50D9B2905D9B1FD87477`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFC00000000000000000000000`), + Secure: internal.HB(`9D7918126DF4EEAFBCC93F763DADE978`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFE00000000000000000000000`), + Secure: internal.HB(`CC5D7757C2C9C5B66A763704EC37B3D7`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFF00000000000000000000000`), + Secure: internal.HB(`7FA21697A52DB4FED827E72838C33EA2`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFF80000000000000000000000`), + Secure: internal.HB(`9F1168F5397A211DFA11694992B2B62A`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFC0000000000000000000000`), + Secure: internal.HB(`CB091EE826CBCC194D4135ACFD704843`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFE0000000000000000000000`), + Secure: internal.HB(`99404EE45109887275992FE7001B833E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFF0000000000000000000000`), + Secure: internal.HB(`91F5AB02DA55D8CA36779CD7D4F39192`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFF8000000000000000000000`), + Secure: internal.HB(`3C79F9A7DE84896CB7B57DE36A86394C`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFC000000000000000000000`), + Secure: internal.HB(`017CEF127C2469AFA284056A0E596BCE`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFE000000000000000000000`), + Secure: internal.HB(`5CAF60DA31930745E529BB27A83F4918`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFF000000000000000000000`), + Secure: internal.HB(`2E972F0639427C2BDADC4DDFC17FFEC7`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFF800000000000000000000`), + Secure: internal.HB(`1BEF2A4E128EBAC356CFECB7A54B5CD5`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFC00000000000000000000`), + Secure: internal.HB(`4B46FA94D90D3CD64B65D9F88BA897FF`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFE00000000000000000000`), + Secure: internal.HB(`598F4C38D26E85F52B7E917B32EDE630`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFF00000000000000000000`), + Secure: internal.HB(`7E37FE60F6EEBFFB8D305A4FA31483CB`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFF80000000000000000000`), + Secure: internal.HB(`E1EF89DFD7E16716B2A5FEF8EE4BDCA9`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFC0000000000000000000`), + Secure: internal.HB(`4BAAB55C5C1F1456AC68ACD63BFAA9B9`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFE0000000000000000000`), + Secure: internal.HB(`08ABFB144243ED65338A47F70F1ED613`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFF0000000000000000000`), + Secure: internal.HB(`42D3EACCAB18BDEF07D74BC6272A57BA`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFF8000000000000000000`), + Secure: internal.HB(`D2FDC67C4051F804FA266E3077194CE5`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFC000000000000000000`), + Secure: internal.HB(`D1AB321C569512597E71CB44D6C9EF7E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFE000000000000000000`), + Secure: internal.HB(`C51757971F4644DA71C417D78AA89F21`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFF000000000000000000`), + Secure: internal.HB(`B2E01B370FC16A7277A37ABEF663146F`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFF800000000000000000`), + Secure: internal.HB(`EB6D742DF5097C284D15083FAAFFD04C`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFC00000000000000000`), + Secure: internal.HB(`B15D971C90BB5F1C0AEAB700F8A1CC93`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFE00000000000000000`), + Secure: internal.HB(`EB79E675108CB84B4EBECE366F747B83`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFF00000000000000000`), + Secure: internal.HB(`65E2D2D722FB2C3B2948AC5CB50D667E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFF80000000000000000`), + Secure: internal.HB(`29941C8C2AF551C89E86FF264D6B509E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFC0000000000000000`), + Secure: internal.HB(`A364D30659B39AD01CF89FDDA1D8FFF0`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFE0000000000000000`), + Secure: internal.HB(`3D95B065E5ACF3856A8A892F4EB68D3B`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFF0000000000000000`), + Secure: internal.HB(`99A5FE08C04C2DB694AB30C3AF73F24E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFF8000000000000000`), + Secure: internal.HB(`68CFD4B779331014ECD1E9FAE8426AB3`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFC000000000000000`), + Secure: internal.HB(`8AD9D29B6515113E3844EB1D35249DD5`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFE000000000000000`), + Secure: internal.HB(`1B5B9DAE8C1C2BEC4ADFC8741F74BA85`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFF000000000000000`), + Secure: internal.HB(`306C4001CC6A45E395C7CD5990E64CB6`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFF800000000000000`), + Secure: internal.HB(`E72A11FF0B267228718701597E6F7006`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFC00000000000000`), + Secure: internal.HB(`199B3A7679E8E6F65F766C348DA634D9`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFE00000000000000`), + Secure: internal.HB(`7F73D44A2199919DF9151CA1E64DA50D`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFF00000000000000`), + Secure: internal.HB(`F669D5524DDEE9893CF79590389B9108`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFF80000000000000`), + Secure: internal.HB(`0FD11973414F71023A6AE02CC9A13FC1`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFC0000000000000`), + Secure: internal.HB(`DB65769AEF6CDE2CF337ED4394F8A3C1`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFE0000000000000`), + Secure: internal.HB(`83E13D14F819DB930EDC81ECEC573A85`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFF0000000000000`), + Secure: internal.HB(`3D76B53CAC7BB9B9306384A05AA18DC5`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFF8000000000000`), + Secure: internal.HB(`B9414171010BEE41738367E0B7138636`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFC000000000000`), + Secure: internal.HB(`75D959A6069578ABF3913C515064474D`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFE000000000000`), + Secure: internal.HB(`CF44AFA34162F794483F9E73DAA88FCB`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFF000000000000`), + Secure: internal.HB(`3416D6D98EDA20C16246CB0E78C6D7B4`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFF800000000000`), + Secure: internal.HB(`3A14CAE92FC0C667107173686E93AD9F`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFC00000000000`), + Secure: internal.HB(`249166C657A59D7A452ED8ABCB1D4DC5`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFE00000000000`), + Secure: internal.HB(`AC806390D3C7C686272EA2914B39A0ED`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFF00000000000`), + Secure: internal.HB(`41645154B73B405B802B37213209E738`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFF80000000000`), + Secure: internal.HB(`927B5B86236AC10917FCF6D0B63C60CC`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFC0000000000`), + Secure: internal.HB(`5F4D0852B5C9B5025BB9117F1879DCF2`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFE0000000000`), + Secure: internal.HB(`0162D5A9FBE8C672809A98EC59AB0EBC`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF0000000000`), + Secure: internal.HB(`4C52A1FE5D772A9659C136A89DD1F13A`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF8000000000`), + Secure: internal.HB(`E4B26A5C57FC3C1866C826B54A1DD12A`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFC000000000`), + Secure: internal.HB(`89A3B88CAD5B754D2D3F2961D5FD41C5`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFE000000000`), + Secure: internal.HB(`DEA8B3E42BED1DEBE8BBACE0C279E893`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF000000000`), + Secure: internal.HB(`5615B2C30D8FFCB71A58C91EEFCBE3E3`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF800000000`), + Secure: internal.HB(`32AFA76C48389FBE66B84E8E97EED55A`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFC00000000`), + Secure: internal.HB(`69EC159015E34ACE0FA8923F9B448FBF`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFE00000000`), + Secure: internal.HB(`C0019B676805509AACC2249675736FE3`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF00000000`), + Secure: internal.HB(`272FD1AFC5C7A245E75DDB0DE2823D98`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF80000000`), + Secure: internal.HB(`0162F86FCB8C295618AB9075A9C00C81`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFC0000000`), + Secure: internal.HB(`EFA8F38FD2333023F8EF8C0C952443D1`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFE0000000`), + Secure: internal.HB(`104BD34553F814EDF97E3BA53A29B0F0`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF0000000`), + Secure: internal.HB(`FE4B76A7955C7B20C7E330C5D3F61D81`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF8000000`), + Secure: internal.HB(`B7ED80065BA75647753393F58B79043F`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFC000000`), + Secure: internal.HB(`A8C49C60A0E36FD71ECFD8371ADE1C05`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFE000000`), + Secure: internal.HB(`41CE06D79CA89CA84AEFB9240257B866`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF000000`), + Secure: internal.HB(`20CA6F22E865D86C8F02464934337AEC`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF800000`), + Secure: internal.HB(`010D0A8ECE06E7B6B7BE009EC636BC11`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFC00000`), + Secure: internal.HB(`AB4FA5365D75AA6C1D841007E217A356`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFE00000`), + Secure: internal.HB(`1890ED875FBD84C4F88AACED252DC64C`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF00000`), + Secure: internal.HB(`DAAAEAA5527716EC72F4CF1762FF5DC9`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF80000`), + Secure: internal.HB(`328F102DAC99AA4E56F4B623512CDF6F`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFC0000`), + Secure: internal.HB(`82C73B8C2665E338D08912C39EC5CB69`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFE0000`), + Secure: internal.HB(`564432423F7BA37EF629888E1BFBAC09`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000`), + Secure: internal.HB(`1897B99FD4E3D5F7C1CBD6B6AF0395C2`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF8000`), + Secure: internal.HB(`BC56513F12A319CD3BDC8D343F869C8D`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFC000`), + Secure: internal.HB(`39391205B3BA58E528DE928597C71339`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000`), + Secure: internal.HB(`C04D693C7FD2BC3E168EEF771498B839`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000`), + Secure: internal.HB(`8E6FFA251A50CCBAE3CD6A68D90E314E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF800`), + Secure: internal.HB(`546CDEB9DC6197E4D0C36825E10EA54D`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00`), + Secure: internal.HB(`93D0356D6A99EA745D6F87A303645C08`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00`), + Secure: internal.HB(`276037392F08316C8161CDA1726A424C`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00`), + Secure: internal.HB(`E44DB3945FE34AAABE33EF2CA5994769`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80`), + Secure: internal.HB(`CB1F19682B569CF399840219D8030FE1`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0`), + Secure: internal.HB(`FC9868EDEC129AD0DEDB85A8EDFCA10E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0`), + Secure: internal.HB(`0D45AEE9F1D799A2E17480A20EE2D7BD`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0`), + Secure: internal.HB(`0D2961638629AC60FABA9310BF982CC7`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8`), + Secure: internal.HB(`85AC42527A1E8E24E65160DCA1832CA9`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC`), + Secure: internal.HB(`B9DBDFAB2CC3F3C8C6B8ED666B3687D1`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE`), + Secure: internal.HB(`271ABFE8C9ACC3C1E0434B905A2900A5`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`), + Secure: internal.HB(`B1E765F6262FE1FB5615B91A7322EABB`), + }, + { + Key: internal.HB(`8000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4F6156C0C35F9DDFD2A1774814EA76A2`), + }, + { + Key: internal.HB(`C000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D84D646949066DC7373981C75F76432F`), + }, + { + Key: internal.HB(`E000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B2A01A3C22BC7DA4C6D512F72CC4D667`), + }, + { + Key: internal.HB(`F000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`65615453112852D192175BB6F90E30CB`), + }, + { + Key: internal.HB(`F800000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5B636762E5AA34DA8D0FDAA02A55B6A1`), + }, + { + Key: internal.HB(`FC00000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`248D296E14638E6C6650D0FE2886D6FF`), + }, + { + Key: internal.HB(`FE00000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`52F429916C39D4782186620B7ADE0B10`), + }, + { + Key: internal.HB(`FF00000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8D40911D94097ACF5F703440C0A8801D`), + }, + { + Key: internal.HB(`FF80000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`74D979E82BEF808C17D7241BACEAECBD`), + }, + { + Key: internal.HB(`FFC0000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E6E3446A502EB07EED446F369019D0F9`), + }, + { + Key: internal.HB(`FFE0000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7F8B24086750B8AB17D09143B0D88E04`), + }, + { + Key: internal.HB(`FFF0000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E7D2EBC4D5CF3B29E3E8B6DD428BD114`), + }, + { + Key: internal.HB(`FFF8000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9C5F838D7F731762FF09011CFC79652C`), + }, + { + Key: internal.HB(`FFFC000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4FE49AD0DCD7052D3434F5A95FA25DE9`), + }, + { + Key: internal.HB(`FFFE000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9782E400792CF09158064A5C61E4F65F`), + }, + { + Key: internal.HB(`FFFF000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E5985D75DA6BCF3BE429DC90A527EC2C`), + }, + { + Key: internal.HB(`FFFF800000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F9C1C2EDF76B0D1846D8B55F0BB0CC92`), + }, + { + Key: internal.HB(`FFFFC00000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FDC902D86C40BDF49B476BFA85229C1A`), + }, + { + Key: internal.HB(`FFFFE00000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4DEBDE4E56331B3103E8B5493A725094`), + }, + { + Key: internal.HB(`FFFFF00000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E4B35956A36B5BF2FF27CC415AF49450`), + }, + { + Key: internal.HB(`FFFFF80000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8CC388C74BA0298F1D3D2483EE4B7AC3`), + }, + { + Key: internal.HB(`FFFFFC0000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E7F2A11EFD17ED5ED2EAAC9F722D5C39`), + }, + { + Key: internal.HB(`FFFFFE0000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CBC1B52ECDB2EE4C683EC7B9A57354E1`), + }, + { + Key: internal.HB(`FFFFFF0000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DF0839DADB2C1D47826743E8F0E949A5`), + }, + { + Key: internal.HB(`FFFFFF8000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5BE21C051F899BFD534FEEC42D9DFDEB`), + }, + { + Key: internal.HB(`FFFFFFC000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9DE664074529B180FC2F2C89E875BB52`), + }, + { + Key: internal.HB(`FFFFFFE000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E52DBB7E42A3F15B45FB0B2014D11E40`), + }, + { + Key: internal.HB(`FFFFFFF000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C27D6D0E771A3FC91551CB03D2E82883`), + }, + { + Key: internal.HB(`FFFFFFF800000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BC280171A1FF41458576FDD3152C458C`), + }, + { + Key: internal.HB(`FFFFFFFC00000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`401D9DC736681BB495222BFA8901D718`), + }, + { + Key: internal.HB(`FFFFFFFE00000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D0B85882472FD8BEEA0C7AFD19C2C55C`), + }, + { + Key: internal.HB(`FFFFFFFF00000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B1789CEE9C088317289BFBA662F29513`), + }, + { + Key: internal.HB(`FFFFFFFF80000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9689E9D4152B4CF54F74454A612354BA`), + }, + { + Key: internal.HB(`FFFFFFFFC0000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`47656B3594317973255E5251CECF013E`), + }, + { + Key: internal.HB(`FFFFFFFFE0000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`177B3F86D675A401A463DEA03BC581A1`), + }, + { + Key: internal.HB(`FFFFFFFFF0000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4FCB4112D728D77BC0901A0228A4CF9A`), + }, + { + Key: internal.HB(`FFFFFFFFF8000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DD1D31F5969F6F85F9D592FC5606EE88`), + }, + { + Key: internal.HB(`FFFFFFFFFC000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E0B4D50619A0F3949C3260320EEBDAB3`), + }, + { + Key: internal.HB(`FFFFFFFFFE000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9F2AEE0B0FE882FE561D70336623A2C7`), + }, + { + Key: internal.HB(`FFFFFFFFFF000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0D52223A8300E52C200D4198FBBEE8A6`), + }, + { + Key: internal.HB(`FFFFFFFFFF800000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`545FED5D42058BE770DF96F4FBF060CF`), + }, + { + Key: internal.HB(`FFFFFFFFFFC00000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5D69D89B61D39BF38BEE756D6C81D800`), + }, + { + Key: internal.HB(`FFFFFFFFFFE00000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FBCA4546E5841F16F78A27B705852504`), + }, + { + Key: internal.HB(`FFFFFFFFFFF00000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`598A5A2F5D921852EB2E475F24F91553`), + }, + { + Key: internal.HB(`FFFFFFFFFFF80000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8FAF7419939F8B0525FC0CFDB83BAB2D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFC0000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`3B9409CD165AEF26B2C27E146081CE78`), + }, + { + Key: internal.HB(`FFFFFFFFFFFE0000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`37B1FA6B91AA71891293D156DDB369EC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E48B1AAE44B2D5989E2610908CE30B4C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFF8000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0E602102D7CF681698BD34412243B2F5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFC000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1C3F1E1BCF062B136F47C44016BA5870`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFE000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4B65E1CC0D1A04C0E8658BFF07EB6E01`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFF000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`547F85A8CE4F710264BD5B7842BB8FDD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFF800000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0BD692342D1CF78840D74F1CB18222C2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4E592C5C8BFF1CF13DD26179EDBEF702`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFE00000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BC85FBDC1B3498EB35D5F70675CA5104`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`852494F17FE6006AAF50394011B8350C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFF80000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5958F59B978B27DFA6BC54243391262F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D6E6C0D8487C89710BC94417ABF3D8D2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFE0000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FF1864BB18F7B1B277F0566CB4664628`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`12D1B848B363ED043FDCE4499C10BACE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFF8000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0C5FF86A034FFD76891196C4CD0B3950`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`72FE9737308570DB6A700C6214AAF461`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFE000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`385CE44BAF2DE8D02967B575DA9DE3F2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C808B5300EE251383156E600D1D3C79D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFF800000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5963CA33B2A5FFF08AB587A21AE23816`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4ED028E70E9B853A25C2A1A6DBC855EB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFE00000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FF081CFC536350E76C9EB866BA4DA577`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C6F74062E25FB7C88D15C0A17F80F360`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFF80000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4C64C5520131D6F0B14061E9222FE429`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`136B9F36B39D6949CBDA4ABDCBF6CE93`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFE0000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`57D284BC736C8AEA5391197FA499B50D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2857B1D03635A70BF54B3E8CF008E8F9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFF8000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`3CC35D8BDBCE2C87750C1AAE7E22B0A4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`518311DB824933E7BC5DFEAE75916B3E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFE000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`126AF2488E4B794813BEF0BB3D2084CD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`528847F9C3762CD08EA0011863A59C1D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFF800000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`88678A37C4348786EEAE5CFB2BC77FA0`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6B14DFDDB29516BAC5074140045BC238`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFE00000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0A69CAF0BB94B2285E443BAD93A15921`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6E547FBF5FEBF8A3408C670BCA635375`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`13B0D33F4FB91403E922EFA5C0B27FA2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DAFE39DA81A71B5D004250538BC31905`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFE0000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`47A7236D545EECF9928511B99BA8C0FE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`40E39AB300243D8BF228342A19E5D225`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFF8000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`91C51F571927E15762DE6BFAB48EA6E4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`191BA2750AD47890D81B6D62B49C8DBC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFE000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D1AFF03B8BC302C876429705A986A3AD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8AD539E4B08261F8D26B4AC187142D62`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFF800000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1CC9BAC5EE162962F36D96DF042D48F5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0C5D09CEDC5FD0D249234C9D13DE63D3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F282189437F9634DAE698D18D175C6BD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`673A6567C6CB4365F53B040FB62AE1CB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B114985301A10FA288813F812FFB1CF8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`14EEF7DB97BD1E23179947227BD3C4DC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A5B77A130E29E274508CC49EB3601048`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`385E216B9263D2115C62C7ECFFEEFDE5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4E89E804637FA562B100F0FE4E5046EB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E0751238533472E5072E940532A505EF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B9895D1B757B62E271443D1BC6794BF1`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C92007728F8C28DE355DA446664D90A4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EFAEF1C834CC10E9380D93CAF238357A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A2BA099734BF7213D0D3CDE27FD3A800`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C7DE8B77A201D60D764F8E0B90EE6B88`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`99D573F37C1B83D1EAC9E3A2D74CED0A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F9301518E9C59037F290FD9AB9C6FA1D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8626537344871A211E51484F7C983428`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`84BFF850FC936FB025FCC82576A43B6E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`00445C51BAF286BDE755D56792FEE350`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2BFEEB8EEB21FB50CB6EADD53931609B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6419A207FCB3E2453F9F6823820E3561`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`12FF0368070589A64D657BB5202DB15F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2FFF74EEA2CBCDDC53B1E064B287C1EC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D8D429D4DA8C0E7B5FE8A4817472607C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8094E2CAF6E63063E1E641564403FE63`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0DAE535FDED14F86DD000EFAE5BC7D53`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6909941A44264149BB999EA758522DC6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0BABEC62CB291BB2AF4EFD14FC77F678`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D72154F887AE2EC3AE8B7EAB7BED8038`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B0A4D93A83FDBEE660072F1933E229E4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DD289239CA5393958C5CC98E3A210BE6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8010DF157B24E0C2108A0E7E78FDFD5D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C59C6958E9034A3EF02639EB802A6B00`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D1D6F88D86F039B2CB65687C236D6939`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`378755B8D4C186E12C732E91EC78AD84`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`305BD6FE1CCA72909344D468907C8024`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`24B75C760517817DE76469F4172A6E37`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`84F2B5AC03859B294006A5655F856C35`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DF01D06D86487E84FEBC8DD586F82A04`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EA4A14DDCE4416FAAD5D3651F62FBB96`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8E6CF2F50623AF8F8824FBA878A994BF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`64513490C1AC16D5C9308DF426DCD8CB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5583CB0BF8911E0A866398DE0A9C5BE3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6E567733D07C56618DA03A3F3A4B26E3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DF6C491968707B4FE4D4D297DC882A17`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A2A61694686F2BFFC9C44E93F1C0616B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5CB6982A37EB2976867E209D183D31B2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`18EB3CAF205BCF7765AA63ADAAFE2329`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`491CCA596778B012F18F2022DA7A79B9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`59270A22664216C2E2C2F2F23AF8B4E1`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0D3AEA0B656E27E5353BFCA2C0006149`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`272B65FA85D69ADFCDB7900922174650`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BE8DB54AF523C1A844A663612A43E0F2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`21FA3DCE43D07F2C24D04FD0189A9F24`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5730786C0D09F446C76714341EA4F6E6`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DBE9AB935841B241216A4781FA27AC05`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9E30FE93E2C91B833B8E2C11FEC37F73`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D09D85DD274FCFF4FD908469C23FE425`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C2120BC04C393975D7FDB62B81690880`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`04D570B5E8751F3B4185824DFC4235A0`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`03F15A13608A4BD625B6AF15BC3D781B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4B8C72EF07B0D526950548F6C93D4936`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AAE3D8B6BE779438D9998FFC1CF0ED0B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6CD25FBE615DD7653F99395811DCC714`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C5E807D40D15A76EACE71CFA0B334DDA`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4FBCE23CD3E6D2A44B63E0612A998197`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`40B7BB3B091308348F9DECF47C5958D3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B423659FDDEBFBA87FA2D58E01B784BE`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E0950F290E440EF4A60EC24B2C40553C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2ACAC7C01E5A2CC3C0EC0B36A5C11786`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`377FCA3335712941ABB8E2E22A902E8A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`23EEC00F100475BAB1FC65DD45540B85`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FB5DAF14B5E0E816A8EDA7D98E853A38`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6165FDF91C689E4EED2834EC2083DD56`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`697F19DB9A51DFF1EC22C02AE76FE3F8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`65934379969C935D29F6D81264E14E00`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8791D1DA13239DE5561308DEB1FCFDDF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`5EFE997FEEBBE375F2BC415F9C21DFC5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FAC712CD540588EFA30768A0AAB98695`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`767006BFFB8CD62CE77CC27462D6C37E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`08D1275CBFE815BB8780CA219076A128`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`98D2FCC7B316862AA692A5111DC48025`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`060AA14388E14DCD13030C91B877B483`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`7A4DE6FA3DC807AABC4EC3AD63BB9F61`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`49058FBA1A006E7E8B639028AF4C9DEA`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`07EF425D8060E826043A8584403DD78E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F8E9929D4DE00283CE20E904D0166BBD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8E18526D6148135344D294044BEE9DAF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AEA7C93F71DF1261B8362588F266A3EA`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8EC7837D6D297481BA161FDF4862F74F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`99CA71181CB481AC08F9AA0C52D60E0B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`97DFADF8CFC7EA3A138B7916E3230093`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A6F75145BEADBF0C727142E22859CEE9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2640C3F4E4321E541C77F3774C60C2C0`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D4CA1FE9CA636423C372013BE7EFFD3B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A9CC2919E5B7ED1ABED00D9D9D0E2CE5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CCB918B4C1D6783EBC6CFD3385C5B6A9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A2A876C8CBB42B06180A8872D7BB3623`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AFD07BF8D4530CC9B28A44DC269150FB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`EB6B44C3BD44ACBB58F5D533EB19AE32`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E10AED3AF11F23DB6DDBE3A2AEF9F949`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`67F64C87133FDDB72C830A922BF5504C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A7CBD3C2C0DD8768C29FF8BF4108F46A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6DD03C265D078D75AF00EB8C8E6B23B1`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B333AAAC83CE5553E21F5B0EEDE3CDB9`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`54725C78DEF4A6D8CD2958A87B260906`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E74F4B1FB62B3E6B0F8540FA8D0362BB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D394048E36A3A29194E6B5606F371612`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CBB58BA57CBAFA548EB3B72BDECF31E3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`29408CEBECDED43176422D8335B667AB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F3F27D8AF796D5F9536B160BFCBD8D35`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AE5B902B8C42222F117DDFE687D6BD11`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B7450A309C325740F8BB5C79E406C423`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2DC94CDC8EEC086A265EEFDC31E9637C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2EB10D262C46DD46E7E81175EBF4426C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BE83F9308A33141E05B704C9D22EC736`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`E735E953A76A051AC54EABE11FF5A7B4`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6DA6F84DBA1E29CDB43A073C84E4927D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6A7F1F6F58D9EED133E22BD0457B59B5`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`103FE2CC0A115CF8C9204DD70F94B01E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B317602E2ABC641ECBB85077EEC1FF85`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1DDDB6B29B1BF1C772338CAB3E3D702D`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`6478FEF1F20C7BFBFC1FEE833C31F485`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`3F32203A856CAF0F5982108F0825BE40`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9239169C8913C2482F4379AE0D2013D8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`D69B3DC743FD7A529BEC0DC1CB2AB7DB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AB83FD98575F8459FEC854F2E5B7047E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4DDB4B5BE5621B407A16968F733B6FFC`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`16743A1E4F837C6EE41A344558C7DA8E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`52478C52D0041B548BF9F6FE60B43F5C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1374891BA8ED474B969198D74F4B6307`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4004CCFC3143632A326A875D663D4E5F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BAF24812738FFA78BCC451FC2F93E913`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`013F513244F31E2CD1438E2DD4799E5B`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FF439FB550691308DAE9DF88B2436319`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4C674DC7F101BCD70FDAF0CE6D1FA39E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`88905E7E03E0B53CD528737B3C499862`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`DBD324B14E54A18B99F43BFF4CAC513A`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`AA5EA53923537E66951806BFFD3DEEBD`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`C37FAF7E19EF040B79025C6C47D832EB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9D481B123943036072F2716FFB0C7229`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1E098D950DD91028448C1B6029F0A81E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`1CAF5F47A308965A8072126458BAC504`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2F46A5D52F7A07B437850AF813B49101`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`17D164E4A56A4CD2017C30C6EAAA80F3`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`48AAE10D7E005571ADF9001CD07FE020`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`9A08E2792B159748F3BE67CB94A67B65`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`72305D78B04FE41AA0A48ED0877E5786`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B3434830C1CB8501AB295981802E37D2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`49C5711BF4A547F7A32BDEF83419A7CF`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`FD1ED7B728B36850A6A3B6CD7C6F2321`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`A6A3A5FF58093E862931485E7D3BF33F`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`180B9F4986BDFE6D4F137B79C48F4F38`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`0AAB6F8900A64ABA840D71444505AD70`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F981303AFA88D38F4789A38001F28DB2`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`82C294A40E93669721154125059F7201`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`4455BE8910499D820D76526721D02AC8`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`F36B09E375CA6DFEA69438F23B09FDFB`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`8A7748B554DD259E63C756F1A04FA823`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2549A3E3BF977C2F62753758D3394B4C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`66DC423AB8FD900D1D2AC7F7962B9D2C`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`B097A678F708B00B2E57A329F1330CB7`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`2C6A8B7D962CBF78047784F75C040872`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`69C1F12348842D32513A0B073953B433`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`BF60F1421B50AAAA52A64559C44A1817`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`CE83D3288BEE81A94AFEBF2BA6FE151E`), + }, + { + Key: internal.HB(`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`), + Plain: internal.HB(`00000000000000000000000000000000`), + Secure: internal.HB(`611E921AF6DFECD184C940E604BE93D4`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`754B4A785D91BB98E5867CBD7CE81ACF`), + Secure: internal.HB(`B334F52E0C9F49F205A415277B47B00E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`C0F2BCED9EE960A7BBF2676E13265448`), + Secure: internal.HB(`80A267E8955407D52264C83F56C3D4AD`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`E1E8D1C9BE76F33E0CBFBE2B9575ECF8`), + Secure: internal.HB(`190518F60B7F12684B51C4D698F0D810`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`7062EAE725FF2449104382F20BB932EA`), + Secure: internal.HB(`F8D36452C1D68B34189E9BFCA7A1242E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`47D5A9657B88E4F54112F4FFBC18B96C`), + Secure: internal.HB(`CD13E1C95DFC6D855BF9DEF80884917B`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`7FF6EEA0AA5665B0560294CF34F6510A`), + Secure: internal.HB(`5F872327B9767D84914C6297FDFCC9ED`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`70BADA36DCEE18264A26252139F90B92`), + Secure: internal.HB(`7F3CA8DB95880E48D857103AAF7613A1`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`B555CF027815AE4455D6A6EFD7063812`), + Secure: internal.HB(`5669D23026B71B1FA57FE715DC22E593`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`253D6D2228D11737F0A55978544169D4`), + Secure: internal.HB(`457062CE83A896BAD771CFE1D2AAAE7E`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`D92895F4D665846DD568BF393B106F68`), + Secure: internal.HB(`4CA25976E50593661C68586B2724D585`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`2C096913A9586792FB3498EE55185C99`), + Secure: internal.HB(`B981B21B71CFC7368937E4EAA65A0602`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`B516485D0B6E71939D5FE795AA3D7F76`), + Secure: internal.HB(`A675A75827B59FF887A8E4805CD465FE`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`4DC4D6F0A5AC929D337DEB6A83A56B4A`), + Secure: internal.HB(`D96284CA739A524BABA568AA24ADB436`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`0FC8F1276057FC1E766426EB6AB5EFA2`), + Secure: internal.HB(`698244354C41A63DBFBD6ABCC252EB7F`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`5217BCA165F420C2602859D528111E4D`), + Secure: internal.HB(`9145BAB3DDC1347F5498AF6AF444A2D8`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`B0E598391D49AE76281F8523C49F4756`), + Secure: internal.HB(`9792BB52CEB674038BDF3C66C63539F6`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`01A9240D3159976849DDEB158A83FD0B`), + Secure: internal.HB(`014562B934797C950589B29B38CFDC63`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`6016437B8A6B0D037B370B26002310F9`), + Secure: internal.HB(`8E5E7050923B1BAEE5E1A7817544BED2`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`2423151E510381F6B743A813F12491EC`), + Secure: internal.HB(`7CD9B60A15C7468BA57108742141B6B7`), + }, + { + Key: internal.HB(`0000000000000000000000000000000000000000000000000000000000000000`), + Plain: internal.HB(`E603FCD5EEE6A32E3755C1DA666BD1F3`), + Secure: internal.HB(`BC2637D1B2B3785A039E343E12484789`), + }, +} diff --git a/lea/test_amd64_test.go b/lea/test_amd64_test.go new file mode 100644 index 0000000..f5a2fa1 --- /dev/null +++ b/lea/test_amd64_test.go @@ -0,0 +1,56 @@ +//go:build amd64 && gc && !purego + +package lea + +import ( + "bytes" + "testing" +) + +const ( + testBlocks = 16 * 1024 +) + +func Test_Encrypt_4Blocks_SSE2(t *testing.T) { testAll(t, tb(4, leaEnc4Go, leaEnc4, true)) } +func Test_Decrypt_4Blocks_SSE2(t *testing.T) { testAll(t, tb(4, leaDec4Go, leaDec4, true)) } + +func Test_Encrypt_8Blocks_SSE2(t *testing.T) { testAll(t, tb(8, leaEnc8Go, leaEnc8SSE2, true)) } +func Test_Decrypt_8Blocks_SSE2(t *testing.T) { testAll(t, tb(8, leaDec8Go, leaDec8SSE2, true)) } + +func Test_Encrypt_8Blocks_AVX2(t *testing.T) { testAll(t, tb(8, leaEnc8Go, leaEnc8AVX2, hasAVX2)) } +func Test_Decrypt_8Blocks_AVX2(t *testing.T) { testAll(t, tb(8, leaDec8Go, leaDec8AVX2, hasAVX2)) } + +func tb(blocks int, funcGo, funcAsm funcBlock, do bool) func(t *testing.T, keySize int) { + return func(t *testing.T, keySize int) { + if !do { + t.Skip() + return + } + + k := make([]byte, keySize/8) + + srcGo := make([]byte, BlockSize*blocks) + dstGo := make([]byte, BlockSize*blocks) + + srcAsm := make([]byte, BlockSize*blocks) + dstAsm := make([]byte, BlockSize*blocks) + + var ctx leaContextAsm + err := ctx.g.initContext(k) + if err != nil { + t.Error(err) + } + + for i := 0; i < testBlocks/blocks; i++ { + funcGo(&ctx.g, dstGo, srcGo) + funcAsm(&ctx.g, dstAsm, srcAsm) + + if !bytes.Equal(dstGo, dstAsm) { + t.Error("did not match") + } + + copy(srcGo, dstGo) + copy(srcAsm, dstAsm) + } + } +} diff --git a/lea/test_test.go b/lea/test_test.go new file mode 100644 index 0000000..6a49055 --- /dev/null +++ b/lea/test_test.go @@ -0,0 +1,68 @@ +package lea + +import ( + "bufio" + "bytes" + "crypto/rand" + "encoding/hex" + "testing" +) + +var rnd = bufio.NewReaderSize(rand.Reader, 1<<15) + +type testCase struct { + Key []byte + Plain []byte + Secure []byte +} + +func testAll(t *testing.T, f func(*testing.T, int)) { + tests := []struct { + name string + keySize int + }{ + {"128", 128}, + {"196", 196}, + {"256", 256}, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + f(t, test.keySize) + }) + } +} + +func testEncryptGo(t *testing.T, testCases []testCase) { + dst := make([]byte, BlockSize) + + var ctx leaContext + for _, tc := range testCases { + err := ctx.initContext(tc.Key) + if err != nil { + t.Error(err) + } + + leaEnc1Go(&ctx, dst, tc.Plain) + if !bytes.Equal(dst, tc.Secure) { + t.Errorf("encrypt failed.\nresult: %s\nanswer: %s", hex.EncodeToString(dst), hex.EncodeToString(tc.Secure)) + } + } +} + +func testDecryptGo(t *testing.T, testCases []testCase) { + dst := make([]byte, BlockSize) + + var ctx leaContext + for _, tc := range testCases { + err := ctx.initContext(tc.Key) + if err != nil { + t.Error(err) + } + + leaDec1Go(&ctx, dst, tc.Secure) + if !bytes.Equal(dst, tc.Plain) { + t.Errorf("encrypt failed.\nresult: %s\nanswer: %s", hex.EncodeToString(dst), hex.EncodeToString(tc.Plain)) + } + } +} diff --git a/lea/util.go b/lea/util.go new file mode 100644 index 0000000..8004c39 --- /dev/null +++ b/lea/util.go @@ -0,0 +1,5 @@ +package lea + +func bitsRotateRight32(W, i uint32) uint32 { + return (((W) >> (i)) | ((W) << (32 - (i)))) +} diff --git a/lsh256/avo/x86/lsh256sse2/lsh256_sse2.go b/lsh256/avo/x86/lsh256sse2/lsh256_sse2.go index f928a77..b4d91b8 100644 --- a/lsh256/avo/x86/lsh256sse2/lsh256_sse2.go +++ b/lsh256/avo/x86/lsh256sse2/lsh256_sse2.go @@ -278,11 +278,11 @@ func word_perm(cv_l, cv_r []VecVirtual) { //cv_l[1] = cv_r[1]; //cv_r[1] = cv_r[0]; //cv_r[0] = temp; - MOVO_autoAU2(temp, cv_l[0]) - MOVO_autoAU2(cv_l[0], cv_l[1]) - MOVO_autoAU2(cv_l[1], cv_r[1]) - MOVO_autoAU2(cv_r[1], cv_r[0]) - MOVO_autoAU2(cv_r[0], temp) + MOVOad(temp, cv_l[0]) + MOVOad(cv_l[0], cv_l[1]) + MOVOad(cv_l[1], cv_r[1]) + MOVOad(cv_r[1], cv_r[0]) + MOVOad(cv_r[0], temp) } /* -------------------------------------------------------- */ diff --git a/lsh256/avo/x86/lsh256ssse3/lsh256_ssse3.go b/lsh256/avo/x86/lsh256ssse3/lsh256_ssse3.go index c0be7ac..ff16ced 100644 --- a/lsh256/avo/x86/lsh256ssse3/lsh256_ssse3.go +++ b/lsh256/avo/x86/lsh256ssse3/lsh256_ssse3.go @@ -225,11 +225,11 @@ func word_perm(cv_l, cv_r []VecVirtual) { //cv_l[1] = cv_r[1]; //cv_r[1] = cv_r[0]; //cv_r[0] = temp; - MOVO_autoAU2(temp, cv_l[0]) - MOVO_autoAU2(cv_l[0], cv_l[1]) - MOVO_autoAU2(cv_l[1], cv_r[1]) - MOVO_autoAU2(cv_r[1], cv_r[0]) - MOVO_autoAU2(cv_r[0], temp) + MOVOad(temp, cv_l[0]) + MOVOad(cv_l[0], cv_l[1]) + MOVOad(cv_l[1], cv_r[1]) + MOVOad(cv_r[1], cv_r[0]) + MOVOad(cv_r[0], temp) } // static INLINE void mix_even(__m128i* cv_l, __m128i* cv_r, const __m128i* const_v, const __m128i * perm_step){ diff --git a/lsh512/avo/x86/lsh512avx2/lsh512_avx2.go b/lsh512/avo/x86/lsh512avx2/lsh512_avx2.go index 9fb0580..2cdbff4 100644 --- a/lsh512/avo/x86/lsh512avx2/lsh512_avx2.go +++ b/lsh512/avo/x86/lsh512avx2/lsh512_avx2.go @@ -257,12 +257,12 @@ func word_perm(cv_l, cv_r []VecVirtual) { //cv_l[1] = cv_r[1]; //cv_r[0] = temp[0]; //cv_r[1] = temp[1]; - VMOVDQ_autoAU2(temp[0], cv_l[0]) - VMOVDQ_autoAU2(temp[1], cv_r[0]) - VMOVDQ_autoAU2(cv_l[0], cv_l[1]) - VMOVDQ_autoAU2(cv_l[1], cv_r[1]) - VMOVDQ_autoAU2(cv_r[0], temp[0]) - VMOVDQ_autoAU2(cv_r[1], temp[1]) + VMOVDQad(temp[0], cv_l[0]) + VMOVDQad(temp[1], cv_r[0]) + VMOVDQad(cv_l[0], cv_l[1]) + VMOVDQad(cv_l[1], cv_r[1]) + VMOVDQad(cv_r[0], temp[0]) + VMOVDQad(cv_r[1], temp[1]) } /* -------------------------------------------------------- */ diff --git a/lsh512/avo/x86/lsh512sse2/lsh512_sse2.go b/lsh512/avo/x86/lsh512sse2/lsh512_sse2.go index 663f5d9..c82479f 100644 --- a/lsh512/avo/x86/lsh512sse2/lsh512_sse2.go +++ b/lsh512/avo/x86/lsh512sse2/lsh512_sse2.go @@ -122,15 +122,15 @@ func msg_exp_even(i_state LSH512SSE2_internal) { //i_state->submsg_e_l[1] = _mm_shuffle_epi32(i_state->submsg_e_l[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_l[1], i_state.submsg_e_l[1], U8(0x4e)) //temp = i_state->submsg_e_l[0]; - MOVO_autoAU2(temp, i_state.submsg_e_l[0]) + MOVOad(temp, i_state.submsg_e_l[0]) //i_state->submsg_e_l[0] = i_state->submsg_e_l[1]; - MOVO_autoAU2(i_state.submsg_e_l[0], i_state.submsg_e_l[1]) + MOVOad(i_state.submsg_e_l[0], i_state.submsg_e_l[1]) //i_state->submsg_e_l[1] = temp; - MOVO_autoAU2(i_state.submsg_e_l[1], temp) + MOVOad(i_state.submsg_e_l[1], temp) //i_state->submsg_e_l[3] = _mm_shuffle_epi32(i_state->submsg_e_l[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_l[3], i_state.submsg_e_l[3], U8(0x4e)) //temp = i_state->submsg_e_l[2]; - MOVO_autoAU2(temp, i_state.submsg_e_l[2]) + MOVOad(temp, i_state.submsg_e_l[2]) //i_state->submsg_e_l[2] = _mm_unpacklo_epi64(i_state->submsg_e_l[3], i_state->submsg_e_l[2]); F_mm_unpacklo_epi64(i_state.submsg_e_l[2], i_state.submsg_e_l[3], i_state.submsg_e_l[2]) //i_state->submsg_e_l[3] = _mm_unpackhi_epi64(temp, i_state->submsg_e_l[3]); @@ -158,15 +158,15 @@ func msg_exp_even(i_state LSH512SSE2_internal) { //i_state->submsg_e_r[1] = _mm_shuffle_epi32(i_state->submsg_e_r[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_r[1], i_state.submsg_e_r[1], U8(0x4e)) //temp = i_state->submsg_e_r[0]; - MOVO_autoAU2(temp, i_state.submsg_e_r[0]) + MOVOad(temp, i_state.submsg_e_r[0]) //i_state->submsg_e_r[0] = i_state->submsg_e_r[1]; - MOVO_autoAU2(i_state.submsg_e_r[0], i_state.submsg_e_r[1]) + MOVOad(i_state.submsg_e_r[0], i_state.submsg_e_r[1]) //i_state->submsg_e_r[1] = temp; - MOVO_autoAU2(i_state.submsg_e_r[1], temp) + MOVOad(i_state.submsg_e_r[1], temp) //i_state->submsg_e_r[3] = _mm_shuffle_epi32(i_state->submsg_e_r[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_r[3], i_state.submsg_e_r[3], U8(0x4e)) //temp = i_state->submsg_e_r[2]; - MOVO_autoAU2(temp, i_state.submsg_e_r[2]) + MOVOad(temp, i_state.submsg_e_r[2]) //i_state->submsg_e_r[2] = _mm_unpacklo_epi64(i_state->submsg_e_r[3], i_state->submsg_e_r[2]); F_mm_unpacklo_epi64(i_state.submsg_e_r[2], i_state.submsg_e_r[3], i_state.submsg_e_r[2]) //i_state->submsg_e_r[3] = _mm_unpackhi_epi64(temp, i_state->submsg_e_r[3]); @@ -205,15 +205,15 @@ func msg_exp_odd(i_state LSH512SSE2_internal) { //i_state->submsg_o_l[1] = _mm_shuffle_epi32(i_state->submsg_o_l[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_l[1], i_state.submsg_o_l[1], U8(0x4e)) //temp = i_state->submsg_o_l[0]; - MOVO_autoAU2(temp, i_state.submsg_o_l[0]) + MOVOad(temp, i_state.submsg_o_l[0]) //i_state->submsg_o_l[0] = i_state->submsg_o_l[1]; - MOVO_autoAU2(i_state.submsg_o_l[0], i_state.submsg_o_l[1]) + MOVOad(i_state.submsg_o_l[0], i_state.submsg_o_l[1]) //i_state->submsg_o_l[1] = temp; - MOVO_autoAU2(i_state.submsg_o_l[1], temp) + MOVOad(i_state.submsg_o_l[1], temp) //i_state->submsg_o_l[3] = _mm_shuffle_epi32(i_state->submsg_o_l[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_l[3], i_state.submsg_o_l[3], U8(0x4e)) //temp = i_state->submsg_o_l[2]; - MOVO_autoAU2(temp, i_state.submsg_o_l[2]) + MOVOad(temp, i_state.submsg_o_l[2]) //i_state->submsg_o_l[2] = _mm_unpacklo_epi64(i_state->submsg_o_l[3], i_state->submsg_o_l[2]); F_mm_unpacklo_epi64(i_state.submsg_o_l[2], i_state.submsg_o_l[3], i_state.submsg_o_l[2]) //i_state->submsg_o_l[3] = _mm_unpackhi_epi64(temp, i_state->submsg_o_l[3]); @@ -241,15 +241,15 @@ func msg_exp_odd(i_state LSH512SSE2_internal) { //i_state->submsg_o_r[1] = _mm_shuffle_epi32(i_state->submsg_o_r[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_r[1], i_state.submsg_o_r[1], U8(0x4e)) //temp = i_state->submsg_o_r[0]; - MOVO_autoAU2(temp, i_state.submsg_o_r[0]) + MOVOad(temp, i_state.submsg_o_r[0]) //i_state->submsg_o_r[0] = i_state->submsg_o_r[1]; - MOVO_autoAU2(i_state.submsg_o_r[0], i_state.submsg_o_r[1]) + MOVOad(i_state.submsg_o_r[0], i_state.submsg_o_r[1]) //i_state->submsg_o_r[1] = temp; - MOVO_autoAU2(i_state.submsg_o_r[1], temp) + MOVOad(i_state.submsg_o_r[1], temp) //i_state->submsg_o_r[3] = _mm_shuffle_epi32(i_state->submsg_o_r[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_r[3], i_state.submsg_o_r[3], U8(0x4e)) //temp = i_state->submsg_o_r[2]; - MOVO_autoAU2(temp, i_state.submsg_o_r[2]) + MOVOad(temp, i_state.submsg_o_r[2]) //i_state->submsg_o_r[2] = _mm_unpacklo_epi64(i_state->submsg_o_r[3], i_state->submsg_o_r[2]); F_mm_unpacklo_epi64(i_state.submsg_o_r[2], i_state.submsg_o_r[3], i_state.submsg_o_r[2]) //i_state->submsg_o_r[3] = _mm_unpackhi_epi64(temp, i_state->submsg_o_r[3]); @@ -490,13 +490,13 @@ func word_perm(cv_l, cv_r []VecVirtual, temp []VecVirtual) { //__m128i temp[2]; //temp[0] = cv_l[0]; - MOVO_autoAU2(temp[0], cv_l[0]) + MOVOad(temp[0], cv_l[0]) //cv_l[0] = _mm_unpacklo_epi64(cv_l[1], cv_l[0]); F_mm_unpacklo_epi64(cv_l[0], cv_l[1], cv_l[0]) //cv_l[1] = _mm_unpackhi_epi64(temp[0], cv_l[1]); F_mm_unpackhi_epi64(cv_l[1], temp[0], cv_l[1]) //temp[0] = cv_l[2]; - MOVO_autoAU2(temp[0], cv_l[2]) + MOVOad(temp[0], cv_l[2]) //cv_l[2] = _mm_unpacklo_epi64(cv_l[3], cv_l[2]); F_mm_unpacklo_epi64(cv_l[2], cv_l[3], cv_l[2]) //cv_l[3] = _mm_unpackhi_epi64(temp[0], cv_l[3]); @@ -504,7 +504,7 @@ func word_perm(cv_l, cv_r []VecVirtual, temp []VecVirtual) { //cv_r[1] = _mm_shuffle_epi32(cv_r[1], 0x4e); F_mm_shuffle_epi32(cv_r[1], cv_r[1], U8(0x4e)) //temp[0] = cv_r[0]; - MOVO_autoAU2(temp[0], cv_r[0]) + MOVOad(temp[0], cv_r[0]) //cv_r[0] = _mm_unpacklo_epi64(cv_r[0], cv_r[1]); F_mm_unpacklo_epi64(cv_r[0], cv_r[0], cv_r[1]) //cv_r[1] = _mm_unpackhi_epi64(cv_r[1], temp[0]); @@ -512,31 +512,31 @@ func word_perm(cv_l, cv_r []VecVirtual, temp []VecVirtual) { //cv_r[3] = _mm_shuffle_epi32(cv_r[3], 0x4e); F_mm_shuffle_epi32(cv_r[3], cv_r[3], U8(0x4e)) //temp[0] = cv_r[2]; - MOVO_autoAU2(temp[0], cv_r[2]) + MOVOad(temp[0], cv_r[2]) //cv_r[2] = _mm_unpacklo_epi64(cv_r[2], cv_r[3]); F_mm_unpacklo_epi64(cv_r[2], cv_r[2], cv_r[3]) //cv_r[3] = _mm_unpackhi_epi64(cv_r[3], temp[0]); F_mm_unpackhi_epi64(cv_r[3], cv_r[3], temp[0]) //temp[0] = cv_l[0]; - MOVO_autoAU2(temp[0], cv_l[0]) + MOVOad(temp[0], cv_l[0]) //temp[1] = cv_l[1]; - MOVO_autoAU2(temp[1], cv_l[1]) + MOVOad(temp[1], cv_l[1]) //cv_l[0] = cv_l[2]; - MOVO_autoAU2(cv_l[0], cv_l[2]) + MOVOad(cv_l[0], cv_l[2]) //cv_l[1] = cv_l[3]; - MOVO_autoAU2(cv_l[1], cv_l[3]) + MOVOad(cv_l[1], cv_l[3]) //cv_l[2] = cv_r[2]; - MOVO_autoAU2(cv_l[2], cv_r[2]) + MOVOad(cv_l[2], cv_r[2]) //cv_l[3] = cv_r[3]; - MOVO_autoAU2(cv_l[3], cv_r[3]) + MOVOad(cv_l[3], cv_r[3]) //cv_r[2] = cv_r[0]; - MOVO_autoAU2(cv_r[2], cv_r[0]) + MOVOad(cv_r[2], cv_r[0]) //cv_r[3] = cv_r[1]; - MOVO_autoAU2(cv_r[3], cv_r[1]) + MOVOad(cv_r[3], cv_r[1]) //cv_r[0] = temp[0]; - MOVO_autoAU2(cv_r[0], temp[0]) + MOVOad(cv_r[0], temp[0]) //cv_r[1] = temp[1]; - MOVO_autoAU2(cv_r[1], temp[1]) + MOVOad(cv_r[1], temp[1]) } /* -------------------------------------------------------- */ diff --git a/lsh512/avo/x86/lsh512ssse3/lsh512_ssse3.go b/lsh512/avo/x86/lsh512ssse3/lsh512_ssse3.go index 8bce183..b018f87 100644 --- a/lsh512/avo/x86/lsh512ssse3/lsh512_ssse3.go +++ b/lsh512/avo/x86/lsh512ssse3/lsh512_ssse3.go @@ -122,15 +122,15 @@ func msg_exp_even(i_state LSH512SSSE3_internal) { //i_state->submsg_e_l[1] = _mm_shuffle_epi32(i_state->submsg_e_l[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_l[1], i_state.submsg_e_l[1], U8(0x4e)) //temp = i_state->submsg_e_l[0]; - MOVO_autoAU2(temp, i_state.submsg_e_l[0]) + MOVOad(temp, i_state.submsg_e_l[0]) //i_state->submsg_e_l[0] = i_state->submsg_e_l[1]; - MOVO_autoAU2(i_state.submsg_e_l[0], i_state.submsg_e_l[1]) + MOVOad(i_state.submsg_e_l[0], i_state.submsg_e_l[1]) //i_state->submsg_e_l[1] = temp; - MOVO_autoAU2(i_state.submsg_e_l[1], temp) + MOVOad(i_state.submsg_e_l[1], temp) //i_state->submsg_e_l[3] = _mm_shuffle_epi32(i_state->submsg_e_l[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_l[3], i_state.submsg_e_l[3], U8(0x4e)) //temp = i_state->submsg_e_l[2]; - MOVO_autoAU2(temp, i_state.submsg_e_l[2]) + MOVOad(temp, i_state.submsg_e_l[2]) //i_state->submsg_e_l[2] = _mm_unpacklo_epi64(i_state->submsg_e_l[3], i_state->submsg_e_l[2]); F_mm_unpacklo_epi64(i_state.submsg_e_l[2], i_state.submsg_e_l[3], i_state.submsg_e_l[2]) //i_state->submsg_e_l[3] = _mm_unpackhi_epi64(temp, i_state->submsg_e_l[3]); @@ -158,15 +158,15 @@ func msg_exp_even(i_state LSH512SSSE3_internal) { //i_state->submsg_e_r[1] = _mm_shuffle_epi32(i_state->submsg_e_r[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_r[1], i_state.submsg_e_r[1], U8(0x4e)) //temp = i_state->submsg_e_r[0]; - MOVO_autoAU2(temp, i_state.submsg_e_r[0]) + MOVOad(temp, i_state.submsg_e_r[0]) //i_state->submsg_e_r[0] = i_state->submsg_e_r[1]; - MOVO_autoAU2(i_state.submsg_e_r[0], i_state.submsg_e_r[1]) + MOVOad(i_state.submsg_e_r[0], i_state.submsg_e_r[1]) //i_state->submsg_e_r[1] = temp; - MOVO_autoAU2(i_state.submsg_e_r[1], temp) + MOVOad(i_state.submsg_e_r[1], temp) //i_state->submsg_e_r[3] = _mm_shuffle_epi32(i_state->submsg_e_r[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_e_r[3], i_state.submsg_e_r[3], U8(0x4e)) //temp = i_state->submsg_e_r[2]; - MOVO_autoAU2(temp, i_state.submsg_e_r[2]) + MOVOad(temp, i_state.submsg_e_r[2]) //i_state->submsg_e_r[2] = _mm_unpacklo_epi64(i_state->submsg_e_r[3], i_state->submsg_e_r[2]); F_mm_unpacklo_epi64(i_state.submsg_e_r[2], i_state.submsg_e_r[3], i_state.submsg_e_r[2]) //i_state->submsg_e_r[3] = _mm_unpackhi_epi64(temp, i_state->submsg_e_r[3]); @@ -205,15 +205,15 @@ func msg_exp_odd(i_state LSH512SSSE3_internal) { //i_state->submsg_o_l[1] = _mm_shuffle_epi32(i_state->submsg_o_l[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_l[1], i_state.submsg_o_l[1], U8(0x4e)) //temp = i_state->submsg_o_l[0]; - MOVO_autoAU2(temp, i_state.submsg_o_l[0]) + MOVOad(temp, i_state.submsg_o_l[0]) //i_state->submsg_o_l[0] = i_state->submsg_o_l[1]; - MOVO_autoAU2(i_state.submsg_o_l[0], i_state.submsg_o_l[1]) + MOVOad(i_state.submsg_o_l[0], i_state.submsg_o_l[1]) //i_state->submsg_o_l[1] = temp; - MOVO_autoAU2(i_state.submsg_o_l[1], temp) + MOVOad(i_state.submsg_o_l[1], temp) //i_state->submsg_o_l[3] = _mm_shuffle_epi32(i_state->submsg_o_l[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_l[3], i_state.submsg_o_l[3], U8(0x4e)) //temp = i_state->submsg_o_l[2]; - MOVO_autoAU2(temp, i_state.submsg_o_l[2]) + MOVOad(temp, i_state.submsg_o_l[2]) //i_state->submsg_o_l[2] = _mm_unpacklo_epi64(i_state->submsg_o_l[3], i_state->submsg_o_l[2]); F_mm_unpacklo_epi64(i_state.submsg_o_l[2], i_state.submsg_o_l[3], i_state.submsg_o_l[2]) //i_state->submsg_o_l[3] = _mm_unpackhi_epi64(temp, i_state->submsg_o_l[3]); @@ -241,15 +241,15 @@ func msg_exp_odd(i_state LSH512SSSE3_internal) { //i_state->submsg_o_r[1] = _mm_shuffle_epi32(i_state->submsg_o_r[1], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_r[1], i_state.submsg_o_r[1], U8(0x4e)) //temp = i_state->submsg_o_r[0]; - MOVO_autoAU2(temp, i_state.submsg_o_r[0]) + MOVOad(temp, i_state.submsg_o_r[0]) //i_state->submsg_o_r[0] = i_state->submsg_o_r[1]; - MOVO_autoAU2(i_state.submsg_o_r[0], i_state.submsg_o_r[1]) + MOVOad(i_state.submsg_o_r[0], i_state.submsg_o_r[1]) //i_state->submsg_o_r[1] = temp; - MOVO_autoAU2(i_state.submsg_o_r[1], temp) + MOVOad(i_state.submsg_o_r[1], temp) //i_state->submsg_o_r[3] = _mm_shuffle_epi32(i_state->submsg_o_r[3], 0x4e); F_mm_shuffle_epi32(i_state.submsg_o_r[3], i_state.submsg_o_r[3], U8(0x4e)) //temp = i_state->submsg_o_r[2]; - MOVO_autoAU2(temp, i_state.submsg_o_r[2]) + MOVOad(temp, i_state.submsg_o_r[2]) //i_state->submsg_o_r[2] = _mm_unpacklo_epi64(i_state->submsg_o_r[3], i_state->submsg_o_r[2]); F_mm_unpacklo_epi64(i_state.submsg_o_r[2], i_state.submsg_o_r[3], i_state.submsg_o_r[2]) //i_state->submsg_o_r[3] = _mm_unpackhi_epi64(temp, i_state->submsg_o_r[3]); @@ -437,13 +437,13 @@ func word_perm(cv_l, cv_r []VecVirtual, temp []VecVirtual) { //__m128i temp[2]; //temp[0] = cv_l[0]; - MOVO_autoAU2(temp[0], cv_l[0]) + MOVOad(temp[0], cv_l[0]) //cv_l[0] = _mm_unpacklo_epi64(cv_l[1], cv_l[0]); F_mm_unpacklo_epi64(cv_l[0], cv_l[1], cv_l[0]) //cv_l[1] = _mm_unpackhi_epi64(temp[0], cv_l[1]); F_mm_unpackhi_epi64(cv_l[1], temp[0], cv_l[1]) //temp[0] = cv_l[2]; - MOVO_autoAU2(temp[0], cv_l[2]) + MOVOad(temp[0], cv_l[2]) //cv_l[2] = _mm_unpacklo_epi64(cv_l[3], cv_l[2]); F_mm_unpacklo_epi64(cv_l[2], cv_l[3], cv_l[2]) //cv_l[3] = _mm_unpackhi_epi64(temp[0], cv_l[3]); @@ -451,7 +451,7 @@ func word_perm(cv_l, cv_r []VecVirtual, temp []VecVirtual) { //cv_r[1] = _mm_shuffle_epi32(cv_r[1], 0x4e); F_mm_shuffle_epi32(cv_r[1], cv_r[1], U8(0x4e)) //temp[0] = cv_r[0]; - MOVO_autoAU2(temp[0], cv_r[0]) + MOVOad(temp[0], cv_r[0]) //cv_r[0] = _mm_unpacklo_epi64(cv_r[0], cv_r[1]); F_mm_unpacklo_epi64(cv_r[0], cv_r[0], cv_r[1]) //cv_r[1] = _mm_unpackhi_epi64(cv_r[1], temp[0]); @@ -459,31 +459,31 @@ func word_perm(cv_l, cv_r []VecVirtual, temp []VecVirtual) { //cv_r[3] = _mm_shuffle_epi32(cv_r[3], 0x4e); F_mm_shuffle_epi32(cv_r[3], cv_r[3], U8(0x4e)) //temp[0] = cv_r[2]; - MOVO_autoAU2(temp[0], cv_r[2]) + MOVOad(temp[0], cv_r[2]) //cv_r[2] = _mm_unpacklo_epi64(cv_r[2], cv_r[3]); F_mm_unpacklo_epi64(cv_r[2], cv_r[2], cv_r[3]) //cv_r[3] = _mm_unpackhi_epi64(cv_r[3], temp[0]); F_mm_unpackhi_epi64(cv_r[3], cv_r[3], temp[0]) //temp[0] = cv_l[0]; - MOVO_autoAU2(temp[0], cv_l[0]) + MOVOad(temp[0], cv_l[0]) //temp[1] = cv_l[1]; - MOVO_autoAU2(temp[1], cv_l[1]) + MOVOad(temp[1], cv_l[1]) //cv_l[0] = cv_l[2]; - MOVO_autoAU2(cv_l[0], cv_l[2]) + MOVOad(cv_l[0], cv_l[2]) //cv_l[1] = cv_l[3]; - MOVO_autoAU2(cv_l[1], cv_l[3]) + MOVOad(cv_l[1], cv_l[3]) //cv_l[2] = cv_r[2]; - MOVO_autoAU2(cv_l[2], cv_r[2]) + MOVOad(cv_l[2], cv_r[2]) //cv_l[3] = cv_r[3]; - MOVO_autoAU2(cv_l[3], cv_r[3]) + MOVOad(cv_l[3], cv_r[3]) //cv_r[2] = cv_r[0]; - MOVO_autoAU2(cv_r[2], cv_r[0]) + MOVOad(cv_r[2], cv_r[0]) //cv_r[3] = cv_r[1]; - MOVO_autoAU2(cv_r[3], cv_r[1]) + MOVOad(cv_r[3], cv_r[1]) //cv_r[0] = temp[0]; - MOVO_autoAU2(cv_r[0], temp[0]) + MOVOad(cv_r[0], temp[0]) //cv_r[1] = temp[1]; - MOVO_autoAU2(cv_r[1], temp[1]) + MOVOad(cv_r[1], temp[1]) } /* -------------------------------------------------------- */