!!NVvp4.0
# cgc version 2.1.0000, build date Jan 30 2009
# command line args: 
#vendor NVIDIA Corporation
#version 2.1.0.0
#profile gp4vp
#program main
#semantic gl_ModelViewMatrix : state.matrix.modelview.transpose
#semantic gl_ModelViewProjectionMatrix : state.matrix.mvp.transpose
#semantic gl_NormalMatrix : state.matrix.modelview.inverse
#var float3 rm_Tangent : $vin.ATTR1 : ATTR1 : -1 : 1
#var float3 LightDir : $vout.ATTR0.xyz : ATTR0 : -1 : 1
#var float3 ViewDir : $vout.ATTR1.xyz : ATTR1 : -1 : 1
#var float4x4 gl_ModelViewMatrix : state.matrix.modelview.transpose : c[0], 4 : -1 : 1
#var float4 gl_TexCoord[0] : $vout.TEX0 : TEX0 : -1 : 1
#var float4 gl_TexCoord[1] :  :  : -1 : 0
#var float4 gl_TexCoord[2] :  :  : -1 : 0
#var float4 gl_TexCoord[3] :  :  : -1 : 0
#var float4 gl_TexCoord[4] :  :  : -1 : 0
#var float4 gl_TexCoord[5] :  :  : -1 : 0
#var float4 gl_TexCoord[6] :  :  : -1 : 0
#var float4 gl_TexCoord[7] :  :  : -1 : 0
#var float4x4 gl_ModelViewProjectionMatrix : state.matrix.mvp.transpose : c[4], 4 : -1 : 1
#var float4 gl_Vertex : $vin.POSITION : ATTR0 : -1 : 1
#var float3x3 gl_NormalMatrix : state.matrix.modelview.inverse : c[8], 3 : -1 : 1
#var float3 gl_Normal : $vin.NORMAL : ATTR2 : -1 : 1
#var float4 gl_MultiTexCoord0 : $vin.TEXCOORD0 : ATTR8 : -1 : 1
#var float4 gl_Position : $vout.POSITION : HPOS : -1 : 1
PARAM c[11] = { state.matrix.modelview.transpose,
		state.matrix.mvp.transpose,
		state.matrix.modelview.inverse.row[0..2] };
ATTRIB vertex_attrib[] = { vertex.attrib[0..8] };
OUTPUT result_texcoord[] = { result.texcoord[0..0] };
OUTPUT result_attrib[] = { result.attrib[0..1] };
TEMP R0, R1, R2, R3, R4;
TEMP RC, HC;
MUL.F R1.xyz, vertex.attrib[1].y, c[9];
MUL.F R0.xyz, vertex.attrib[2].y, c[9];
MAD.F R1.xyz, vertex.attrib[1].x, c[8], R1;
MAD.F R1.xyz, vertex.attrib[1].z, c[10], R1;
DP3.F R1.w, R1, R1;
RSQ.F R1.w, R1.w;
MAD.F R0.xyz, vertex.attrib[2].x, c[8], R0;
MAD.F R0.xyz, vertex.attrib[2].z, c[10], R0;
DP3.F R0.w, R0, R0;
MUL.F R4.xyz, vertex.attrib[0].y, c[1];
MAD.F R4.xyz, vertex.attrib[0].x, c[0], R4;
MAD.F R4.xyz, vertex.attrib[0].z, c[2], R4;
MUL.F R2.xyz, R1.w, R1;
RSQ.F R0.w, R0.w;
MUL.F R1.xyz, R0.w, R0;
MUL.F R0.xyz, R1.zxyw, R2.yzxw;
MAD.F R3.xyz, R1.yzxw, R2.zxyw, -R0;
DP3.F R0.z, R1, {-10, 25, 15, 0};
DP3.F R0.y, R3, {-10, 25, 15, 0};
DP3.F R0.x, R2, {-10, 25, 15, 0};
DP3.F R0.w, R0, R0;
RSQ.F R0.w, R0.w;
MUL.F result.attrib[0].xyz, R0.w, R0;
MAD.F R4.xyz, vertex.attrib[0].w, c[3], R4;
DP3.F R0.z, R1, R4;
MUL.F R1, vertex.attrib[0].y, c[5];
MAD.F R1, vertex.attrib[0].x, c[4], R1;
DP3.F R0.y, R3, R4;
DP3.F R0.x, R2, R4;
DP3.F R0.w, R0, R0;
RSQ.F R0.w, R0.w;
MAD.F R1, vertex.attrib[0].z, c[6], R1;
MUL.F result.attrib[1].xyz, R0.w, R0;
MAD.F result.position, vertex.attrib[0].w, c[7], R1;
MOV.F result.texcoord[0], vertex.attrib[8];
END
# 35 instructions, 5 R-regs
