I am being told that this process use to complete in 6 to 9 seconds, now it is taking over an hour!
Is this problem due to more data being processed now than before, a scaling issue? The use of functions throughout the code leads me to believe this could be the case. But, seeing the difference in the Estimated vs Actual rows, I would check that the statistics are up-to-date for the tables and indexes being used.
There are 4 Key Lookups in Statement1 that can potentially be removed. There is also an implicit convert in Statement1, this warning is indicated by the exclamation point on the SELECT box in the execution plan, then by hovering over the box, a popup message will present itself with the conversion warning. Eliminating the implicit convert will increase the performance.
The UPDATE Object1 statements are updating a column by using a function. Utilizing a function causes the update to be processed via RBAR, which is not the optimal method of processing data in SQL Server. I would recommend investigating methods of updating batches of data instead of RBAR, which means rewriting the SQL Code. You may also be able to replace some of the sub-queries using a function call with the temp tables, processing the data with SQL instead of a function and removing the RBAR aspect of the sub-query.
It is difficult to provide more detailed fixes with the limitations of the anonymized plan.