/*Placed in the public domain by Sam Trenholme*/ #include #include #include #define p uint32_t #define f(a) for(c=0;c>r)|(x<<(32-r));}f(19){a[c]=A[c]^A[(c+1 )%19]^A[(c+4)%19];}a[0]^=1;}void k(p *a,p *b){p q[3],c,i,v;f(3){q[c]=b[c*13+12];}for(i=12;i;i-- ){f(3){v=i-1;if(v<0){v=12;}b[c*13+i]=b[c*13+v]; }}f(3){b[c*13]=q[c];}f(12){i=c+1+((c%3)*13);b[i ]^=a[c+1];}m(a);f(3){a[c+13]^=q[c];}}l(p *a,p * b,char *v){p s[3],q,c,r,x,d=0;for(;;){s[0]=s[1] =s[2]=0;for(r=0;r<3;r++){for(q=0;q<4;q++){x=*v; v++;x&=0xff;if(!x){d=x=1;}s[r]|=x<<(q*8);if(d){ n;k(a,b);return;}}}n;k(a,b);}}main(int j,char * *h){p a[39],b[39],c,e,g;if(j==2){f(39){a[c]=b[c ]=0;}l(a,b,h[1]);f(16){k(a,b);}f(4){k(a,b);for( j=1;j<3;j++){g=a[j];for(e=4;e;e--){printf( "%02x",g&255);g>>=8;}}}printf("\n");}return 0;}