.text .globl sum .type sum, @function sum: pushl %ebx movl 8(%esp), %ebx movl 12(%esp), %ecx movl $0, %eax testl %ecx, %ecx jle .L2 movl $0, %edx .L5: testb $1, %dl jne .L3 addl (%ebx,%edx,4), %eax jmp .L4 .L3: subl (%ebx,%edx,4), %eax .L4: addl $1, %edx cmpl %ecx, %edx jne .L5 .L2: popl %ebx ret .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp andl $-16, %esp subl $48, %esp movl $17, 16(%esp) movl $-3, 20(%esp) movl $6, 24(%esp) movl $-11, 28(%esp) movl $25, 32(%esp) movl $31, 36(%esp) movl $0, 40(%esp) movl $15, 44(%esp) movl $8, 4(%esp) leal 16(%esp), %eax movl %eax, (%esp) call sum movl %eax, 8(%esp) movl $.LC0, 4(%esp) movl $1, (%esp) call __printf_chk leave ret .section .rodata .LC0: .string "result is %d\n"