uint64_t *rm=(uint64_t*)RM1;
- uint64_t *xx=(uint64_t*)X;
+ // uint64_t *xx=(uint64_t*)X;
uint64_t *ss=(uint64_t*)seq_in;
//ind1=Pbox[it]*h;
//ind2=Pbox[(it+len/2)]*h;
- ind1=it*h/8;
+ ind1=(it*h)>>3;
// Mix with dynamic RM
uint64_t sum=0;
- /* for(int a=0;a<h;a+=4) {
- X[a]=RM1[a]^seq_in[ind1+a];
- X[a+1]=RM1[a+1]^seq_in[ind1+a+1];
- X[a+2]=RM1[a+2]^seq_in[ind1+a+2];
- X[a+3]=RM1[a+3]^seq_in[ind1+a+3];
- }
- */
- for(int a=0;a<h/8;a++) {
- xx[a]=rm[a]^ss[ind1+a];
- sum+=xx[a];
+ for(int a=0;a<(h>>3);a++) {
+ rm[a]=rm[a]^ss[ind1+a];
+ sum+=rm[a];
}
rm[0]=xorshift64(sum);
- for(int a=1;a<h/8;a++) {
+ for(int a=1;a<(h>>3);a++) {
rm[a]^=xorshift64(rm[a-1]);
+ //rm[a]^=splitmix64(rm[a-1]);
}