Yeah, pawn endgames are tricky :/ The concept here is "corresponding squares", so I'm guessing what the engine is trying to do is manueuver the king such that Black's king is on a certain square when White's king is on another "corresponding" square, putting White in zugzwang.
http://charlottechesscenter.blogspot.com/2017/06/endgame-strategy-corresponding-squares.htmlTo understand the corresponding squares in your position, we need to know the concept of the opposition and triangulation.
Opposition is when two kings are facing each other, with an odd number of squares between them. So for example, a King on c4 and a king on c6. Kings 3 files apart from each other, eg. King d8 and King d4, is a distant opposition. The reason why this is so important is because since kings cannot move immediately adjacent to each other, neither king can advance, creating a mutual blockade, which happened in your game.
I'm not sure how to post diagrams, so I can't really give a good example of how this works in a practical endgame. You can read about it here though:
www.ragchess.com/endgame-theory-opposition-triangulation-and-trebuchets-explained/#:~:text=Opposition%20occurs%20when%20the%20kings,to%20white%20in%20this%20situation (this article covers triangulation too)
In your position, the opposition is very important - If you can manuever your king such that you have the opposition, and white is forced to move back, then you can push pawns and win.
Let's skip to move 48. 48...Kc6! wins for Black. The idea is that if White just toggles between the d4 and e3 squares we get:
48...Kc6 49. Kd4 Kd7 50. Ke3 Kc8! 51. Kd4 Kd8! (getting the opposition) 52. Ke3 Ke7 53. Kd4 Ke6 54. Ke3 Ke5! and we have the opposition, white cannot move to d4. We win since the King is forced back and then we push pawns.
And if White moves the king off from d4-e3 then we can probably push our pawns and win.
Hope this helps :)
EDIT: it's important to note that his passed pawn can't really be pushed, since our king is close enough to win it.