Well from your map, your code is definately not "too big." You're only at 55% usage right now (just be careful in the future). Further, the compiler will tell you if you overflow, anyway.
The problem you describe sounds slightly similar to one we had a while ago, so take a look for this: We found that having any printf() statements before initialization caused the robot to go pretty much completely dead, with a red/green/red/green light, and it took us forever to find out the problem. As a precaution, make sure that no functions that need to be initialized are called before they are, as it can really mess you up.
Other than that, I can't give you any good advice right now

, except make sure you don't have any infinite loops and no unhandled interrupts, as those can cause the red program light. Will try and read your code more in depth later today.