Sorry, guys... didn't mean to shake the tree.
So if I:
-- PUSH (or USES) ESI or EDI or EBX (in a procedure IF modified in the procedure)
-- PUSH EAX or ECX or EDX (before entering a procedure IF the value held is needed afterwards)
-- Assume other programmers assume esi, edi, and ebx will be preserved; eax, ecx, and edx will be trashed in procedures.
...it should be okay. Does that sound about right?