We are out of the woods! All I have to do now is cleanup the assembly function to make it pretty/easier to read <= if that is possible.

So I have a function called "call_function64" that takes 3 parameters, a function address, an integer denoting the number of parameters, and the address of an array of XLOPERs.  An XLOPER is 24 bytes in size, but the functions I am targeting contain one or more LPXLOPERs as each parameter.  An LPXLOPER is a pointer, and thus its size is 8 bytes.  So it traverses the array of XLOPERs, and places the appropriate address onto the stack for 64bit calling conventions.  I can make this cleaner/prettier by specifying the size of each element, or I can make it accept an array of LPXLOPERs.  I will do whatever makes it easier - meaning - less executed instructions based on how these parameters come from Excel, which I just took a look and is an array of LPXLOPERs.  Oh well, more work on this one...