You've turned one 34 line function into 3 functions that total 40 lines, which isn't a great start for a simplification, but on top of that your version wont actually work. You're trashing fallouts registers, but you mention that, and I'll assume that the mov rxxx, eax gunk was supposed to be...