This doesn't match the behavior of the Interpreter codepath if the value is out of range.  And you don't set the upper 32 bits of RAX anywhere.