MemEnable and MemRW are not registered!!!  Outputs should be registered unless there is a good reason for them not to be.  If you want them to be registered, you need to do nextMemEnable then update MemEnable in a clocked process.  This is why the 1 process state machine is preferred.