1// #include <stdio.h> 2int d, z, C, h, P, K, ac, q, G, v, Q, R, D, L, W, M; 3 4void E(int e) { 5 *(char*) D++ = e; 6} 7 8void 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 19int X() { 20 return isalnum(h) | h == 95; 21} 22 23void Y() { 24 if (h == 92) { 25 o(); 26 if (h == 110) 27 h = 10; 28 } 29} 30 31void 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 118void ae(int g) { 119 while( g&&g!=-1) { 120 *(char*) q++=g; 121 g=g>>8; 122 } 123} 124 125void 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 134int s(int g, int e) { 135 ae(g); 136 *(int*) q = e; 137 e = q; 138 q = q + 4; 139 return e; 140} 141 142void H(int e) { 143 s(184,e); 144} 145 146int B(int e) { 147 return s(233,e); 148} 149 150int S(int j, int e) { 151 ae(1032325); 152 return s(132 + j, e); 153} 154 155void Z(int e) { 156 ae( 49465); 157 H(0); 158 ae( 15); 159 ae( e+144); 160 ae( 192); 161} 162 163void N(int j, int e) { 164 ae(j + 131); 165 s((e > -512 && e < 512) << 7 | 5, e); 166} 167 168void 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 278void 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 315void w() { 316 O(11); 317} 318 319int U() { 320 w(); 321 return S(0, 0); 322} 323 324void 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 392void 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 435int run(int g, int e) { 436 return (*(int(*)()) *(int*) (P + 592))(g, e); 437} 438 439int 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