w0 ← src[off]; off ← off + srcPitch;
w1 ← src[off]; off ← off + srcPitch;
w2 ← src[off]; off ← off + srcPitch;
w3 ← src[off]; off ← off + srcPitch;
w4 ← src[off]; off ← off + srcPitch;
w5 ← src[off]; off ← off + srcPitch;
w6 ← src[off]; off ← off + srcPitch;
w7 ← src[off]; off ← off + srcPitch;
w ← src[off]; w0 ← w0 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w1 ← w1 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w2 ← w2 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w3 ← w3 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w4 ← w4 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w5 ← w5 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w6 ← w6 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w7 ← w7 + Basics.BITLSHIFT[w, 8]; off ← off + srcPitch;
w ← src[off]; w0 ← w0 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w1 ← w1 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w2 ← w2 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w3 ← w3 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w4 ← w4 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w5 ← w5 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w6 ← w6 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w7 ← w7 + Basics.BITLSHIFT[w, 16]; off ← off + srcPitch;
w ← src[off]; w0 ← w0 + Basics.BITLSHIFT[w, 24]; off ← off + srcPitch;
w ← src[off]; w1 ← w1 + Basics.BITLSHIFT[w, 24]; off ← off + srcPitch;
w ← src[off]; w2 ← w2 + Basics.BITLSHIFT[w, 24]; off ← off + srcPitch;
w ← src[off]; w3 ← w3 + Basics.BITLSHIFT[w, 24]; off ← off + srcPitch;
w ← src[off]; w4 ← w4 + Basics.BITLSHIFT[w, 24]; off ← off + srcPitch;
w ← src[off]; w5 ← w5 + Basics.BITLSHIFT[w, 24]; off ← off + srcPitch;
w ← src[off]; w6 ← w6 + Basics.BITLSHIFT[w, 24]; off ← off + srcPitch;
w ← src[off]; w7 ← w7 + Basics.BITLSHIFT[w, 24];
Rotate section: recursively rotate using 2*2, 4*4, 8*8 cells
mask ← 55555555h;
w ← Basics.BITAND[w0, mask];
w0 ← Basics.BITAND[mask, Basics.BITRSHIFT[w0, 1]];
w0 ← w0 + Basics.BITAND[Basics.BITNOT[mask], w1];
w1 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w1], 1];
w ← Basics.BITAND[w2, mask];
w2 ← Basics.BITAND[mask, Basics.BITRSHIFT[w2, 1]];
w2 ← w2 + Basics.BITAND[Basics.BITNOT[mask], w3];
w3 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w3], 1];
w ← Basics.BITAND[w4, mask];
w4 ← Basics.BITAND[mask, Basics.BITRSHIFT[w4, 1]];
w4 ← w4 + Basics.BITAND[Basics.BITNOT[mask], w5];
w5 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w5], 1];
w ← Basics.BITAND[w6, mask];
w6 ← Basics.BITAND[mask, Basics.BITRSHIFT[w6, 1]];
w6 ← w6 + Basics.BITAND[Basics.BITNOT[mask], w7];
w7 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w7], 1];
mask ← 33333333h;
w ← Basics.BITAND[w0, mask];
w0 ← Basics.BITAND[mask, Basics.BITRSHIFT[w0, 2]];
w0 ← w0 + Basics.BITAND[Basics.BITNOT[mask], w2];
w2 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w2], 2];
w ← Basics.BITAND[w1, mask];
w1 ← Basics.BITAND[mask, Basics.BITRSHIFT[w1, 2]];
w1 ← w1 + Basics.BITAND[Basics.BITNOT[mask], w3];
w3 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w3], 2];
w ← Basics.BITAND[w4, mask];
w4 ← Basics.BITAND[mask, Basics.BITRSHIFT[w4, 2]];
w4 ← w4 + Basics.BITAND[Basics.BITNOT[mask], w6];
w6 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w6], 2];
w ← Basics.BITAND[w5, mask];
w5 ← Basics.BITAND[mask, Basics.BITRSHIFT[w5, 2]];
w5 ← w5 + Basics.BITAND[Basics.BITNOT[mask], w7];
w7 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w7], 2];
mask ← 0f0f0f0fh;
w ← Basics.BITAND[w0, mask];
w0 ← Basics.BITAND[mask, Basics.BITRSHIFT[w0, 4]];
w0 ← w0 + Basics.BITAND[Basics.BITNOT[mask], w4];
w4 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w4], 4];
w ← Basics.BITAND[w1, mask];
w1 ← Basics.BITAND[mask, Basics.BITRSHIFT[w1, 4]];
w1 ← w1 + Basics.BITAND[Basics.BITNOT[mask], w5];
w5 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w5], 4];
w ← Basics.BITAND[w2, mask];
w2 ← Basics.BITAND[mask, Basics.BITRSHIFT[w2, 4]];
w2 ← w2 + Basics.BITAND[Basics.BITNOT[mask], w6];
w6 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w6], 4];
w ← Basics.BITAND[w3, mask];
w3 ← Basics.BITAND[mask, Basics.BITRSHIFT[w3, 4]];
w3 ← w3 + Basics.BITAND[Basics.BITNOT[mask], w7];
w7 ← w + Basics.BITLSHIFT[Basics.BITAND[mask, w7], 4];
};