Timing and speed issues with pin change interrupt based routines - Arduino slow?

could you just have a tight loop that reads all 12 bits and does a table lookup or hash function to get the 4 output bits? Don't worry about changes - just translate 12 bits to 4.