T O C |
my preferred obfuscated.c
Don Dodson
Most Humorous: <dodsond@agcs.com> Don Dodson Don Dodson AG Communication Systems 4101 W Union Hills Dr #1104 Glendale, AZ 85308 USA Judges' comments: To use: make dodsond1 Try: dodsond1 Give the following input: ... a male (who) gets very, very frustrated sitting in a chair all the time because males are biologically driven to go out and hunt giraffes. -- Adjunct Professor Newt Gingrich, Reinhardt College, 1/7/95 Selected notes from the author: Istha ogrampra akesta Englishwa extta aswa inputwa andwa anslatestra itwa intowa Igpa Atinla. The obfuscation is on several levels. Most obviously, the shape of the program. Underneath that, the variable names are in pig latin, as are the names of the standard C functions, such as putchar. Even main is written as ainma. The program construction is also very obfuscated, with all of the code being inside the ()'s of one of the 6 "orfa" loops.
dodsond1.c
#define X #define XX #define XXX #define XXXX #define XXXXX #define XXXXXX #define XXXXXXX #define orfa for #define XXXXXXXXX #define archa char #define ainma main #define etcharga getchar #define utcharpa putchar X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XX X X XX X X XXX X XXXXXXXXX X XXX X X XXX X XXXX XXXX X XXX X X XXXX X XX ainma(){ archa XX X XXXX X X XXXX X oink[9],*igpa, X XXXX X X XXXXXX atinla=etcharga(),iocccwa XXXXXX X X XXXX ,apca='A',owla='a',umna=26 XXXX X X XXX ; orfa(; (atinla+1)&&(!((( XXX X X XX atinla-apca)*(apca+umna-atinla) XX X X X >=0)+((atinla-owla)*(owla+umna- X X X atinla)>=0))); utcharpa(atinla), X X X atinla=etcharga()); orfa(; atinla+1; X X X X ){ orfa( igpa=oink ,iocccwa=( X X X X (atinla- XXX apca)*( XXX apca+umna- X X X atinla)>=0) XXX XXX ; (((( X X atinla-apca XXXXX XXXXXXX XXXXX )*(apca+ X X umna-atinla XXXXXX )>=0) XXXXXX +((atinla- X X owla)*(owla+ XXXX umna- XXXX atinla)>=0)) X X &&"-Pig-" XX "Lat-in" XX "COb-fus" X X "ca-tion!!"[ X (((atinla- X apca)*(apca+ X X umna-atinla) X >=0)?atinla- X apca+owla: X X atinla)-owla X ]-'-')||((igpa== X oink)&&!(*( X X igpa++)='w') X )||! X (*( X igpa X ++)=owla); * X X (igpa++)=(( X ( XXX XXX X atinla-apca X X )*(apca+ X umna XXX - XXX X atinla)>=0) X X ?atinla- X apca XXX + XXX owla X :atinla), X X atinla= X X X X etcharga()) X X ; orfa( X atinla=iocccwa?(( X (atinla- X X owla)*(owla+ X umna-atinla)>=0 X )?atinla- X X owla+apca: X atinla): X atinla; ((( X X atinla-apca)* X (apca+umna- X atinla)>=0)+( X X (atinla-owla)* X (owla+ X umna-atinla)>= X X 0)); utcharpa( XX XX atinla),atinla X X =etcharga()); XXXXXXX orfa(*igpa=0, X X igpa=oink; * igpa; utcharpa( X X *(igpa++))); orfa(; (atinla+1)&&(!((( X X atinla-apca )*(apca+ X X umna- XXXXX XXXXX atinla)>=0 X X )+(( XXXXX atinla- X XX owla)*( owla+umna- XX XX atinla)>=0))); utcharpa XX XX (atinla),atinla= XX XX etcharga()); } XX XXXX } XXXX XXXXXXXXX
Heather Downs
Best Layout: <{heather,selene}@bungalow.com> Heather Downs, Selene Makarios Heather Downs, Selene Makarios The Software Bungalow 900 High School Way, #2202 Mountain View, CA 94041 USA Judges' comments: To use: make heathbar To run: heathbar 4253 2281 The main reason we liked this entry was mainly because the main effect of the source was self documenting! <img src="/skins/commons/emo/smile.gif" alt=":-)" title=":-)"/> Selected Author's comments: Run this program with two non-negative integer arguments (e.g. "prog 1234 999"). My goal was to create the fastest possible C program. To that end, I made three critical observations: 1. If there's one thing computers are good at, it's math. 2. Simple operations take less time than complicated ones. 3. Every C program seems to contain the word "main". Based on #1, I knew that the Fastest Program had to be one that performed addition. From #2, I reasoned that it ought to directly manipulate the bits, rather than wasting time dealing with bloated, high-level, fuzzy-logic, artificial-intelligence, neural-net, client-server, object-oriented abstractions like the C language "+" operator. And it was obvious from #3 that the program should resemble, as closely as possible, a long sequence of the familiar word "main" repeated over and over, so the computer would be comfortable running the program and wouldn't get distracted dealing with unfamiliar variable names. Also, I've looked at some past winning entries of your contest, and if you don't mind a little constructive criticsm, some of them are kind-of hard to figure out. I didn't want my program to fall into the same trap, so I went out of my way to write self-documenting code. Anyone who so much as glances at my program will immediately see that it adds two 16-bit unsigned integers by streaming their bits through a simulated cascade of hardware adders. I hope my diligent effort to write especially clear code gets me extra points! P.S. What does "obfuscated" mean?
heathbar.c
# include <stdio.h> # define MAin printf("%dn" # define mAIN return 0 # define MaiN {static # define mAlN ) {if( # define MA1N char* # define MAiN (!!( # define mAiN atoi # define mAln &1<< # define MAlN !=3) # define MAln )&& # define MAIN int # define maln --, # define Maln << # define MaIn ++ # define MalN |= # define MA1n || # define malN -1 # define maIN * # define MaIN = # define ma1N ) # define Ma1N ( # define Main ; # define mA1n ! # define MAIn } # define mA1N , MAIN mAIn Ma1N MAIN ma1N mA1N mAiN Ma1N MA1N ma1N mA1N maIn MaIN malN mA1N ma1n mA1N maiN Main MAIN main Ma1N MAIN Ma1n mA1N MA1N maIN mAin mAlN Ma1n MAlN mAIN Main maIn MaIn mA1N Ma1n maln mAin MaIn Main maIn MaIN mAiN Ma1N Ma1N Ma1n maln maIN mAin MaIn ma1N ma1N Main ma1n MaIN mAiN Ma1N Ma1N Ma1n maln maIN mAin MaIn ma1N ma1N Main mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N mAIn Ma1N Ma1n ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N ma1N Main MAin mA1N maiN ma1N Main mAIN Main MAIn MAIN mAIn Ma1N MAIN mAin ma1N MaiN MAIN main MaIN malN Main main MaIn Main mAIN mA1N maiN MalN Ma1N MAiN maIn mAln main ma1N MA1n Ma1N MAiN ma1n mAln main ma1N MA1n mAin MAln Ma1N mA1n MAiN ma1n mAln main MAln mAin ma1N ma1N ma1N MAln Ma1N mA1n MAiN maIn mAln main MAln Ma1N MAiN ma1n mAln main ma1N MA1n mAin MAln Ma1N mA1n MAiN ma1n mAln main MAln mAin ma1N ma1N ma1N ma1N ma1N ma1N Maln main mA1N MAiN ma1n mAln main MAln mAin ma1N MA1n MAiN maIn mAln main MAln Ma1N MAiN ma1n mAln main ma1N MA1n mAin MAln Ma1N mA1n MAiN ma1n mAln main MAln mAin ma1N ma1N ma1N ma1N Main MAIn Heather Downs, Selene Makarios USA 1995
Eric Marshall
Best layout: <burdvax!eric> Eric Marshall Eric Marshall System Development Corporation, a Burroughs Company P.O. Box 517 Paoli, PA. 19301 This program prints the name of the picture. The layout is somewhat pretty through it is not the usual sort of output one would expect from printing a program! This program was slected for the 1987 t-shirt collection. This program is known to give some C compilers a problems. Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety and remains unaltered. All other uses must receive prior permission in writing from both Landon Curt Noll and Larry Bassel.
marshall.c
extern int errno ;char grrr ;main( r, argv, argc ) int argc , r ; char *argv[];{int P( ); #define x int i, j,cc[4];printf(" choo choon" ) ; x ;if (P( ! i ) | cc[ ! j ] & P(j )>2 ? j : i ){* argv[i++ +!-i] ; for (i= 0;; i++ ); _exit(argv[argc- 2 / cc[1*argc]|-1<<4 ] ) ;printf("%d",P(""));}} P ( a ) char a ; { a ; while( a > " B " /* - by E ricM arsh all- */); }
Savastio
Most Obfuscated Syntax: <m.savastio@telesciences.com> Michael Savastio Michael Savastio Securicor Telesciences 925 1/2 Anchor St, Apt 2 Philadelphia, PA 19124 USA Judges' comments: To use: make savastio To run: savastio enter a number (such as 100). As one judge said: I know an l when I see a 1. Selected Author's comments: This program is an infinite-precision factorial calculator. It will compute the factorial of any number entered to an infinite degree of precision (or the limits of your machine's memory, whichever comes first). I'd suggest you start with small numbers the first few times you run it and gradually work your way up in order to get a feel for the computation time your machine will require. Aside from having an artistic code layout and confusing variable names, the algorithm itself takes advantage of some cute C-isms. Try to figure out how it prints the prompt "Enter number:". Numbers are represented internally by a linked list of blocks each containing 1000 buckets of 4-digit integers. To further confuse matters, the buckets are arranged backwards in the block. For example, the number 8347108947139478934713847134 is represented as: 7134 1384 9347 3947 9471 7108 834 Platform limitations: Long integers must be at least 4 bytes. Features: In order to prevent the user from wasting too much time computing useless factorials, the maximum factorial that can be computed is 429539! This limit was selected through extensive research in time management studies and the factorial arts.
savastio.c
#include <stdio.h> #define l11l 0xFFFF #define ll1 for #define ll111 if #define l1l1 unsigned #define l111 struct #define lll11 short #define ll11l long #define ll1ll putchar #define l1l1l(l) l=malloc(sizeof(l111 llll1));l->lll1l=1-1;l->ll1l1=1-1; #define l1ll1 *lllll++=l1ll%10000;l1ll/=10000; #define l1lll ll111(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;} lllll=(l1=l1->lll1l)->lll;ll=1-1; #define llll 1000 l111 llll1 { l111 llll1 * lll1l,*ll1l1 ;l1l1 lll11 lll [ llll];};main (){l111 llll1 *ll11,*l1l,* l1, *ll1l, * malloc ( ) ; l1l1 ll11l l1ll ; ll11l l11,ll ,l;l1l1 lll11 *lll1,* lllll; ll1(l =1-1 ;l< 14; ll1ll("t"8)>l"9!.)>vl" [l]^'L'),++l );scanf("%d",&l);l1l1l(l1l) l1l1l(ll11 ) (l1=l1l)-> lll[l1l->lll[1-1] =1]=l11l;ll1(l11 =1+1;l11<=l; ++l11){l1=ll11; lll1 = (ll1l=( ll11=l1l))-> lll; lllll =( l1l=l1)->lll; ll=(l1ll=1-1 );ll1(;ll1l-> lll1l||l11l!= *lll1;){l1ll +=l11**lll1++ ;l1ll1 ll111 (++ll>llll){ l1lll lll1=( ll1l =ll1l-> lll1l)->lll; }}ll1(;l1ll; ){l1ll1 ll111 (++ll>=llll) { l1lll} } * lllll=l11l;} ll1(l=(ll=1- 1);(l<llll)&& (l1->lll[ l] !=l11l);++l); ll1 (;l1;l1= l1->ll1l1,l= llll){ll1(--l ;l>=1-1;--l, ++ll)printf( (ll)?((ll%19) ?"%04d":(ll= 19,"n%04d") ):"%4d",l1-> lll[l] ) ; } ll1ll(10); }
Shapiro
Most Well Rounded Obfuscation: <shapiro@alumni.cs.colorado.edu> Andrew T Shapiro Andrew T. Shapiro CSES/CIRES University of Colorado Campus Box 216 Boulder, CO 80309-0216 USA Judges' comments: To use: make shapiro ./shapiro & This entry has many different levels of obfuscation, and yet the source file is self documenting. <img src="/skins/commons/emo/smile.gif" alt=":-)" title=":-)"/> From time to time, run ps and look at the new processes. See shapiro.info for more information in the internals of this program. The file shapiro.alt contains a non-obfuscated version of this program. Selected notes from the author: The basic theme (pun) of this program is: "This time (everything) is not where it should be." ~~~~ My entry (shapiro.c) is mostly comment, formatted in the shape of a clock. If you strip out the comments and look at the code you will quickly realize that the comments were the important part and that the code does very little (see pun above). It writes (to stdout) another C program (shapiro_t2.c). This is the first level of obfuscation. The second program (shapiro_t2.c if you use the build/make file) prints a clock in the upper right hand corner of your VTxxx/ANSI display. Most of the surface obfuscation in the second program (shapiro_t2.c) was an attempt to make it as small as possible. You should be able to see around this with cb(1) and some more intelligent variable names. Once you get past this you will realize that the third level of obfuscation is a six member client/server hierarchy. (See the second info file for a detailed description of the algorithm.) Lint complains about: precedence confusion, K may be used before set, main() returns random value to invocation environment, value type used inconsistently, value type declared inconsistently, function argument ( number ) used inconsistently, function returns value which is always ignored, function returns value which is sometimes ignored All of which are harmless (famous last words). This may or may not work on non ASCII systems (I could not find one to test it on.) Copyright (c) 1994, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety and remains unaltered. All other uses must receive prior permission in writing from both Landon Curt Noll and Larry Bassel. HINTS ~~~~~ For the first program (prog.c): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This is a very simple program: 1. #include <stdio.h> 2. main() 3. { 4. int K,L,M=0; 5. FILE *J; 6. J=fopen(__FILE__,"r"); 7. for(; 8. (L=getc(J))!=-1; 9. L>='J'&&L<='J'+15 && 10. ((M=!M)?K=L:putchar(K-'J'|(L-'J'<<4))) 11. ); 12. exit(0)} Lines 1-5 are basic stuff. Line 6 opens the source code for input. Line 7 is the loop. Line 8 is read in each character in the file (placed in L) while not EOF(-1). Line 9 is an if expression which filters out all characters not between J and J + 15. Line 10 uses M to execute two different paths the first just stores the character in K. The second path combines the last two characters read in as high and low nibbles of a byte and outputs them. In effect this is a very poor ASCII to binary decoder. The last line is necessary so that make will not stop when it executes this program. The second program is encoded into this format and then included (mostly) as a comment. Notice that it is impossible to write this program while leaving 16 contiguous ASCII characters free for the encoding. Because of this the second program is mostly included as a comment. However, some of the characters of the encoded program are also source code for the decoder. For the second program (time.c): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 #include <stdio.h> 2 #include <time.h> 3 #define o(j,k,m,n,l) {fprintf(j,a[k],m,n,a[l]);fflush(j);} 4 char *a[]={"%c+------------+n","%c+%3d %-8s+n","seconds","minutes", 5 "hours","%sn","33733[%d;65;H%s338"}; 6 int b[]={0,0,17,14,11,0}; 7 main(v,c) 8 int v; 9 char ** c; 10 { 11 char d[40],*e,f=6; 12 time_t g; 13 FILE *h,*i; 14 while (--f && !pipe(d) && !fork()); 15 h=fdopen(6-f<<1,"a"); 16 i=fdopen((6-f<<1)+1,"r"); 17 for(;;){ 18 if(f){ 19 fgets(d,40,i); 20 d[strlen(d)-1]=''; 21 if(*d=='0'+f){ sprintf(*c,"%sn",d+1); o(stdout,6,6-f,d+1,0) } 22 if(*d>'0'+f) o(h,5,d,0,0) 23 }else{ 24 time(&g); 25 e=asctime(localtime(&g)); 26 for(v=1;v<6;v++) o(h,v!=1&&v!=6-1,v+'0',atoi(e+b[v]),v) 27 sleep(1); 28 }}} Lines 1 and 2 have to be. Think of 'o' in line 3 as send message with j,k and m as where, format and what. Lines 4 and 5 are all the text strings. Line 6 is the offsets into the time string for the hours, minutes and seconds. Lines 7-13 are basic stuff. Line 14 is the crux of the biscuit. 14 forks off 'f'(6) processes each of which is connected to the ones above and below it with a Unix pipe. It was too difficult to recover the actual fd numbers for the pipe ends in line 14 so I regenerate them and fdopen them (for use with the standard C library functions) on lines 15 and 16. Now we have six almost identical processes. Each of which has two files open h and i (up and down). The only difference in each process is the value of f (0 <= f < 6). The five processes where f !=0 are the slave processes and f == 0 is the master. Line 17 says we are going to do this forever. Lines 18 and 23 differentiate between the master and the slaves. Lines 19 to 22 are the slave code. Here we read in a line of text from i (down)(line 19) and remove the end of line char (line 20). On line 21 if this message is for us (if the first character is our number, f, in ASCII) we do two things: 1. We copy the text of the message to *c which is really argv[0]. If you are on the correct flavor of Unix this will change the output of the ps(1) command to the string we just put there. 2. We send the message (not including the number) to stdout with format number 6 ("33733[%d;65;H%s338") If you can read VTxxx (and I read books printed as ANSI/VTxxx codes for fun <img src="/skins/commons/emo/smile.gif" alt=":-)" title=":-)"/> you know this is the sequence for: remember where we are, go somewhere else, print the message, and return to where we started. Line 22 says if this message is not for us (the number is bigger than ours) send it to h (up). Lines 24 to 27 are the master code. Here we get the time and convert it to an ASCII format (lines 24 and 25). Then on line 26 we build and send each of the messages for the slaves. The message uses a different control string for the different slaves. For the first and last slave the message text is just "%c+------------+n" (slave number, text, newline.) For the other slaves it is "%c+%3d %-8s+n" (slave number, number, units, newline). The slave number is v+'0'. The number (if used) is atoi(e+b[v]) and the units are just the string in the slave number position.
shapiro.c
#include <stdio.h> /*MLSPXPMPVPOQN POPJLVMMQNQNPSPYPXLRP XMTJMLSPXPMPVPOQNPOPJLVMN QSPWPOPXLRPXMTJMLNPOPPPSPXPOP JLYPRLTPVLUPVLWPVLXPVLVPSLJLUQP PJQLQSPXPNQPPRLTPVL*/main(){int K/* PUOUPWOV*/,L/<b>WPVLXPVLKPUOVPWOSLU</b>/,M /<b>PPPPVPOQMQRPR</b>/=0;FILE/<b>TPSLUMWQT</b>/ * J/<b>MPRPKPLQ</b>/; J= fopen(__FILE__ /*T*/,"r");for (;( L/*KPUOWOWMUQ LLOLMPULWLWL WLW LWLWLWLWLWLW LWLWLULVOXP LLV LLLOLMPULOL MMNP*/=getc (J) )!= -1;L/* OLWLRMMQUL VOX PLLVLLLMQO PMPYPXPNP MQL LVLLLWPSP XPOQNQOPMQ LLV LTj*/>='J' &&L/*LRPYP OQL QMQLLVLLL OLMQVOXPL LVL LLVOe*/<= 'J'+15&&( (M= !M/*MMMQMV OJMMMMMU OOL NPU MPMOM UMRNOLMQV OJM MMMMRMLLW QUMTJSPX PNQ JLLPUOWO WMUQJMVL JMV L*/)?K/* MQMV*/=L: putchar (K/*deMN MaVbcLKM KMV Le*/-'J' /<b>MWQUMTJ WPK PSPXPR</b>/ |(L/<b>PQV LMPSLSPXPNQ</b>/- 'J'<<4)) ));exit( 0);}/*LPQUMMPR PKPLQJLT LTLJLMPU MTJUQMPRPKPLQ JLNPUONM JMWOVLTL OPVLPPWM PMUMTJNQ SPWPOPYO NQJLQPUM TJPNSNVN ONJLTLRP VLTLSPUM TJQQRPSP VPOPJLRL WLWLPPJLP LPLJLKLJQ SPJQOPRL NPSLJLPL PLJLKLPPY PLQUPRLSL SLUMTJRPW MPPNPYPJQ OPXPRLPMW LPPVMVMKM VLLLKPLLSL UMSPWMPPNP YPJQOPXPR LRLPMWLPP VMVMKMSLUL KMVLLLLQLL SLUMTJPPYP LQRLUMUMSL UQSPPPRLPPS LUQPPQPOPNQ MQRLNPVLNMJM VLSPSLUMNPUO MQNQLQVPOPXPR LNPSLWLKMWOWM QLVOJMQLUMTJSP PPRLTLNPWMWMQL JMQLULPPSLUQMQJQLQSPXPNQPPRLTLMPVLLLOLM QVOXPLLVLNPULKMSLUMYPRLMQNQNPYPOQNQVL PMVLPMWLPPVLNPULKMVLJMSLWQTJSPPPRLT LNPXMQLJMQLULPPSLYPRLRPVLOMVLNP VLJMVLJMSLWQOPVPMQOPUQNQSPWPO PRLPLQPSLUMOPWMKPMQMPNQSP WPOPRLVPYPMPKPVPNQSPW POPRLPLQPSLSLUM TJPPYPLQRLPQWMKMUMPQVMPMUMPQULULSLYPRLRPVLPQKLWMKMPLPLPQKLWMPMWLKMVLPQ ULQLJMQLVLKPNQYPSPRLOPULLPUOPQWOSLVLPQSLMQVPOPOPJQRLKMSLUMWQWQWQTJTJ*/
Brian Westley
Best Layout: <...uunet!rosevax!jhereg!quest!digibd!merlyn> Merlyn LeRoy Brian Westley (Merlyn LeRoy on usenet) DigiBoard, Inc. 1026 Blair Ave. St. Paul, MN 55104 USA Judges' comments: usage: westley <number> If you would rather "Daisy" someone other than Westley, rename the program as needed. <img src="/skins/commons/emo/smile.gif" alt=":-)" title=":-)"/> Read each block of code as if it were a piece of correspondence. For example, the first block of code would read: charlie, doubletime me, OXFACE! not interested, get out mainly die, charly, <b>die</b> signed charlotte The original source had control-L's after each code block. To make it easier on news readers, we converted each control-L to a blank line. Some ANSI compilers will not accept '1s' as a short integer - for these compilers replace the '1s' with '1'. Selected notes from the author: This is a "Picking the Daisy" simulation. Now, instead of mangling a daisy, simply run this program with the number of petals desired as the argument. This is a good counter-example to peoples' complaints that C doesn't have an "English-like" syntax. Lint complains about everything - null effect, xxx may be used before set, statement not reached, return(e) and return. Lint dumps core on some systems. My personal favorite lint complaint is "warning: eroticism unused in function main". Also obviously, (char)lotte and (char*)lie are incompatible types... Copyright (c) 1990, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety and remains unaltered. All other uses must receive prior permission in writing from both Landon Curt Noll and Larry Bassel.
westley.c
char*lie; double time, me= !0XFACE, not; int rested, get, out; main(ly, die) char ly, **die ;{ signed char lotte, dear; (char)lotte--; for(get= !me;; not){ 1 - out & out ;lie;{ char lotte, my= dear, **let= !!me *!not+ ++die; (char*)(lie= "The gloves are OFF this time, I detest you, snotnsed GEEK!"); do {not= <b>lie++ & 0xF00L</b> !me; #define love (char*)lie - love 1s *!(not= atoi(let [get -me? (char)lotte- (char)lotte: my- *love - 'I' - *love - 'U' - 'I' - (long) - 4 - 'U' ])- !! (time =out= 'a'));} while( my - dear && 'I'-1l -get- 'a'); break;}} (char)*lie++; (char)*lie++, (char)*lie++; hell:0, (char)*lie; get <b>out</b> (short)ly -0-'R'- get- 'a'^rested; do {auto*eroticism, that; puts(*( out - 'c' -('P'-'S') +die+ -2 ));}while(!"you're at it"); for (*((char*)&lotte)^= (char)lotte; (love ly) [(char)++lotte+ !!0xBABE];){ if ('I' -lie[ 2 +(char)lotte]){ 'I'-1l ***die; } else{ if ('I' * get <b>out</b> ('I'-1l *<b>die[ 2 ])) *((char</b>)&lotte) -= '4' - ('I'-1l); not; for(get=! get; !out; (char)*lie & 0xD0- !not) return!! (char)lotte;} (char)lotte; do{ not* putchar(lie [out *!not* !!me +(char)lotte]); not; for(;!'a';);}while( love (char*)lie);{ register this; switch( (char)lie [(char)lotte] -1s *!out) { char*les, get= 0xFF, my; case' ': *((char*)&lotte) += 15; !not +(char)<b>lie</b>'s'; this +1s+ not; default: 0xF +(char*)lie;}}} get - !out; if (not--) goto hell; exit( (char)lotte);}