/* youmu0.c - Don Yang (uguu.org) 07/08/07 */ #include static char *data[] = { /* 0=B: Code */ #define X10 "1234567890" #define X100 X10 X10 X10 X10 X10 X10 X10 X10 X10 X10 #define X1000 X100 X100 X100 X100 X100 X100 X100 X100 X100 X100 X1000 X1000 X1000 X1000 X1000 , /* 1=C: C template */ "K#!C3!?7&!=7*!;7.!:70!972!874!874!874!75" "!874!874!874!972!:70!;7.!=7*!?7&!C3" , /* 2=D: C++ template */ "F#!A-!?1!=5!<7!;7$!:7&!:7&!97(!97(!87*!8" "7*!87*!87*!87*!7+!87*!87*!87*!87*!87*!97" "(!97(!:7&!:7&!;7$!<7!=5!?1!A-" , /* 3=E: Header */ "char *data[] = \"", /* 4=F: Separator */ "\",\"", /* 5=G: Output sequence */ "E" /* Data header (xor) */ "B" /* Source (passthrough) */ "F" /* Separator (xor) */ "C" /* C template (passthrough) */ "F" /* Separator (xor) */ "D" /* C++ template (passthrough) */ "F" /* Separator (xor) */ "E" /* Data header (passthrough) */ "F" /* Separator (xor) */ "F" /* Separator (passthrough) */ "F" /* Separator (xor) */ "G" /* Output sequence (passthrough) */ "B" /* Source (xor) */ }; static char input[0x10000], output[0x10000]; static char *t, *r, *w; static int code, bit, x, quote; int main(void) { /* Prepare output text */ w = input; #define XOR_KEY 0 x = XOR_KEY; for(r = data[5]; *r != '\0'; r++) { for(t = data[(int)(*r - 'B')]; *t != '\0'; t++) { if( *t != ' ' ) *w++ = *t ^ (char)x; } x ^= XOR_KEY; } /* Decode template */ t = data[2 //**/ 2 ]; r = input; w = output; quote = 0; for(; *t != '\0'; t++) { code = (int)*t; if( code >= (int)'^' ) { code = (code - (int)'^') * 2 + 1; for(bit = 0; bit < 6; bit++, code /= 2) { *w++ = (code & 1) != 0 ? (quote ^= (*r != '\"') ? 0 : 1) != 0 ? *r++ : *r++ : ' '; } } if( code >= (int)'8' ) { for(code -= (int)'8' - 1; code > 0; code--) *w++ = ' '; } if( code >= (int)'#' ) { for(code -= (int)'#' - 1; code > 0; code--) { if( *r == '\"' ) quote ^= 1; *w++ = *r++; } } if( code == (int)'!' ) { if( quote != 0 ) { *--w = '\\'; w++; r--; } *w++ = '\n'; } } /* Output text */ *w = '\0'; return puts(output); }