If you look at the spy output on nested loops you will see it. Things like inc %ebp jo ??? mov %esp, 0xdc(%edi) mov %ebp, 0xd8(%edi) If I were writing this I wouldn't put the %esp store while I was working on the %ebp. As I said, there is nothing wrong with this, and it might even be good, but it definitely reads as being not something a human would do.