Ok so looking at it a little it looks like over at 080CDD3C is where it checks the evolution method to actually call the stone check. If we simply hook into that and add our own checks we could possibly create alternate stone evolution methods, kinda like dawn stone and such(which is already done though)Nope thats wrong here is where it checks for the stone 0804318E
This is where the trade evolution deletes the item 8043142
Well as of late I've been doing a lot of work in IDA so if I get some time I could easily retrace the evolution animation and possibly find some breakpoints that'll lead us in the right direction. That way we can also prevent the item from being deleted if the evolution is canceled.
I can't test it not at a pc. And I mean for stack corruption is when you push something already pushed without popping first. The way you had it you had the initial push. Then when you did bl decrypt you pushed again. That's what caused the corruption.