I'm referring to the original post.
Note also that '&' alone is supposed to do what in your post?
Whether the OP or the one I provides, here's an English version for this:
return (( ( ayr >> ch | tons >> ch )
& ( ayr >> ch+3 | noiv )
& 1 ) * amp[envv];
"take the value of (( ayr >> ch | tons >> ch) and bitwise and it with (ayr >> ch+3 | noiv ) and bitwise and the result with 1 (i.e. get the value of the low order bit). Multiply the result by amp[envv], and return that value. So the returned value will either be zero or amp[envv], depending on the low order bit of the result of all the shifting, or'ing and and'ing"
...and that's only the first half of it