You're running your long run too fast. your long run should be 10 to 20% slower than marathon pace, and a 3:30 marathon would be 8:00 min/mile pace - so you should be looking at roughly 9:00 min/mile for the run. This will give you the training benefit of the long run, whilst reducing the risk of injury etc. Also, if you consider time on your feet, your faster LSR means you spend around 3 hours running - whereas if you go slower you will spend 3:30 hours running (i.e. the same as your marathon time).
You are very close so look for the little things you are doing wrong, e.g. are you tapering properly? Are you doing short-distance intervals for your speed work? For marathons, the benefit of intervals are questionable, as tempo runs are probably more appropriate. I'm also not sure about the weekly hill runs - if your marathon isn't hilly, then its probably not the most beneficial session.
TBH the most obvious answer is to get a proper training plan for the marathon - this will make sure you get the quantity & quality of runs.