_sumFirst: pushl %ebp ; Set up the stack for movl %esp, %ebp ; the local variables subl $8, %esp ; of the sumFirst function ans = 0; movl $0, -4(%ebp) ; -4(%ebp) is ans i = 1; movl $1, -8(%ebp) ; -8(%ebp) is i L2: i <= n movl -8(%ebp), %eax ; copy i value from memory into register %eax cmpl 8(%ebp), %eax ; 8(%ebp) is n; compare n and i jg L3 ; jump to end of for loop (location L3) if n > i ans += i; movl -8(%ebp), %eax ; copy i to %eax leal -4(%ebp), %edx ; copy address of ans into %edx addl %eax, (%edx) ; add i to ans i++ leal -8(%ebp), %eax ; load address of i in %eax incl (%eax) ; increment i jmp L2 ; jump back to label L2 for loop beginning L3: return ans; movl -4(%ebp), %eax ; copy return value, ans, into register %eax leave ; pop local variables from the stack ret ; and return to the instruction ; after the call to sumFirst