.data taps: .long 1 .long 2 .long 9 .long 15 .long 25 .text .globl main main: movl 0x0831423, %eax call createKeystream ret createKeystream: movl $32, %edx g lfsr: movl $taps, %esi movl $5, %ecx # array size movl %eax, %ebx # seed -> temp xorl %edi, %edi # zero out index part1: cmpl %edi, %ecx je part2 shrl (%esi,%edi,4), %ebx # temp >> taps[i] <-------- PROBLEM xorl %eax, %ebx # seed ^ temp > temp incl %edi jmp part1 part2: andl $1, %ebx # temp &= 1 shl $31, %ebx # temp << 31 shr $1, %eax # seed >> 1 or %ebx, %eax # temp | seed -> seed dec %edx jnz lfsr ret