/* hitomi3.c - Don Yang (uguu.org) Preprocess source. 10/21/01 */ #include char *bytecode = ";O`WQIuxyp`QMGoJDQlp@>kpplZ>hZxWorS;KTfZoEuRUT[byFH[ciGl^QUGkN=DQB]R?G_DG?w]xpdf>YoEciiw@f]u;[um;JxRU;RXTibgoWJGCsRPpl?v>QXtKkJWjSHW>kyH[ubiSq>Ozo`>Oz;w]p@u>OzKgi?cXrXrXReCuXrypkBoygzM>yep_<]=Oau[_um;jxRUtImjoMmOB[ORJrw=mBGWn^fFA[ff^ZljeOfp`>OepZCQU;LMFA;EV`WAsxFH;?gJXxg_;`Sh<wy`QI?w^Qecv[xfbf[z;CqqUl;KXT;CsBFHkypN@Xr>eFNQH[pDOzKkylE?wNRecv;UXkBCqM@pXoBORAsxFHJk>ypD;SZuuoJ<;ORAsdzM>CENXT]Bho?]R?GcfiW;s@zuKgoGjv>Sefb>;jsxff>lMnwiR?G[diiSzuaJwc`axfFQQXXqfWjMxNNRJxLafon>lUNdbBd]wmLExwScbrU;WXl=WXXwNq>Uy;aumX_ZdTy?;NLefrNZu;", *p, *String[] = { "Decoded", "Encoded", "Empty" }; int ip, *sp, j, Memory[10][512], Register[14], ExecState, ExecArg, pBytecode[7000], Constant[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, -2, -3, 256 }; #define E if(!ExecState){ #define e }else{ #define Q pBytecode[ip++] #define q if(Q){ main(int i, char **argv) { FILE *infile, *outfile; if( i > 2 && (infile = fopen(argv[1], "rb")) && (outfile = fopen(argv[2], "wb+")) ) { sp = pBytecode; for(p = bytecode; *p; p++) if( *p > 58 ) for(i = 0; i < 6; *(sp++) = ((*p - 59) & (1 << i++)) ? 1 : 0); sp = Memory[9]; for(ip = ExecState = 0; ExecState - 2;) q q q E q i = Register[*sp]; *sp = i; e sp--; } e ip++; } e q E q q i = Register[*sp]++; *sp = i; e sp[-1] -= *sp; sp--; } e sp--; *sp = Q ? *sp + sp[1] : *sp < sp[1] ? 1 : 0; } e ip += 2; } e q q E for(i = -1; sp[i] - 577; i--); i = sp[*sp + i]; *sp = i; } e E sp -= 2; Memory[sp[1]][sp[2]] = *sp; } } e E i = Memory[sp[-1]][*sp]; *(--sp) = i; } } } } e q q q E sp--; ip = (sp[1] - 575) ? ip : *(sp++); e if( ExecState == 1 ) if( !--ExecArg ) { ExecState = 0; sp -= (*sp - 575) ? 1 : 2; } } e ExecArg += ExecState ? ExecState - 1 ? 0 : 1 : *(sp--) ? 0 : (ExecState = 1) - ExecArg; } e E sp--; Register[sp[1]] = *sp; } } e q j = Q ? ( ExecState ? ip++ : (i = Q ? 576 : (*(++sp) = ip) ? 575 : 0) | 1 ? *(++sp) = i : 0 ) : ( Q ? ( Q ? ( ip = Q ? Q ? ExecState ? ip : (sp -= 2)[1] : 0 : (ExecState = ExecState ? ExecState : 2) ? ip : ip ) : ( ExecState = ExecState ? ExecState - 4 ? ExecState : 5 : 3 ) ) : ( Q ? Q ? ExecState ? 0 : fseek(infile, *(sp--), 0) : ExecState ? 0 : (*(++sp) = fgetc(infile)) : ExecState ? 0 : fputc(*(sp--) < 0 ? -sp[1] : sp[1], outfile) ) ); e q q ExecState = ExecState ? (ExecState - 1 || ExecArg - 1) ? ExecState : 0 : (ExecArg = 1); e j = pBytecode[ip] + pBytecode[ip] + pBytecode[ip + 1]; ip += 2; i = ExecState - 3 ? ( ExecState = ExecState - 4 ? ExecState - 5 ? ExecState : 4 : ExecArg - j ? ExecState : 0 ) : ( (*(++sp) = ip) && (*(++sp) = 577) && (ExecState = 4) && (ExecArg = j) ); } e i = ExecState ? (ip += 2) : sp-- ? ( *sp = Q ? Q ? (*sp & sp[1]) : (*sp >> sp[1]) : Q ? (*sp << sp[1]) : (*sp | sp[1]) ) : 0; } } } } e for(i = j = 0; i < 4; j |= Q << i++); E *(++sp) = Constant[j]; } } puts(String[*sp]); fclose(infile); fclose(outfile); e puts("Error"); } }