1void
2f (n, ppt, xrot)
3{
4  int tileWidth;
5  int nlwSrc;
6  int srcx;
7  int v3, v4;
8  register unsigned long ca1, cx1, ca2, cx2;
9  unsigned long *pSrcLine;
10  register unsigned long *pDst;
11  register unsigned long *pSrc;
12  register unsigned long b, tmp;
13  unsigned long tileEndMask;
14  int v1, v2;
15  int tileEndPart;
16  int needFirst;
17  tileEndPart = 0;
18  v1 = tileEndPart << 5;
19  v2 = 32 - v1;
20  while (n--)
21    {
22      if ((srcx = (ppt - xrot) % tileWidth) < 0)
23	if (needFirst)
24	  if (nlwSrc == 1)
25	    {
26	      tmp = b;
27	      if (tileEndPart)
28		b = (*pSrc & tileEndMask) | (*pSrcLine >> v1);
29	    }
30      if (tileEndPart)
31	b = (tmp << v1) | (b >> v2);
32      if (v4 != 32)
33	*pDst = (*pDst & ((tmp << v3) | (b >> v4) & ca1 ^ cx1)
34		 ^ (((tmp << v3) | (b >> v4)) & ca2 ^ cx2));
35      *pDst = *pDst & tmp;
36    }
37}
38