void f (n, ppt, xrot) { int tileWidth; int nlwSrc; int srcx; int v3, v4; register unsigned long ca1, cx1, ca2, cx2; unsigned long *pSrcLine; register unsigned long *pDst; register unsigned long *pSrc; register unsigned long b, tmp; unsigned long tileEndMask; int v1, v2; int tileEndPart; int needFirst; tileEndPart = 0; v1 = tileEndPart << 5; v2 = 32 - v1; while (n--) { if ((srcx = (ppt - xrot) % tileWidth) < 0) if (needFirst) if (nlwSrc == 1) { tmp = b; if (tileEndPart) b = (*pSrc & tileEndMask) | (*pSrcLine >> v1); } if (tileEndPart) b = (tmp << v1) | (b >> v2); if (v4 != 32) *pDst = (*pDst & ((tmp << v3) | (b >> v4) & ca1 ^ cx1) ^ (((tmp << v3) | (b >> v4)) & ca2 ^ cx2)); *pDst = *pDst & tmp; } }