• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // #include <stdio.h>
2 int d, z, C, h, P, K, ac, q, G, v, Q, R, D, L, W, M;
3 
E(int e)4 void E(int e) {
5     *(char*) D++ = e;
6 }
7 
o()8 void o() {
9     if (L) {
10         h = *(char*) L++;
11         if (h == 2) {
12             L = 0;
13             h = W;
14         }
15     } else
16         h = fgetc(Q);
17 }
18 
X()19 int X() {
20     return isalnum(h) | h == 95;
21 }
22 
Y()23 void Y() {
24     if (h == 92) {
25         o();
26         if (h == 110)
27             h = 10;
28     }
29 }
30 
ad()31 void ad() {
32     int e, j, m;
33     while (isspace(h) | h == 35) {
34         if (h == 35) {
35             o();
36             ad();
37             if (d == 536) {
38                 ad();
39                 E(32);
40                 *(int*) d = 1;
41                 *(int*) (d + 4) = D;
42             }
43             while (h != 10) {
44                 E(h);
45                 o();
46             }
47             E(h);
48             E(2);
49         }
50         o();
51     }
52     C = 0;
53     d = h;
54     if (X()) {
55         E(32);
56         M = D;
57         while (X()) {
58             E(h);
59             o();
60         }
61         if (isdigit(d)) {
62             z = strtol(M, 0, 0);
63             d = 2;
64         } else {
65             *(char*) D = 32;
66             d = strstr(R, M - 1) - R;
67             *(char*) D = 0;
68             d = d * 8 + 256;
69             if (d > 536) {
70                 d = P + d;
71                 if (*(int*) d == 1) {
72                     L = *(int*) (d + 4);
73                     W = h;
74                     o();
75                     ad();
76                 }
77             }
78         }
79     } else {
80         o();
81         if (d == 39) {
82             d = 2;
83             Y();
84             z = h;
85             o();
86             o();
87         } else if (d == 47 & h == 42) {
88             o();
89             while (h) {
90                 while (h != 42)
91                     o();
92                 o();
93                 if (h == 47)
94                     h = 0;
95             }
96             o();
97             ad();
98         } else {
99             e
100                     = "++#m--%am*@R<^1c/@%[_[H3c%@%[_[H3c+@.B#d-@%:_^BKd<<Z/03e>>`/03e<=0f>=/f<@.f>@1f==&g!='g&&k||#l&@.BCh^@.BSi|@.B+j~@/%Yd!@&d*@b";
101             while (j = *(char*) e++) {
102                 m = *(char*) e++;
103                 z = 0;
104                 while ((C = *(char*) e++ - 98) < 0)
105                     z = z * 64 + C + 64;
106                 if (j == d & (m == h | m == 64)) {
107                     if (m == h) {
108                         o();
109                         d = 1;
110                     }
111                     break;
112                 }
113             }
114         }
115     }
116 }
117 
ae(int g)118 void ae(int g) {
119     while( g&&g!=-1) {
120         *(char*) q++=g;
121         g=g>>8;
122     }
123 }
124 
A(int e)125 void A(int e) {
126     int g;
127     while( e) {
128         g=*(int*) e;
129         *(int*) e=q-e-4;
130         e=g;
131     }
132 }
133 
s(int g,int e)134 int s(int g, int e) {
135     ae(g);
136     *(int*) q = e;
137     e = q;
138     q = q + 4;
139     return e;
140 }
141 
H(int e)142 void H(int e) {
143     s(184,e);
144 }
145 
B(int e)146 int B(int e) {
147     return s(233,e);
148 }
149 
S(int j,int e)150 int S(int j, int e) {
151     ae(1032325);
152     return s(132 + j, e);
153 }
154 
Z(int e)155 void Z(int e) {
156     ae( 49465);
157     H(0);
158     ae( 15);
159     ae( e+144);
160     ae( 192);
161 }
162 
N(int j,int e)163 void N(int j, int e) {
164     ae(j + 131);
165     s((e > -512 && e < 512) << 7 | 5, e);
166 }
167 
T(int j)168 void T (int j) {
169     int g,e,m,aa;
170     g=1;
171     if( d == 34) {
172         H(v);
173         while( h!=34) {
174             Y ();
175             *(char*) v++=h;
176             o ();
177         }
178         *(char*) v=0;
179         v=v +4&-4;
180         o ();
181         ad();
182     }
183     else {
184         aa=C;
185         m= z;
186         e=d;
187         ad();
188         if( e == 2) {
189             H(m);
190         }
191         else if( aa == 2) {
192             T(0);
193             s(185,0);
194             if( e == 33)Z(m);
195             else ae( m);
196         }
197         else if( e == 40) {
198             w ();
199             ad();
200         }
201         else if( e == 42) {
202             ad();
203             e=d;
204             ad();
205             ad();
206             if( d == 42) {
207                 ad();
208                 ad();
209                 ad();
210                 ad();
211                 e=0;
212             }
213             ad();
214             T(0);
215             if( d == 61) {
216                 ad();
217                 ae( 80);
218                 w ();
219                 ae( 89);
220                 ae( 392+(e == 256));
221             }
222             else if( e) {
223                 if( e == 256)ae( 139);
224                 else ae( 48655);
225                 q++;
226             }
227         }
228         else if( e == 38) {
229             N(10,*(int*) d);
230             ad();
231         }
232         else {
233             g=*(int*) e;
234             if(!g)g=dlsym(0,M);
235             if( d == 61&j) {
236                 ad();
237                 w ();
238                 N(6,g);
239             }
240             else if( d!= 40) {
241                 N(8,g);
242                 if( C == 11) {
243                     N(0,g);
244                     ae( z);
245                     ad();
246                 }
247             }
248         }
249     }
250     if( d == 40) {
251         if( g == 1)ae( 80);
252         m= s(60545,0);
253         ad();
254         j=0;
255         while( d!= 41) {
256             w ();
257             s(2393225,j);
258             if( d == 44)ad();
259             j=j +4;
260         }
261         *(int*) m= j;
262         ad();
263         if(!g) {
264             e=e +4;
265             *(int*) e=s(232,*(int*) e);
266         }
267         else if( g == 1) {
268             s(2397439,j);
269             j=j +4;
270         }
271         else {
272             s(232,g-q-5);
273         }
274         if( j)s(50305,j);
275     }
276 }
277 
O(int j)278 void O (int j) {
279     int e,g,m;
280     if( j--== 1)T(1);
281     else {
282         O (j);
283         m= 0;
284         while( j == C) {
285             g=d;
286             e=z;
287             ad();
288             if( j>8) {
289                 m= S(e,m);
290                 O (j);
291             }
292             else {
293                 ae( 80);
294                 O (j);
295                 ae( 89);
296                 if( j == 4|j == 5) {
297                     Z(e);
298                 }
299                 else {
300                     ae( e);
301                     if( g == 37)ae( 146);
302                 }
303             }
304         }
305         if( m&&j>8) {
306             m= S(e,m);
307             H(e^1);
308             B(5);
309             A(m);
310             H(e);
311         }
312     }
313 }
314 
w()315 void w() {
316     O(11);
317 }
318 
U()319 int U() {
320     w();
321     return S(0, 0);
322 }
323 
I(int j)324 void I (int j) {
325     int m,g,e;
326     if( d == 288) {
327         ad();
328         ad();
329         m= U ();
330         ad();
331         I (j);
332         if( d == 312) {
333             ad();
334             g=B(0);
335             A(m);
336             I (j);
337             A(g);
338         }
339         else {
340             A(m);
341         }
342     }
343     else if( d == 352|d == 504) {
344         e=d;
345         ad();
346         ad();
347         if( e == 352) {
348             g=q;
349             m= U ();
350         }
351         else {
352             if( d!= 59)w ();
353             ad();
354             g=q;
355             m= 0;
356             if( d!= 59)m= U ();
357             ad();
358             if( d!= 41) {
359                 e=B(0);
360                 w ();
361                 B(g-q-5);
362                 A(e);
363                 g=e +4;
364             }
365         }
366         ad();
367         I(&m);
368         B(g-q-5);
369         A(m);
370     }
371     else if( d == 123) {
372         ad();
373         ab(1);
374         while( d!= 125)I (j);
375         ad();
376     }
377     else {
378         if( d == 448) {
379             ad();
380             if( d!= 59)w ();
381             K=B(K);
382         }
383         else if( d == 400) {
384             ad();
385             *(int*) j=B(*(int*) j);
386         }
387         else if( d!= 59)w ();
388         ad();
389     }
390 }
391 
ab(int j)392 void ab (int j) {
393     int m;
394     while( d == 256|d!=-1&!j) {
395         if( d == 256) {
396             ad();
397             while( d!= 59) {
398                 if( j) {
399                     G=G +4;
400                     *(int*) d=-G;
401                 }
402                 else {
403                     *(int*) d=v;
404                     v=v +4;
405                 }
406                 ad();
407                 if( d == 44)ad()	;
408             }
409             ad();
410         }
411         else {
412             A(*(int*)(d +4));
413             *(int*) d=q;
414             ad();
415             ad();
416             m= 8;
417             while( d!= 41) {
418                 *(int*) d=m;
419                 m= m +4;
420                 ad();
421                 if( d == 44)ad();
422             }
423             ad();
424             K=G=0;
425             ae( 15042901);
426             m= s(60545,0);
427             I(0);
428             A(K);
429             ae( 50121);
430             *(int*) m= G;
431         }
432     }
433 }
434 
run(int g,int e)435 int run(int g, int e) {
436     return (*(int(*)()) *(int*) (P + 592))(g, e);
437 }
438 
main(int g,int e)439 int main(int g, int e) {
440     int result;
441     Q = stdin;
442     if (g-- > 1) {
443         e = e + 4;
444         Q = fopen(*(int*) e, "r");
445         if (!Q) {
446             fprintf(stderr, "otcc-ansi.c: could not open file %s\n", *(int*) e);
447             return -2;
448         }
449     }
450     D = strcpy(R = calloc(1, 99999), " int if else while break return for define main ") + 48;
451     v = calloc(1, 99999);
452     q = ac = calloc(1, 99999);
453     P = calloc(1, 99999);
454     o();
455     ad();
456     ab(0);
457     if (mprotect(ac & (~ 4095), (99999 + 4095) & (~ 4095), 7)) {
458         printf("Mprotect failed. %d\n", errno);
459         return -1;
460     }
461     fprintf(stderr, "otcc-ansi.c: About to execute compiled code:\n");
462     result = run(g, e);
463     fprintf(stderr, "atcc-ansi.c: result: %d\n", result);
464     return result;
465 }
466 
467