unsigned long i, add_ptr, tap1, tap2, tap3, tap4, tap5;
        int input_rotate;
        int wordmask = r->poolinfo->poolwords - 1;
-       __u32 w, next_w;
+       __u32 w;
        unsigned long flags;
 
        /* Taps are constant, so we can load them without holding r->lock.  */
        tap3 = r->poolinfo->tap3;
        tap4 = r->poolinfo->tap4;
        tap5 = r->poolinfo->tap5;
-       next_w = *in++;
 
        spin_lock_irqsave(&r->lock, flags);
-       prefetch_range(r->pool, wordmask);
        input_rotate = r->input_rotate;
        add_ptr = r->add_ptr;
 
        while (nwords--) {
-               w = rol32(next_w, input_rotate & 31);
-               if (nwords > 0)
-                       next_w = *in++;
+               w = rol32(*in++, input_rotate & 31);
                i = add_ptr = (add_ptr - 1) & wordmask;
 
                /* XOR in the various taps */