The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
increment the address of s
set the value of s to the value of t and increment t.
the value of t is dependent on the if statement.
AND the value of t with 0x60 and if bit 6 is set, make the value of s = the value of t exclusive ored with 32,otherwise set s to the value of t...
then increment the address of t.
do this until the value of s is not true.
*t & 0x60: Filters all but two bits of *t. I will call those bits xy (the most significant one first).
(*t & 0x60) == 0x40: Tests whether xy is 10.
(*t & 0x60) == 0x40 ? *t ^0x20 : *t: If xy is 10, it returns a new character equal to *t, but with xy equal to 11. Otherwise, it returns the original character.
The whole loop iterates through a C string starting at s and copies it to another C string starting at t, but characters from 0x40 to 0x5F are converted into characters from 0x60 to 07F. The original string is left untouched, unless s equals t. (If t points to another character actually inside the C string pointed by s or vice versa, the program goes crazy.)
To the end user, this means the following: Uppercase characters are converted into lowercase characters, square brackets are converted into braces, the backslash is converted into a vertical line character, the French circumflex accent character is converted into the tilde character, and the underline character is converted into a DEL character.