But it is clear that the line
this.fontRendererObj.drawString("Tamed: " + tamedString, topX + 190, topY - 140, 0xFFFFFF);
can throw the NPE with tamedString. See the code in GuiDogInfo#drawScreen(int xMouse, int yMouse, float partialTickTime).
tamedString is local variable in the method, it is initialized as null,
and it is only substituted with valid value only if the dog is tamed. So it throws NPE otherwise.