.section .text

.global walk_stack
.type walk_stack, @function
walk_stack:
        pushl %ebp
        movl %esp, %ebp

        pushl %edi
        movl -4(%ebp), %edi
        pushl %ebx
        movl -8(%ebp), %ebx

        xorl %eax, %eax
        movl 8(%esp), %ebx
        movl 16(%esp), %edi
        movl 20(%esp), %ecx
walk:
        testl %ebx, %ebx
        jz done
        movl 4(%ebx), %edx
        movl 0(%ebx), %ebx
        movl %edx, (%edi)
        addl $4, %edi
        inc %eax
        loop walk
done:
        popl %ebx
        popl %edi
        popl %ebp
        ret