First, you have to understand the underlying problem before tackling somebody else’s code. My first app ran for 18 years without a single change.
It should have been changed since IBM reversed the properties of a variable type. They had to run emulators of prior machines for the app to run. That one app increased the company’s share of the market by 20%.
They lost the documentation and nobody understood the math, which solved 40 equations with 90 unknowns. Then, it did things internally that no operating system did at that time, but is common now — like memory swapping routines. The code, itself, was straightforward IF you understood those things.