Plenty fast, I'd say.
At 32MHz an instruction cycle is 125ns. That's ~1250 cycles between zero crossings.

I'm not trying to interpret/decode the data, just demodulate the signal.
Every other zero crossing, grab timer value, do some comparison, flip a bit (or not), reset/restart timer. My gut feeling says we should be able to do that in less than 100 instructions - even with PBP compiled code but we'll see.

What's "bothering me" is the fact the line is idle for extended periods of time meaning there's no zero crossing and timer will overflow/wrap around. I'll need to detect that.