/* shindou8.c - Don Yang (uguu.org) 02/25/07 */ #include #include FILE *l; typedef unsigned char *b; b q, p, d = "!!\0 !\xff\1" "UTF-8\0" "!\x81IOCCC" "!\1\xff\xfe\377can not open!\0! \0" "\xef\xbb\277" "EUC-JP\0" " 'PoPoPo\4""0?PoPo\3\20\17Po\2\1" "\"\xef\xbc\x81" "Shift_JIS\0" "!\xa1\xaa" "QO\220,\2""0?\220,\2\1" "UCS-2LE\0" "qxq.\2}}q.\2`$q.\2),q.\2^^q.\2__q.q.\3\1" "UCS-2BE\0" ; int N,E,K,O,n,e,k,o,s,f, t[] = {23, 24, 43}, _[5][19] = { { 2, 7, 1, 8, 2, 8, 1, 8, 2, 8, 4, 5, 96, 0, 21, 40, 103, 9, 0 }, { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 96, 38, 5, 1, 144, 9, 7 }, { 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3, 3, 53, 4, 75, 3, 8, 8, 3 }, { 2, 8, 7, 9, 3, 7, 161, 1, 5, 2, 3, 33089, 92, 4, 14, 3, 79, 350, 0 }, { 0, 8, 2, 8, 3, 7, 36513, 1, 8, 2, 3, 41378, 111, 4, 89, 3, 46, 767, 4 } }; #define Z(a) ;}static void a(void){ #define z(a) _[o][a] int g(int a) { for(f = 0; f < a && k - z(f); f++); return f < a; } void h(b A, int a) { if( a > 0 ) fwrite(A, a, 1, stdout) Z(r) q = (b)malloc(N *= 2) Z(R) free(p) Z(m) N = 64; r(); for(E = 0; !feof(l); E += fread(q + E, 1, N - E, l)) if( E == N ) { p = q; r(); for(s = 0; s < N; s++) q[s] = p[s]; R(); } Z(i) k = s = 0; for(p = d + z(12); *p > 4 && k + 1; p++) if( q[n + s] < (*p ^ 208) || q[n + s] > (p[1] ^ 208) ) { if( s ) k = -1; else for(; *p > 4; p++); } else { s++; p++; } for(s = 0; k + 1 && s < *p; s++) k = (k << 8) | q[n++]; k = (o == 2 && k > 7<<21) ? ((k >> 4) & 61440) | ((k >> 2) & 4032) | (k & 63) : o ? k : (k >> 8) | ((k & 255) << 8) Z(j) i(); if( k < 0 ) n++ Z(u) for(n = 0; n < 3; n++) if( *q == d[t[n]] && q[1] == d[t[n]+1] && (n < 2 || q[2] == d[t[n]+2]) ) { o = n; return; } for(n = 0; n < E - 1; n += 2) { if( !q[n] && q[n + 1] == 10 ) { o = 1; return; } if( q[n] == 10 && !q[n + 1] ) { o = 0; return; } } for(o = 2; o < 5; o++) { for(n = z(18) = 0; n < E - 3 && z(18) + 1;) { i(); if( k + 1 ) { if( k >= z(17) && k < z(17) + 83 ) z(18)++; } else { z(18) = -1; } } } for(n = o = 2; n < 5; n++) if( _[n][18] > z(18) ) o = n Z(x) p = d + z(k > 255 ? 14 : 13); h(p + 1, *p - 31); } int main(int A, char **a) { for(o = 5; o-- > 0;z(8) = 44) { z(0) = 33; z(2) = 46; z(3) = 63; } for(; ++o < 3; z(17) = 145 + (z(7) = 1 + (z(11) = 12289))) z(10) = 3 + (z(6) = 66 + (z(5) = 17 + (z(4) = 2 + (z(9) = 11 + (z(1) = 65281))))); for(; o < 5; o++) { z(1) += (n = z(11)); z(4) += n; z(5) += n; z(7) += n; z(9) += n; z(17) += n; z(6) += z(10); } if( *++a ) for(; *a; ++a) { printf("%s: ", *a); e = 26; if( l = fopen(*a, "rb") ) { m(); fclose(l); u(); e = z(16); p = q; R(); } puts(d + e); } else { l = stdin; m(); u(); for(n = e = 0; n < E;) { K = n; j(); if( g(12) || k == 10 ) { if( g(8) ) { O = n; for(n = e; n < K; e = n) { j(); h(q + e, n - e); p = d + z(15); h(p + 1, *p - 31); } j(); if( g(2) ) x(); x(); e = n; } else { h(q + e, K - e); if( k - 10 ) x(); else h(q + K, n - K); e = n; } } } p = q; R(); } }