I read in a magazine one time about why we call code "legacy code". What's the difference between code written today and "legacy code"? Well, "legacy code" is code nobody wants to touch anymore either because it's too complex, lack of documentation, or lack of unit tests to support old ideas. Below are some metrics of this code using Reflector. I was shocked when I saw them!
Type metrics showing complexity per class type. Complexity should be around 15 or less to be considered quality maintainable code.

Type metrics showing the number of lines of code. That's a lot!

Now the good stuff. Metrics by method showing the method complexity. Again should be around 10 to 15 for good quality code.

Lines of code per method. You can see that's a lot of code for a single method. You could probably split the first one into about 15 to 20 classes.

I saved the best for last. Metrics by module which is a single file. I only included the dlls and did not include any of the exe files. 9 million lines of code in a single dll. Windows 3.1 had between 4 and 5 million lines of code and that was a whole operating system. Total in all, the files they wrote, probably equal the same number of lines of code as it took to write Windows 2000.

Right now I'm thinking 85 to 90% of the code isn't even used. Now I need to figure out how to isolate the code that isn't used between various .Net and vb6 projects and then loading all the sub-projects into source control correctly using branches and trunks so when a user checks in a small change it doesn't destroy everything.
WARNING! Aggravation level is extremely high!