Except this is suboptimal, as is the code in the original post: it specifies ASCII, so (e & c1) is guaranteed to be zero. In your code, that means you could just do
return popcount((e & c2) + c3);
(Thanks for writing this out, as otherwise I wouldn't have spotted it.)