movl 8(%ebp), %esi // get x
movl 12(%ebp), %ebx// get y
movl 16(%ebp), %ecx // get n
.L6:
imuli %ecx, %ebx // y * x -> y
addl %ecx, %esi // x + n -> x
decl %ecx // n - 1 -> n
testl %ecx, %ecx // n & n
setg %al // %al <- ~{SF^|OF}& ~ZF
cmpl %ecx, %ebx