| 101 | } |
| 102 | |
| 103 | staticfn void isaac64_mix(uint64_t _x[8]){ |
| 104 | static const unsigned char SHIFT[8]={9,9,23,15,14,20,17,14}; |
| 105 | int i; |
| 106 | for(i=0;i<8;i++){ |
| 107 | _x[i]-=_x[(i+4)&7]; |
| 108 | _x[(i+5)&7]^=_x[(i+7)&7]>>SHIFT[i]; |
| 109 | _x[(i+7)&7]+=_x[i]; |
| 110 | i++; |
| 111 | _x[i]-=_x[(i+4)&7]; |
| 112 | _x[(i+5)&7]^=_x[(i+7)&7]<<SHIFT[i]; |
| 113 | _x[(i+7)&7]+=_x[i]; |
| 114 | } |
| 115 | } |
| 116 | |
| 117 | |
| 118 | void isaac64_init(isaac64_ctx *_ctx,const unsigned char *_seed,int _nseed){ |