/* rinia7.c - Don Yang (uguu.org) 01/10/04 */ #include #include #include #define c return typedef int _; typedef char p; _ R,i,N,I,A; _ m,o,e[9],k[9],a[256],n[256]; p *u, *v, w[9][128]; FILE *f; _ x(_ K, _ r, _ q) { for(; r < q; K = ((K >> 8) & 0xffffff) ^ n[(K ^ u[r++]) & 255]); c K; } _ B(_ q) { c fseek(f, 0, q); } _ C(p *q) { c puts(q); } _ D() { c fclose(f); } _ E(p *r, p *q) { c f = fopen(r, q); } _ main(_ t, p **z) { if( t < 4 ) c C(" "); u = 0; i = I = ( E(z[1], "rb") ) ? B(2) ?0 : ( ( (o = ftell(f)) > 8 ) ? ( u = (p*)malloc(o) ) ? B(0) ?0: !fread(u, o, 1, f) :0 :0 ) ?0: D() :0; if( !u ) c C("bad input"); if( E(z[2],"rb") ) { for(N = -1; i < 256; n[i++] = -1) a[i] = 0; for(i = I = 0; i < o && (R = fgetc(f)) > -1; i++) ++a[R] ? ( R == N ) ? ( ++I > 7 ) ? (n[N] + 1) ?0: (n[N] = i - 7) : 0 : (N = R)| (I = 1) :0; A = -1; N = o + 1; for(i = 33; i < 127; i++) ( n[i] + 1 && N > a[i] ) ? N = a[A = i] : 0; B(i = I = 0); if( A + 1 ) for(N = n[A]; i < o && I < 8 && (R = fgetc(f)) > -1; i++) ( i < N || i > N + 7 ) ? ( R == A ) ? ((*w[I] = u[i]) ?1: (*w[I] = 46)) ? (a[I++] = i) :0 :0 :0; D(); } if( I < 1 ) c C("bad layout"); for(i = 0; (R = i) < 256; n[i++] = R) for(A = 8; A > 0; A--) R = ( R & 1 ) ? ((unsigned)R >> 1) ^ 0xedb88320 : (unsigned)R >> 1; m = a[I - 1]; a[I] = ( m < N ) ? (m = N + 8) : ++m; for(i = 0; i < I; e[i++] = 0) { v = w[i] + 1; for(R = 33; R < 127; R++) if( R - 47 && R - 92 && R - (_)*w[i] ) *(v++) = (p)R; *v = 0; } for(sprintf(*w + 1, "%08x", x(R = time(i = 0), m, o) ^ ~0); i < 8; i++) u[N + i] = *(*w + i + 1); for(*k = x(~0, i = 0, *a); i > -1;) { for(A = i; A < I; A++) { u[a[A]] = w[A][e[A]]; k[A + 1] = x(k[A], a[A], a[A + 1]); } if( k[I] == R ) c ( E(z[3],"wb+") ) ? fwrite(u, o, 1, f) ? D()|C("\nsuccess") : 0 : C("\nwrite error"); for(i = I - 1; i > -1 ? !w[i][++e[i]] : 0;) for(A = i--; A < I; e[A++] = 0); ( i < I - 4 ) ? putchar(46)| fflush(stdout) :0; } c C("\nfail"); }