Given that

fragment.texcoord[3] contains a vector multiplied by the inverse transpose of the modelview matrix.

( and is not already normalized )

texture[1] contains a normalizing cube map.

These two ARBfp snippets should be pretty much the same, right?

```
# normalize with math
DP3 normal.w, fragment.texcoord[3], fragment.texcoord[3];
RSQ normal.w, normal.w;
MUL normal.xyz, fragment.texcoord[3], normal.w;
# normalize via cube maps
#TEX normal.xyz, fragment.texcoord[3], texture[1], 3D;
#MAD normal.xyz, normal, two, neg_one;
```