This is what I would do after 'Step 0':
- identify a function using a global variable.
- verify the global variable does not change during execution of this function, e.g. some other function called by this function modifies it. (insert some code to do this for you)
- convert global variable into an argument and update all callers.
If the variable does change during the run then pick a different function first. When you got the global state disentangled a bit it's a lot easier to reason about what this code is doing. Everything that's still using a global needs to be treated with very careful attention.