asm("pop %rax"); to your program
main(c,l){
putchar('\n'*(l>32&c<33));
putchar(c*(c32));
asm("pop %r15");
asm("pop %r15");
asm("pop %r15");
asm("pop %r15");
main(getchar(),c);
}
//this program can process the entire king james bible
//(also prints newline for every space as well)
main(c,l){
putchar('\n'*(l>32&c<33));
putchar(c*(c>32));
main(getchar(),c);
}
//this program can only process the first 500K
//chars of the king james bible before stack overflow
main(char c,char l){
putchar('\n'*(l<32&c>33)|c*(c<32));
asm("call getchar@plt\nmovl -0x4(%rbp), %esi\nmovl %eax, %edi\npop %rax\npop %rax\npop %rax\njmp main");
}
//no stack overflow with proper behaviour
main(c,l){ main(getchar(putchar(10*(l>32&c<33)|c*(c>32))),c); } //bonus one line program