Add some profiler tags, using Profiler.Begin(“SomeString”); Profiler.End(). They will add extra blocks in the profiler to start figuring out which functions within that coroutine are expensive.
This way you can start drilling down function per function as to what’s costing so much. Those colliders are expensive to move during the Physics Frame, but are only 1/224ths of the time spent in that particular function.
Put Profiler Samples into the functions that cost the most, and continually branch downwards until you get more understandable readings per element, or 1 big value for an unexpected element. I suspect SetToggleState() is doing a lot of work.