static inline void mas_wr_node_walk(struct ma_wr_state *wr_mas)
 {
        struct ma_state *mas = wr_mas->mas;
-       unsigned char count;
-       unsigned char offset;
-       unsigned long index, min, max;
+       unsigned char count, offset;
 
        if (unlikely(ma_is_dense(wr_mas->type))) {
                wr_mas->r_max = wr_mas->r_min = mas->index;
        count = wr_mas->node_end = ma_data_end(wr_mas->node, wr_mas->type,
                                               wr_mas->pivots, mas->max);
        offset = mas->offset;
-       min = mas_safe_min(mas, wr_mas->pivots, offset);
-       if (unlikely(offset == count))
-               goto max;
-
-       max = wr_mas->pivots[offset];
-       index = mas->index;
-       if (unlikely(index <= max))
-               goto done;
-
-       if (unlikely(!max && offset))
-               goto max;
 
-       min = max + 1;
-       while (++offset < count) {
-               max = wr_mas->pivots[offset];
-               if (index <= max)
-                       goto done;
-               else if (unlikely(!max))
-                       break;
-
-               min = max + 1;
-       }
+       while (offset < count && mas->index > wr_mas->pivots[offset])
+               offset++;
 
-max:
-       max = mas->max;
-done:
-       wr_mas->r_max = max;
-       wr_mas->r_min = min;
+       wr_mas->r_max = offset < count ? wr_mas->pivots[offset] : mas->max;
+       wr_mas->r_min = mas_safe_min(mas, wr_mas->pivots, offset);
        wr_mas->offset_end = mas->offset = offset;
 }