fix a reg allocation bug; add support for multiple return value (not tested yet);