This is clearly peterson's algorithm without explicit condition to check for turn.
while (flag && turn == 1)
// busy wait
You see , in given code turn == 1 && flag is not checked in single operation (atomic ).
I'm having hard time believing we'd have ME there.
Consider , after busy wait (do no_op loop) , there was context switch and then P0,P1 might enter CS at same time.
Since Flag is toggled in Remainder , progress is there.