Device keeps resetting randomly

and I can confirm it receives by the mountain of serial debugging code I've put in,

That could be part of the problem.
Try to use the "F()" macro when printing constant strings, to make sure they don't use up your precious RAM.

  Serial.print(F("Current value is "));
String debugregVal = "registerValue is set to ";

That could be another part.
Please, don't use String.