I'm still trying to figure out what else they could have done, beyond setting the LAA flag, to make the game more efficient. I don't think they taken enough time yet to clean up the memory leaks but if anyone notices an improvement there as well that would be good to know.
They probably had "set size" variables... Those are actually slower on new computers. EG, using BIT, BYTE, INT... The fastest variables are now SingleFLOAT, and UnsignedLONG, and SignedLONG (32-bit allocation does not require translation to a smaller size, which has a high overhead on new 32/64 bit systems, running on 64-bit processors.)
Back in the day, to conserve memory, or make things run faster, you used BYTE for any value that only had 0-255 for a range, because it was faster, and consumed less memory. Now, it consumes more memory, as it is actually a BYTE stored inside an UnsignedLONG, but flagged for conversion. Also being checked for roll-over value... 256 = 0, 257 = 1... to make it "safe" as a BYTE. *Unless you specifically craft machine-code, or allocate memory for variables directly. Something windows doesn't play nice with anymore. It likes virtual allocations that it can move at will.
I am sure they had to change all pointers and variables to larger 32-bit native and 64-bit universals, thus, resulting in slight speed gains.
(The problem with LAA, is if your variables are optimized for only 2GB of pointer address values, and you get sent a 3GB or 4GB pointer value... the value won't fit in the smaller optimized variable, and thus, would not read correctly. Though most of the variables were likely "safe" to use... I am sure that not all of them were "safe", and needed to have limits and checking in place, to make sure nothing went out-of-range.)