#include typedef unsigned int word; word seed[] = { 0 }, result[256], result_count, mm[256], aa, bb, cc, i, x, y, j, w; word Isaac() { if( !result_count-- ) { bb += ++cc; for(i = 0; i < 256; result[i++] = bb = mm[(y >> 10) & 255] + x) { x = mm[i]; aa ^= (i & 1) ? aa >> ((i & 2) ? 16 : 6) : aa << ((i & 2) ? 2 : 13); mm[i] = y = mm[(x >> 2) & 255] + (aa += mm[(i + 128) & 255]) + bb; } result_count = 255; } return result[result_count]; } void Init() { for(j = 0; j < 256; mm[j++] = 0); for(j = 0; j < sizeof(seed) / 4; j++) mm[j & 255] ^= seed[j]; for(j = aa = bb = cc = result_count = 0; j < 1 << 24; j++) Isaac(); j = w = 0; } int main() { char data[] = "E3yua`:z+-Xg`Mv$", *r; Init(); for(r = data; *r > 37;) { for(i = 0; i < 5; i++) w = w * 85 + (83 + *r++) % 89; w ^= Isaac(); for(i = 0; i < 4; i++) { data[j++] = w & 255; w >>= 8; } } fwrite(data, j - *r % 5, 1, stdout); return 0; }