VirtualWire and PulseIn() issue

First, I suggest you change your p function to read like this:

void p(const char * label, int value)

That saves almost 1000 bytes of sketch size, and is much less likely to fragment memory.