package skein
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"unsafe"
|
|
)
|
|
|
|
type CtxtHeader struct {
|
|
hashBitLen uint
|
|
bCnt uint
|
|
T [2]uint64
|
|
}
|
|
|
|
type Skein1024 struct {
|
|
h CtxtHeader
|
|
X [SKEIN1024_STATE_WORDS]uint64
|
|
b [SKEIN1024_BLOCK_BYTES]byte
|
|
}
|
|
|
|
func (s *Skein1024) Init(size uint) {
|
|
s.h.hashBitLen = size
|
|
switch size {
|
|
case 1024:
|
|
copy(s.X[:], SKEIN1024_IV_1024)
|
|
//TODO: prebuilds for other sizes.
|
|
default:
|
|
//Build the IV values
|
|
}
|
|
s.h.T[0] = 0
|
|
s.h.T[1] = (1 << 62) | (48 << 56)
|
|
s.h.bCnt=0
|
|
}
|
|
|
|
func (s *Skein1024) Update(msg []byte) {
|
|
n := uint(0)
|
|
if uint(len(msg)) + s.h.bCnt > SKEIN1024_BLOCK_BYTES {
|
|
if s.h.bCnt > 0 {
|
|
n = SKEIN1024_BLOCK_BYTES - s.h.bCnt
|
|
if n > 0 {
|
|
copy(s.b[s.h.bCnt:],msg)
|
|
msg = msg[n:]
|
|
s.h.bCnt += n
|
|
}
|
|
if s.h.bCnt != SKEIN1024_BLOCK_BYTES {
|
|
panic("ASSERTION FAILURE")
|
|
}
|
|
s.ProcessBlock(s.b[:],make([]uint64, SKEIN1024_STATE_WORDS+4), 1, SKEIN1024_BLOCK_BYTES)
|
|
s.h.bCnt = 0
|
|
}
|
|
|
|
if uint(len(msg)) > SKEIN1024_BLOCK_BYTES {
|
|
n = uint(len(msg) - 1) / SKEIN1024_BLOCK_BYTES
|
|
s.ProcessBlock(msg,make([]uint64, SKEIN1024_STATE_WORDS+4),n,SKEIN1024_BLOCK_BYTES)
|
|
msg = msg[n * SKEIN1024_BLOCK_BYTES:]
|
|
}
|
|
//ASSERT: ss.h.bCnt == 0
|
|
}
|
|
|
|
if len(msg) > 0 {
|
|
copy(s.b[s.h.bCnt:], msg)
|
|
s.h.bCnt += uint(len(msg))
|
|
}
|
|
}
|
|
|
|
func (s *Skein1024) Final(outp []byte) {
|
|
var n, byteCnt uint
|
|
X := make([]uint64, SKEIN1024_STATE_WORDS)
|
|
|
|
s.h.T[1] |= (1 << 63)
|
|
if s.h.bCnt < SKEIN1024_BLOCK_BYTES {
|
|
for j := s.h.bCnt; j < SKEIN1024_BLOCK_BYTES; j++ {
|
|
s.b[j] = 0
|
|
}
|
|
}
|
|
kw := make([]uint64, SKEIN1024_STATE_WORDS+4)
|
|
s.ProcessBlock(s.b[:],kw,1,s.h.bCnt)
|
|
|
|
byteCnt = (s.h.hashBitLen + 7) >> 3
|
|
|
|
for i, _ := range s.b {s.b[i] = 0}
|
|
copy(X, s.X[:])
|
|
for i := uint(0); i*SKEIN1024_BLOCK_BYTES < byteCnt; i++ {
|
|
binary.LittleEndian.PutUint64(s.b[:], uint64(i))
|
|
s.h.T[0] = 0
|
|
s.h.T[1] = (uint64(1) << 62 | uint64(63) << 56 | uint64(1) << 63)
|
|
s.h.bCnt=0
|
|
//ZERO OUT KW ARRAY
|
|
s.ProcessBlock(s.b[:],kw,1,8)
|
|
n = byteCnt - i*SKEIN1024_BLOCK_BYTES /* number of output bytes left to go */
|
|
if n >= SKEIN1024_BLOCK_BYTES {
|
|
n = SKEIN1024_BLOCK_BYTES
|
|
}
|
|
//copy(outp[i*SKEIN1024_BLOCK_BYTES:],s.X)
|
|
CopyInt64ToBytes(outp[i*SKEIN1024_BLOCK_BYTES:], s.X[:])
|
|
//Maybe unecessary?
|
|
//Skein_Show_Final(1024,&s.h,n,hashVal+i*SKEIN1024_BLOCK_BYTES)
|
|
copy(s.X[:],X)
|
|
|
|
}
|
|
}
|
|
|
|
func CopyInt64ToBytes(dest []byte, src []uint64) {
|
|
up := (*[]uint64)(unsafe.Pointer(&dest))
|
|
for i := 0; i < len(src); i++ {
|
|
(*up)[i] = src[i]
|
|
}
|
|
}
|
|
|
|
func CopyBytesToInt64(dest []uint64, src []byte) {
|
|
up := (*[]uint64)(unsafe.Pointer(&src))
|
|
for i := uint(0); i < uint(len(src) / 8); i++ {
|
|
dest[i] = (*up)[i]
|
|
}
|
|
}
|
|
|
|
func (s *Skein1024) ProcessBlock(blk []byte, kw []uint64, blkCnt, byteCntAdd uint) {
|
|
const WCNT = SKEIN1024_STATE_WORDS
|
|
|
|
//var kw [WCNT+4]uint6
|
|
|
|
var X00,X01,X02,X03,X04,X05,X06,X07,X08,X09,X10,X11,X12,X13,X14,X15 uint64
|
|
var w_ [WCNT]uint64
|
|
w := w_[:]
|
|
//w := make([]uint64, WCNT)
|
|
|
|
//ASSERT blkCnt != 0
|
|
ks := kw[3:]
|
|
kw[0] = s.h.T[0]
|
|
kw[1] = s.h.T[1]
|
|
|
|
/*
|
|
if blkCnt == 0 {
|
|
fmt.Println("Is this ever called?")
|
|
blkCnt++
|
|
}*/
|
|
|
|
for ;blkCnt > 0; blkCnt-- {
|
|
kw[0] += uint64(byteCntAdd)
|
|
|
|
ks[0] = s.X[0]
|
|
ks[1] = s.X[1]
|
|
ks[2] = s.X[2]
|
|
ks[3] = s.X[3]
|
|
ks[4] = s.X[4]
|
|
ks[5] = s.X[5]
|
|
ks[6] = s.X[6]
|
|
ks[7] = s.X[7]
|
|
ks[8] = s.X[8]
|
|
ks[9] = s.X[9]
|
|
ks[10] = s.X[10]
|
|
ks[11] = s.X[11]
|
|
ks[12] = s.X[12]
|
|
ks[13] = s.X[13]
|
|
ks[14] = s.X[14]
|
|
ks[15] = s.X[15]
|
|
ks[16] = ks[0] ^ ks[1] ^ ks[2] ^ ks[3] ^ ks[4] ^ ks[5] ^ ks[6] ^ ks[7] ^ ks[8] ^ ks[9] ^ ks[10] ^ ks[11] ^ ks[12] ^ ks[13] ^ ks[14] ^ ks[15] ^ ((0xA9FC1A22) + (( uint64(0x1BD11BDA)) << 32))
|
|
|
|
kw[2] = kw[0] ^ kw[1]
|
|
|
|
//copy(w[:], blk[:8*WCNT])
|
|
CopyBytesToInt64(w, blk)
|
|
|
|
X00 = w[ 0] + ks[ 0] /* do the first full key injection */
|
|
X01 = w[ 1] + ks[ 1]
|
|
X02 = w[ 2] + ks[ 2]
|
|
X03 = w[ 3] + ks[ 3]
|
|
X04 = w[ 4] + ks[ 4]
|
|
X05 = w[ 5] + ks[ 5]
|
|
X06 = w[ 6] + ks[ 6]
|
|
X07 = w[ 7] + ks[ 7]
|
|
X08 = w[ 8] + ks[ 8]
|
|
X09 = w[ 9] + ks[ 9]
|
|
X10 = w[10] + ks[10]
|
|
X11 = w[11] + ks[11]
|
|
X12 = w[12] + ks[12]
|
|
X13 = w[13] + ks[13] + kw[0]
|
|
X14 = w[14] + ks[14] + kw[1]
|
|
X15 = w[15] + ks[15]
|
|
|
|
ks[0] = s.X[0]
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(0))+ 1) % 17]
|
|
X01 += ks[((2*(0))+ 2) % 17]
|
|
X02 += ks[((2*(0))+ 3) % 17]
|
|
X03 += ks[((2*(0))+ 4) % 17]
|
|
X04 += ks[((2*(0))+ 5) % 17]
|
|
X05 += ks[((2*(0))+ 6) % 17]
|
|
X06 += ks[((2*(0))+ 7) % 17]
|
|
X07 += ks[((2*(0))+ 8) % 17]
|
|
X08 += ks[((2*(0))+ 9) % 17]
|
|
X09 += ks[((2*(0))+10) % 17]
|
|
X10 += ks[((2*(0))+11) % 17]
|
|
X11 += ks[((2*(0))+12) % 17]
|
|
X12 += ks[((2*(0))+13) % 17]
|
|
X13 += ks[((2*(0))+14) % 17] + kw[((2*(0))+1) % 3]
|
|
X14 += ks[((2*(0))+15) % 17] + kw[((2*(0))+2) % 3]
|
|
X15 += ks[((2*(0))+16) % 17] + (2*(0))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(0)+1)+ 1) % 17]
|
|
X01 += ks[((2*(0)+1)+ 2) % 17]
|
|
X02 += ks[((2*(0)+1)+ 3) % 17]
|
|
X03 += ks[((2*(0)+1)+ 4) % 17]
|
|
X04 += ks[((2*(0)+1)+ 5) % 17]
|
|
X05 += ks[((2*(0)+1)+ 6) % 17]
|
|
X06 += ks[((2*(0)+1)+ 7) % 17]
|
|
X07 += ks[((2*(0)+1)+ 8) % 17]
|
|
X08 += ks[((2*(0)+1)+ 9) % 17]
|
|
X09 += ks[((2*(0)+1)+10) % 17]
|
|
X10 += ks[((2*(0)+1)+11) % 17]
|
|
X11 += ks[((2*(0)+1)+12) % 17]
|
|
X12 += ks[((2*(0)+1)+13) % 17]
|
|
X13 += ks[((2*(0)+1)+14) % 17] + kw[((2*(0)+1)+1) % 3]
|
|
X14 += ks[((2*(0)+1)+15) % 17] + kw[((2*(0)+1)+2) % 3]
|
|
X15 += ks[((2*(0)+1)+16) % 17] + (2*(0)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(1))+ 1) % 17]
|
|
X01 += ks[((2*(1))+ 2) % 17]
|
|
X02 += ks[((2*(1))+ 3) % 17]
|
|
X03 += ks[((2*(1))+ 4) % 17]
|
|
X04 += ks[((2*(1))+ 5) % 17]
|
|
X05 += ks[((2*(1))+ 6) % 17]
|
|
X06 += ks[((2*(1))+ 7) % 17]
|
|
X07 += ks[((2*(1))+ 8) % 17]
|
|
X08 += ks[((2*(1))+ 9) % 17]
|
|
X09 += ks[((2*(1))+10) % 17]
|
|
X10 += ks[((2*(1))+11) % 17]
|
|
X11 += ks[((2*(1))+12) % 17]
|
|
X12 += ks[((2*(1))+13) % 17]
|
|
X13 += ks[((2*(1))+14) % 17] + kw[((2*(1))+1) % 3]
|
|
X14 += ks[((2*(1))+15) % 17] + kw[((2*(1))+2) % 3]
|
|
X15 += ks[((2*(1))+16) % 17] + (2*(1))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(1)+1)+ 1) % 17]
|
|
X01 += ks[((2*(1)+1)+ 2) % 17]
|
|
X02 += ks[((2*(1)+1)+ 3) % 17]
|
|
X03 += ks[((2*(1)+1)+ 4) % 17]
|
|
X04 += ks[((2*(1)+1)+ 5) % 17]
|
|
X05 += ks[((2*(1)+1)+ 6) % 17]
|
|
X06 += ks[((2*(1)+1)+ 7) % 17]
|
|
X07 += ks[((2*(1)+1)+ 8) % 17]
|
|
X08 += ks[((2*(1)+1)+ 9) % 17]
|
|
X09 += ks[((2*(1)+1)+10) % 17]
|
|
X10 += ks[((2*(1)+1)+11) % 17]
|
|
X11 += ks[((2*(1)+1)+12) % 17]
|
|
X12 += ks[((2*(1)+1)+13) % 17]
|
|
X13 += ks[((2*(1)+1)+14) % 17] + kw[((2*(1)+1)+1) % 3]
|
|
X14 += ks[((2*(1)+1)+15) % 17] + kw[((2*(1)+1)+2) % 3]
|
|
X15 += ks[((2*(1)+1)+16) % 17] + (2*(1)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(2))+ 1) % 17]
|
|
X01 += ks[((2*(2))+ 2) % 17]
|
|
X02 += ks[((2*(2))+ 3) % 17]
|
|
X03 += ks[((2*(2))+ 4) % 17]
|
|
X04 += ks[((2*(2))+ 5) % 17]
|
|
X05 += ks[((2*(2))+ 6) % 17]
|
|
X06 += ks[((2*(2))+ 7) % 17]
|
|
X07 += ks[((2*(2))+ 8) % 17]
|
|
X08 += ks[((2*(2))+ 9) % 17]
|
|
X09 += ks[((2*(2))+10) % 17]
|
|
X10 += ks[((2*(2))+11) % 17]
|
|
X11 += ks[((2*(2))+12) % 17]
|
|
X12 += ks[((2*(2))+13) % 17]
|
|
X13 += ks[((2*(2))+14) % 17] + kw[((2*(2))+1) % 3]
|
|
X14 += ks[((2*(2))+15) % 17] + kw[((2*(2))+2) % 3]
|
|
X15 += ks[((2*(2))+16) % 17] + (2*(2))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(2)+1)+ 1) % 17]
|
|
X01 += ks[((2*(2)+1)+ 2) % 17]
|
|
X02 += ks[((2*(2)+1)+ 3) % 17]
|
|
X03 += ks[((2*(2)+1)+ 4) % 17]
|
|
X04 += ks[((2*(2)+1)+ 5) % 17]
|
|
X05 += ks[((2*(2)+1)+ 6) % 17]
|
|
X06 += ks[((2*(2)+1)+ 7) % 17]
|
|
X07 += ks[((2*(2)+1)+ 8) % 17]
|
|
X08 += ks[((2*(2)+1)+ 9) % 17]
|
|
X09 += ks[((2*(2)+1)+10) % 17]
|
|
X10 += ks[((2*(2)+1)+11) % 17]
|
|
X11 += ks[((2*(2)+1)+12) % 17]
|
|
X12 += ks[((2*(2)+1)+13) % 17]
|
|
X13 += ks[((2*(2)+1)+14) % 17] + kw[((2*(2)+1)+1) % 3]
|
|
X14 += ks[((2*(2)+1)+15) % 17] + kw[((2*(2)+1)+2) % 3]
|
|
X15 += ks[((2*(2)+1)+16) % 17] + (2*(2)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(3))+ 1) % 17]
|
|
X01 += ks[((2*(3))+ 2) % 17]
|
|
X02 += ks[((2*(3))+ 3) % 17]
|
|
X03 += ks[((2*(3))+ 4) % 17]
|
|
X04 += ks[((2*(3))+ 5) % 17]
|
|
X05 += ks[((2*(3))+ 6) % 17]
|
|
X06 += ks[((2*(3))+ 7) % 17]
|
|
X07 += ks[((2*(3))+ 8) % 17]
|
|
X08 += ks[((2*(3))+ 9) % 17]
|
|
X09 += ks[((2*(3))+10) % 17]
|
|
X10 += ks[((2*(3))+11) % 17]
|
|
X11 += ks[((2*(3))+12) % 17]
|
|
X12 += ks[((2*(3))+13) % 17]
|
|
X13 += ks[((2*(3))+14) % 17] + kw[((2*(3))+1) % 3]
|
|
X14 += ks[((2*(3))+15) % 17] + kw[((2*(3))+2) % 3]
|
|
X15 += ks[((2*(3))+16) % 17] + (2*(3))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(3)+1)+ 1) % 17]
|
|
X01 += ks[((2*(3)+1)+ 2) % 17]
|
|
X02 += ks[((2*(3)+1)+ 3) % 17]
|
|
X03 += ks[((2*(3)+1)+ 4) % 17]
|
|
X04 += ks[((2*(3)+1)+ 5) % 17]
|
|
X05 += ks[((2*(3)+1)+ 6) % 17]
|
|
X06 += ks[((2*(3)+1)+ 7) % 17]
|
|
X07 += ks[((2*(3)+1)+ 8) % 17]
|
|
X08 += ks[((2*(3)+1)+ 9) % 17]
|
|
X09 += ks[((2*(3)+1)+10) % 17]
|
|
X10 += ks[((2*(3)+1)+11) % 17]
|
|
X11 += ks[((2*(3)+1)+12) % 17]
|
|
X12 += ks[((2*(3)+1)+13) % 17]
|
|
X13 += ks[((2*(3)+1)+14) % 17] + kw[((2*(3)+1)+1) % 3]
|
|
X14 += ks[((2*(3)+1)+15) % 17] + kw[((2*(3)+1)+2) % 3]
|
|
X15 += ks[((2*(3)+1)+16) % 17] + (2*(3)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(4))+ 1) % 17]
|
|
X01 += ks[((2*(4))+ 2) % 17]
|
|
X02 += ks[((2*(4))+ 3) % 17]
|
|
X03 += ks[((2*(4))+ 4) % 17]
|
|
X04 += ks[((2*(4))+ 5) % 17]
|
|
X05 += ks[((2*(4))+ 6) % 17]
|
|
X06 += ks[((2*(4))+ 7) % 17]
|
|
X07 += ks[((2*(4))+ 8) % 17]
|
|
X08 += ks[((2*(4))+ 9) % 17]
|
|
X09 += ks[((2*(4))+10) % 17]
|
|
X10 += ks[((2*(4))+11) % 17]
|
|
X11 += ks[((2*(4))+12) % 17]
|
|
X12 += ks[((2*(4))+13) % 17]
|
|
X13 += ks[((2*(4))+14) % 17] + kw[((2*(4))+1) % 3]
|
|
X14 += ks[((2*(4))+15) % 17] + kw[((2*(4))+2) % 3]
|
|
X15 += ks[((2*(4))+16) % 17] + (2*(4))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(4)+1)+ 1) % 17]
|
|
X01 += ks[((2*(4)+1)+ 2) % 17]
|
|
X02 += ks[((2*(4)+1)+ 3) % 17]
|
|
X03 += ks[((2*(4)+1)+ 4) % 17]
|
|
X04 += ks[((2*(4)+1)+ 5) % 17]
|
|
X05 += ks[((2*(4)+1)+ 6) % 17]
|
|
X06 += ks[((2*(4)+1)+ 7) % 17]
|
|
X07 += ks[((2*(4)+1)+ 8) % 17]
|
|
X08 += ks[((2*(4)+1)+ 9) % 17]
|
|
X09 += ks[((2*(4)+1)+10) % 17]
|
|
X10 += ks[((2*(4)+1)+11) % 17]
|
|
X11 += ks[((2*(4)+1)+12) % 17]
|
|
X12 += ks[((2*(4)+1)+13) % 17]
|
|
X13 += ks[((2*(4)+1)+14) % 17] + kw[((2*(4)+1)+1) % 3]
|
|
X14 += ks[((2*(4)+1)+15) % 17] + kw[((2*(4)+1)+2) % 3]
|
|
X15 += ks[((2*(4)+1)+16) % 17] + (2*(4)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(5))+ 1) % 17]
|
|
X01 += ks[((2*(5))+ 2) % 17]
|
|
X02 += ks[((2*(5))+ 3) % 17]
|
|
X03 += ks[((2*(5))+ 4) % 17]
|
|
X04 += ks[((2*(5))+ 5) % 17]
|
|
X05 += ks[((2*(5))+ 6) % 17]
|
|
X06 += ks[((2*(5))+ 7) % 17]
|
|
X07 += ks[((2*(5))+ 8) % 17]
|
|
X08 += ks[((2*(5))+ 9) % 17]
|
|
X09 += ks[((2*(5))+10) % 17]
|
|
X10 += ks[((2*(5))+11) % 17]
|
|
X11 += ks[((2*(5))+12) % 17]
|
|
X12 += ks[((2*(5))+13) % 17]
|
|
X13 += ks[((2*(5))+14) % 17] + kw[((2*(5))+1) % 3]
|
|
X14 += ks[((2*(5))+15) % 17] + kw[((2*(5))+2) % 3]
|
|
X15 += ks[((2*(5))+16) % 17] + (2*(5))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(5)+1)+ 1) % 17]
|
|
X01 += ks[((2*(5)+1)+ 2) % 17]
|
|
X02 += ks[((2*(5)+1)+ 3) % 17]
|
|
X03 += ks[((2*(5)+1)+ 4) % 17]
|
|
X04 += ks[((2*(5)+1)+ 5) % 17]
|
|
X05 += ks[((2*(5)+1)+ 6) % 17]
|
|
X06 += ks[((2*(5)+1)+ 7) % 17]
|
|
X07 += ks[((2*(5)+1)+ 8) % 17]
|
|
X08 += ks[((2*(5)+1)+ 9) % 17]
|
|
X09 += ks[((2*(5)+1)+10) % 17]
|
|
X10 += ks[((2*(5)+1)+11) % 17]
|
|
X11 += ks[((2*(5)+1)+12) % 17]
|
|
X12 += ks[((2*(5)+1)+13) % 17]
|
|
X13 += ks[((2*(5)+1)+14) % 17] + kw[((2*(5)+1)+1) % 3]
|
|
X14 += ks[((2*(5)+1)+15) % 17] + kw[((2*(5)+1)+2) % 3]
|
|
X15 += ks[((2*(5)+1)+16) % 17] + (2*(5)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(6))+ 1) % 17]
|
|
X01 += ks[((2*(6))+ 2) % 17]
|
|
X02 += ks[((2*(6))+ 3) % 17]
|
|
X03 += ks[((2*(6))+ 4) % 17]
|
|
X04 += ks[((2*(6))+ 5) % 17]
|
|
X05 += ks[((2*(6))+ 6) % 17]
|
|
X06 += ks[((2*(6))+ 7) % 17]
|
|
X07 += ks[((2*(6))+ 8) % 17]
|
|
X08 += ks[((2*(6))+ 9) % 17]
|
|
X09 += ks[((2*(6))+10) % 17]
|
|
X10 += ks[((2*(6))+11) % 17]
|
|
X11 += ks[((2*(6))+12) % 17]
|
|
X12 += ks[((2*(6))+13) % 17]
|
|
X13 += ks[((2*(6))+14) % 17] + kw[((2*(6))+1) % 3]
|
|
X14 += ks[((2*(6))+15) % 17] + kw[((2*(6))+2) % 3]
|
|
X15 += ks[((2*(6))+16) % 17] + (2*(6))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(6)+1)+ 1) % 17]
|
|
X01 += ks[((2*(6)+1)+ 2) % 17]
|
|
X02 += ks[((2*(6)+1)+ 3) % 17]
|
|
X03 += ks[((2*(6)+1)+ 4) % 17]
|
|
X04 += ks[((2*(6)+1)+ 5) % 17]
|
|
X05 += ks[((2*(6)+1)+ 6) % 17]
|
|
X06 += ks[((2*(6)+1)+ 7) % 17]
|
|
X07 += ks[((2*(6)+1)+ 8) % 17]
|
|
X08 += ks[((2*(6)+1)+ 9) % 17]
|
|
X09 += ks[((2*(6)+1)+10) % 17]
|
|
X10 += ks[((2*(6)+1)+11) % 17]
|
|
X11 += ks[((2*(6)+1)+12) % 17]
|
|
X12 += ks[((2*(6)+1)+13) % 17]
|
|
X13 += ks[((2*(6)+1)+14) % 17] + kw[((2*(6)+1)+1) % 3]
|
|
X14 += ks[((2*(6)+1)+15) % 17] + kw[((2*(6)+1)+2) % 3]
|
|
X15 += ks[((2*(6)+1)+16) % 17] + (2*(6)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(7))+ 1) % 17]
|
|
X01 += ks[((2*(7))+ 2) % 17]
|
|
X02 += ks[((2*(7))+ 3) % 17]
|
|
X03 += ks[((2*(7))+ 4) % 17]
|
|
X04 += ks[((2*(7))+ 5) % 17]
|
|
X05 += ks[((2*(7))+ 6) % 17]
|
|
X06 += ks[((2*(7))+ 7) % 17]
|
|
X07 += ks[((2*(7))+ 8) % 17]
|
|
X08 += ks[((2*(7))+ 9) % 17]
|
|
X09 += ks[((2*(7))+10) % 17]
|
|
X10 += ks[((2*(7))+11) % 17]
|
|
X11 += ks[((2*(7))+12) % 17]
|
|
X12 += ks[((2*(7))+13) % 17]
|
|
X13 += ks[((2*(7))+14) % 17] + kw[((2*(7))+1) % 3]
|
|
X14 += ks[((2*(7))+15) % 17] + kw[((2*(7))+2) % 3]
|
|
X15 += ks[((2*(7))+16) % 17] + (2*(7))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(7)+1)+ 1) % 17]
|
|
X01 += ks[((2*(7)+1)+ 2) % 17]
|
|
X02 += ks[((2*(7)+1)+ 3) % 17]
|
|
X03 += ks[((2*(7)+1)+ 4) % 17]
|
|
X04 += ks[((2*(7)+1)+ 5) % 17]
|
|
X05 += ks[((2*(7)+1)+ 6) % 17]
|
|
X06 += ks[((2*(7)+1)+ 7) % 17]
|
|
X07 += ks[((2*(7)+1)+ 8) % 17]
|
|
X08 += ks[((2*(7)+1)+ 9) % 17]
|
|
X09 += ks[((2*(7)+1)+10) % 17]
|
|
X10 += ks[((2*(7)+1)+11) % 17]
|
|
X11 += ks[((2*(7)+1)+12) % 17]
|
|
X12 += ks[((2*(7)+1)+13) % 17]
|
|
X13 += ks[((2*(7)+1)+14) % 17] + kw[((2*(7)+1)+1) % 3]
|
|
X14 += ks[((2*(7)+1)+15) % 17] + kw[((2*(7)+1)+2) % 3]
|
|
X15 += ks[((2*(7)+1)+16) % 17] + (2*(7)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(8))+ 1) % 17]
|
|
X01 += ks[((2*(8))+ 2) % 17]
|
|
X02 += ks[((2*(8))+ 3) % 17]
|
|
X03 += ks[((2*(8))+ 4) % 17]
|
|
X04 += ks[((2*(8))+ 5) % 17]
|
|
X05 += ks[((2*(8))+ 6) % 17]
|
|
X06 += ks[((2*(8))+ 7) % 17]
|
|
X07 += ks[((2*(8))+ 8) % 17]
|
|
X08 += ks[((2*(8))+ 9) % 17]
|
|
X09 += ks[((2*(8))+10) % 17]
|
|
X10 += ks[((2*(8))+11) % 17]
|
|
X11 += ks[((2*(8))+12) % 17]
|
|
X12 += ks[((2*(8))+13) % 17]
|
|
X13 += ks[((2*(8))+14) % 17] + kw[((2*(8))+1) % 3]
|
|
X14 += ks[((2*(8))+15) % 17] + kw[((2*(8))+2) % 3]
|
|
X15 += ks[((2*(8))+16) % 17] + (2*(8))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(8)+1)+ 1) % 17]
|
|
X01 += ks[((2*(8)+1)+ 2) % 17]
|
|
X02 += ks[((2*(8)+1)+ 3) % 17]
|
|
X03 += ks[((2*(8)+1)+ 4) % 17]
|
|
X04 += ks[((2*(8)+1)+ 5) % 17]
|
|
X05 += ks[((2*(8)+1)+ 6) % 17]
|
|
X06 += ks[((2*(8)+1)+ 7) % 17]
|
|
X07 += ks[((2*(8)+1)+ 8) % 17]
|
|
X08 += ks[((2*(8)+1)+ 9) % 17]
|
|
X09 += ks[((2*(8)+1)+10) % 17]
|
|
X10 += ks[((2*(8)+1)+11) % 17]
|
|
X11 += ks[((2*(8)+1)+12) % 17]
|
|
X12 += ks[((2*(8)+1)+13) % 17]
|
|
X13 += ks[((2*(8)+1)+14) % 17] + kw[((2*(8)+1)+1) % 3]
|
|
X14 += ks[((2*(8)+1)+15) % 17] + kw[((2*(8)+1)+2) % 3]
|
|
X15 += ks[((2*(8)+1)+16) % 17] + (2*(8)+1)+1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_0_0)) | ((X01) >> (64-(R1024_0_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_0_1)) | ((X03) >> (64-(R1024_0_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_0_2)) | ((X05) >> (64-(R1024_0_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_0_3)) | ((X07) >> (64-(R1024_0_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_0_4)) | ((X09) >> (64-(R1024_0_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_0_5)) | ((X11) >> (64-(R1024_0_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_0_6)) | ((X13) >> (64-(R1024_0_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_0_7)) | ((X15) >> (64-(R1024_0_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_1_0)) | ((X09) >> (64-(R1024_1_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_1_1)) | ((X13) >> (64-(R1024_1_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_1_2)) | ((X11) >> (64-(R1024_1_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_1_3)) | ((X15) >> (64-(R1024_1_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_1_4)) | ((X07) >> (64-(R1024_1_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_1_5)) | ((X03) >> (64-(R1024_1_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_1_6)) | ((X05) >> (64-(R1024_1_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_1_7)) | ((X01) >> (64-(R1024_1_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_2_0)) | ((X07) >> (64-(R1024_2_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_2_1)) | ((X05) >> (64-(R1024_2_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_2_2)) | ((X03) >> (64-(R1024_2_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_2_3)) | ((X01) >> (64-(R1024_2_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_2_4)) | ((X15) >> (64-(R1024_2_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_2_5)) | ((X13) >> (64-(R1024_2_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_2_6)) | ((X11) >> (64-(R1024_2_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_2_7)) | ((X09) >> (64-(R1024_2_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_3_0)) | ((X15) >> (64-(R1024_3_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_3_1)) | ((X11) >> (64-(R1024_3_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_3_2)) | ((X13) >> (64-(R1024_3_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_3_3)) | ((X09) >> (64-(R1024_3_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_3_4)) | ((X01) >> (64-(R1024_3_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_3_5)) | ((X05) >> (64-(R1024_3_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_3_6)) | ((X03) >> (64-(R1024_3_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_3_7)) | ((X07) >> (64-(R1024_3_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(9))+ 1) % 17]
|
|
X01 += ks[((2*(9))+ 2) % 17]
|
|
X02 += ks[((2*(9))+ 3) % 17]
|
|
X03 += ks[((2*(9))+ 4) % 17]
|
|
X04 += ks[((2*(9))+ 5) % 17]
|
|
X05 += ks[((2*(9))+ 6) % 17]
|
|
X06 += ks[((2*(9))+ 7) % 17]
|
|
X07 += ks[((2*(9))+ 8) % 17]
|
|
X08 += ks[((2*(9))+ 9) % 17]
|
|
X09 += ks[((2*(9))+10) % 17]
|
|
X10 += ks[((2*(9))+11) % 17]
|
|
X11 += ks[((2*(9))+12) % 17]
|
|
X12 += ks[((2*(9))+13) % 17]
|
|
X13 += ks[((2*(9))+14) % 17] + kw[((2*(9))+1) % 3]
|
|
X14 += ks[((2*(9))+15) % 17] + kw[((2*(9))+2) % 3]
|
|
X15 += ks[((2*(9))+16) % 17] + (2*(9))+1
|
|
|
|
|
|
X00 += X01
|
|
X01 = (((X01) << (R1024_4_0)) | ((X01) >> (64-(R1024_4_0))))
|
|
X01 ^= X00
|
|
X02 += X03
|
|
X03 = (((X03) << (R1024_4_1)) | ((X03) >> (64-(R1024_4_1))))
|
|
X03 ^= X02
|
|
X04 += X05
|
|
X05 = (((X05) << (R1024_4_2)) | ((X05) >> (64-(R1024_4_2))))
|
|
X05 ^= X04
|
|
X06 += X07
|
|
X07 = (((X07) << (R1024_4_3)) | ((X07) >> (64-(R1024_4_3))))
|
|
X07 ^= X06
|
|
X08 += X09
|
|
X09 = (((X09) << (R1024_4_4)) | ((X09) >> (64-(R1024_4_4))))
|
|
X09 ^= X08
|
|
X10 += X11
|
|
X11 = (((X11) << (R1024_4_5)) | ((X11) >> (64-(R1024_4_5))))
|
|
X11 ^= X10
|
|
X12 += X13
|
|
X13 = (((X13) << (R1024_4_6)) | ((X13) >> (64-(R1024_4_6))))
|
|
X13 ^= X12
|
|
X14 += X15
|
|
X15 = (((X15) << (R1024_4_7)) | ((X15) >> (64-(R1024_4_7))))
|
|
X15 ^= X14
|
|
|
|
|
|
X00 += X09
|
|
X09 = (((X09) << (R1024_5_0)) | ((X09) >> (64-(R1024_5_0))))
|
|
X09 ^= X00
|
|
X02 += X13
|
|
X13 = (((X13) << (R1024_5_1)) | ((X13) >> (64-(R1024_5_1))))
|
|
X13 ^= X02
|
|
X06 += X11
|
|
X11 = (((X11) << (R1024_5_2)) | ((X11) >> (64-(R1024_5_2))))
|
|
X11 ^= X06
|
|
X04 += X15
|
|
X15 = (((X15) << (R1024_5_3)) | ((X15) >> (64-(R1024_5_3))))
|
|
X15 ^= X04
|
|
X10 += X07
|
|
X07 = (((X07) << (R1024_5_4)) | ((X07) >> (64-(R1024_5_4))))
|
|
X07 ^= X10
|
|
X12 += X03
|
|
X03 = (((X03) << (R1024_5_5)) | ((X03) >> (64-(R1024_5_5))))
|
|
X03 ^= X12
|
|
X14 += X05
|
|
X05 = (((X05) << (R1024_5_6)) | ((X05) >> (64-(R1024_5_6))))
|
|
X05 ^= X14
|
|
X08 += X01
|
|
X01 = (((X01) << (R1024_5_7)) | ((X01) >> (64-(R1024_5_7))))
|
|
X01 ^= X08
|
|
|
|
|
|
X00 += X07
|
|
X07 = (((X07) << (R1024_6_0)) | ((X07) >> (64-(R1024_6_0))))
|
|
X07 ^= X00
|
|
X02 += X05
|
|
X05 = (((X05) << (R1024_6_1)) | ((X05) >> (64-(R1024_6_1))))
|
|
X05 ^= X02
|
|
X04 += X03
|
|
X03 = (((X03) << (R1024_6_2)) | ((X03) >> (64-(R1024_6_2))))
|
|
X03 ^= X04
|
|
X06 += X01
|
|
X01 = (((X01) << (R1024_6_3)) | ((X01) >> (64-(R1024_6_3))))
|
|
X01 ^= X06
|
|
X12 += X15
|
|
X15 = (((X15) << (R1024_6_4)) | ((X15) >> (64-(R1024_6_4))))
|
|
X15 ^= X12
|
|
X14 += X13
|
|
X13 = (((X13) << (R1024_6_5)) | ((X13) >> (64-(R1024_6_5))))
|
|
X13 ^= X14
|
|
X08 += X11
|
|
X11 = (((X11) << (R1024_6_6)) | ((X11) >> (64-(R1024_6_6))))
|
|
X11 ^= X08
|
|
X10 += X09
|
|
X09 = (((X09) << (R1024_6_7)) | ((X09) >> (64-(R1024_6_7))))
|
|
X09 ^= X10
|
|
|
|
|
|
X00 += X15
|
|
X15 = (((X15) << (R1024_7_0)) | ((X15) >> (64-(R1024_7_0))))
|
|
X15 ^= X00
|
|
X02 += X11
|
|
X11 = (((X11) << (R1024_7_1)) | ((X11) >> (64-(R1024_7_1))))
|
|
X11 ^= X02
|
|
X06 += X13
|
|
X13 = (((X13) << (R1024_7_2)) | ((X13) >> (64-(R1024_7_2))))
|
|
X13 ^= X06
|
|
X04 += X09
|
|
X09 = (((X09) << (R1024_7_3)) | ((X09) >> (64-(R1024_7_3))))
|
|
X09 ^= X04
|
|
X14 += X01
|
|
X01 = (((X01) << (R1024_7_4)) | ((X01) >> (64-(R1024_7_4))))
|
|
X01 ^= X14
|
|
X08 += X05
|
|
X05 = (((X05) << (R1024_7_5)) | ((X05) >> (64-(R1024_7_5))))
|
|
X05 ^= X08
|
|
X10 += X03
|
|
X03 = (((X03) << (R1024_7_6)) | ((X03) >> (64-(R1024_7_6))))
|
|
X03 ^= X10
|
|
X12 += X07
|
|
X07 = (((X07) << (R1024_7_7)) | ((X07) >> (64-(R1024_7_7))))
|
|
X07 ^= X12
|
|
|
|
|
|
X00 += ks[((2*(9)+1)+ 1) % 17]
|
|
X01 += ks[((2*(9)+1)+ 2) % 17]
|
|
X02 += ks[((2*(9)+1)+ 3) % 17]
|
|
X03 += ks[((2*(9)+1)+ 4) % 17]
|
|
X04 += ks[((2*(9)+1)+ 5) % 17]
|
|
X05 += ks[((2*(9)+1)+ 6) % 17]
|
|
X06 += ks[((2*(9)+1)+ 7) % 17]
|
|
X07 += ks[((2*(9)+1)+ 8) % 17]
|
|
X08 += ks[((2*(9)+1)+ 9) % 17]
|
|
X09 += ks[((2*(9)+1)+10) % 17]
|
|
X10 += ks[((2*(9)+1)+11) % 17]
|
|
X11 += ks[((2*(9)+1)+12) % 17]
|
|
X12 += ks[((2*(9)+1)+13) % 17]
|
|
X13 += ks[((2*(9)+1)+14) % 17] + kw[((2*(9)+1)+1) % 3]
|
|
X14 += ks[((2*(9)+1)+15) % 17] + kw[((2*(9)+1)+2) % 3]
|
|
X15 += ks[((2*(9)+1)+16) % 17] + (2*(9)+1)+1
|
|
|
|
s.X[ 0] = X00 ^ w[ 0]
|
|
s.X[ 1] = X01 ^ w[ 1]
|
|
s.X[ 2] = X02 ^ w[ 2]
|
|
s.X[ 3] = X03 ^ w[ 3]
|
|
s.X[ 4] = X04 ^ w[ 4]
|
|
s.X[ 5] = X05 ^ w[ 5]
|
|
s.X[ 6] = X06 ^ w[ 6]
|
|
s.X[ 7] = X07 ^ w[ 7]
|
|
s.X[ 8] = X08 ^ w[ 8]
|
|
s.X[ 9] = X09 ^ w[ 9]
|
|
s.X[10] = X10 ^ w[10]
|
|
s.X[11] = X11 ^ w[11]
|
|
s.X[12] = X12 ^ w[12]
|
|
s.X[13] = X13 ^ w[13]
|
|
s.X[14] = X14 ^ w[14]
|
|
s.X[15] = X15 ^ w[15]
|
|
|
|
kw[1] &= ^(uint64( 1 ) << ((126) - 64))
|
|
|
|
//blkPtr += ( 8*(16))
|
|
blk = blk[8*16:]
|
|
|
|
}
|
|
|
|
s.h.T[0] = kw[0]
|
|
s.h.T[1] = kw[1]
|
|
|
|
}
|
|
|
|
|