// magic view
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x3 BoneMatrices[75];
//   float4 CameraPositionVS;
//   float4 FogInScattering[4];
//   float4 FogMaxHeight;
//   float4 LightPositionAndInvRadius;
//   float4x4 LocalToWorld;
//   float3 MeshExtension;
//   float3 MeshOrigin;
//   float4 SharedFogParameter0;
//   float4 SharedFogParameter1;
//   float4 SharedFogParameter2;
//   float4 SharedFogParameter3;
//   float3 TemporalAAParameters;
//   float4x4 ViewProjectionMatrix;
//   float4x3 WorldToLocal;
//   float bUseExponentialHeightFog;
//
//
// Registers:
//
//   Name                      Reg   Size
//   ------------------------- ----- ----
//   ViewProjectionMatrix      c0       4
//   CameraPositionVS          c4       1
//   BoneMatrices              c6     225
//   LocalToWorld              c231     4
//   FogInScattering           c235     4
//   WorldToLocal              c239     3
//   TemporalAAParameters      c242     1
//   MeshOrigin                c243     1
//   MeshExtension             c244     1
//   SharedFogParameter0       c245     1
//   SharedFogParameter1       c246     1
//   SharedFogParameter2       c247     1
//   SharedFogParameter3       c248     1
//   bUseExponentialHeightFog  c249     1
//   FogMaxHeight              c250     1
//   LightPositionAndInvRadius c251     1
//

    vs_3_0
	def c200, 0, 1, 0.0625, 0	//	0.0625 prime directive reference value	
    def c5, 3, 0.00784313772, -1, 1
    def c252, 0, 0.00999999978, -0.00999999978, 0.00100000005
    def c253, 0.499000013, 0.5, 0, 0
    dcl_position v0
    dcl_tangent v1
    dcl_normal v2
    dcl_blendindices v3
    dcl_blendweight v4
    dcl_color o0.xyz
    dcl_color1 o1
    dcl_texcoord3 o2
    dcl_texcoord4 o3
    dcl_texcoord6 o4
    dcl_texcoord7 o5.xyz
    dcl_texcoord5 o6
    dcl_position o7
	dcl_2d s0							// Sampler used to fetch stereo	
    mov r0.xyz, c244
    mad r0.xyz, v0, r0, c243
    mul r1, c5.x, v3
    mova a0.xy, r1
    mul r2, v4.y, c6[a0.y]
    mul r3, v4.y, c7[a0.y]
    mul r4, v4.y, c8[a0.y]
    mad r2, v4.x, c6[a0.x], r2
    mad r3, v4.x, c7[a0.x], r3
    mad r4, v4.x, c8[a0.x], r4
    mova a0.x, r1.z
    mad r2, v4.z, c6[a0.x], r2
    mad r3, v4.z, c7[a0.x], r3
    mad r4, v4.z, c8[a0.x], r4
    mova a0.x, r1.w
    mad r1, v4.w, c6[a0.x], r2
    mad r2, v4.w, c7[a0.x], r3
    mad r3, v4.w, c8[a0.x], r4
    mad r4, v2, c5.y, c5.z
    mad r5.xyz, v1, c5.y, c5.z
    dp3 r6.x, r5, r1
    dp3 r6.y, r5, r2
    dp3 r6.z, r5, r3
    dp3 r5.x, r4, r1
    dp3 r5.y, r4, r2
    dp3 r5.z, r4, r3
    mul r4.xyz, r6.yzxw, r5.zxyw
    mad r4.xyz, r5.yzxw, r6.zxyw, -r4
    mul r4.xyz, r4.w, r4
    mov r0.w, c5.w
    dp4 r1.x, r0, r1
    dp4 r1.y, r0, r2
    dp4 r0.x, r0, r3
    mul r2, r1.y, c232
    mad r1, c231, r1.x, r2
    mad r0, c233, r0.x, r1
    add r0, r0, c234
    mul r1, r0.y, c1
    mad r1, c0, r0.x, r1
    mad r1, c2, r0.z, r1
    mad r1, c3, r0.w, r1
    mul r0.w, r1.w, c242.z
    mad r1.xy, r0.w, c242, r1
    mul r2.xy, r6.y, c232.xzzw
    mad r2.xy, c231.xzzw, r6.x, r2
    mad r2.xy, c233.xzzw, r6.z, r2
    mul r3.xy, r4.y, c232.xzzw
    mad r3.xy, c231.xzzw, r4.x, r3
    mad r3.xy, c233.xzzw, r4.z, r3
    mul r3.zw, r5.y, c232.xyxz
    mad r3.zw, c231.xyxz, r5.x, r3
    mad r3.zw, c233.xyxz, r5.z, r3
    mul o1.w, r4.w, c239.w
    mad r7.xyz, r0, -c4.w, c4
    mul r8.xyz, r7.y, c240
    mad r7.xyw, c239.xyzz, r7.x, r8.xyzz
    mad r7.xyz, c241, r7.z, r7.xyww
    dp3 o4.x, r6, r7
    dp3 o4.y, r4, r7
    dp3 o4.z, r5, r7
    mov r7.xyz, c251
    mul r8.xyz, r7.y, c240
    mad r7.xyw, c239.xyzz, r7.x, r8.xyzz
    mad r7.xyz, c241, r7.z, r7.xyww
    dp3 o2.x, r6, r7
    dp3 o2.y, r4, r7
    dp3 o2.z, r5, r7
    dp3 o5.x, r6, c241
    dp3 o5.y, r4, c241
    dp3 o5.z, r5, c241
    abs r0.w, c249.x
    if_lt -r0.w, r0.w
      add r4.xyz, r0, -c4
      dp3 r0.w, r4, r4
      rsq r0.w, r0.w
      rcp r4.w, r0.w
      add r4.w, r4.w, -c245.w
      max r4.w, r4.w, c252.x
      mul r4.w, r4.w, c245.x
      slt r5.x, c252.y, r4_abs.z
      add r5.y, r4.z, c252.z
      mad r5.x, r5.x, r5.y, c252.y
      mul r5.y, r5.x, -c245.y
      exp r5.y, r5.y
      add r5.y, -r5.y, c5.w
      mul r5.x, r5.x, c245.y
      rcp r5.x, r5.x
      mul r5.x, r5.x, r5.y
      mul r4.w, r4.w, r5.x
      mul r4.xyz, r0.w, r4
      dp3 r0.w, c248, r4
      mad r0.w, r0.w, -c253.x, c253.y
      pow r4.x, r0.w, c245.z
      mov r5.xyz, c247
      add r5.xyz, -r5, c246
      mad r4.xyz, r4.x, r5, c247
      exp r0.w, -r4.w
      min r0.w, r0.w, c5.w
      max r0.w, r0.w, c246.w
      add r4.w, -r0.w, c5.w
      mul o3.xyz, r4.w, r4
      mov o3.w, r0.w
    else
      add r0.xyz, r0, -c4
      dp3 r0.x, r0, r0
      rsq r0.x, r0.x
      rcp r0.x, r0.x
      mov r4.z, c4.z
      add r5, -r4.z, c248
      sge r0.y, c252.w, r0_abs.z
      lrp r4.x, r0.y, c252.w, r0.z
      rcp r0.y, r4.x
      mul_sat r5, r0.y, r5
      add r4, -r4.z, c250
      mul_sat r4, r0.y, r4
      add r0, r0.x, -c247
      max r0, r0, c252.x
      add r4, -r5, r4
      mul r0, r0, r4_abs
      slt r4, r0, c246
      mul r0, r0, c245
      exp r5.x, r0.x
      exp r5.y, r0.y
      exp r5.z, r0.z
      exp r5.w, r0.w
      mul r0, r4, r5
      mad r4, r4, r5, c5.z
      mul r5.xyz, r4.x, c235
      mov r5.w, r0.x
      mul r5, r0.y, r5
      mad r5.xyz, r4.y, c236, r5
      mul r5, r0.z, r5
      mad r5.xyz, r4.z, c237, r5
      mul r0, r0.w, r5
      mad o3.xyz, r4.w, c238, r0
      mov o3.w, r0.w
    endif
    mov r2.zw, r3.xyxz
    mov o0.xyz, r2.xzww
    mov o1.x, r2.y
    mov o1.yz, r3.xyww
    mov o2.w, c252.x
    mov o4.w, c5.w
//    mov o6, r1
    mov o7, r1

mov r0, r1				// move r1 to r0
// At this point r0 is the output position, correctly
// placed, but without stereo.
 
// To create stereo effects, we need to calculate:
//  Xnew = Xold + Separation * (W - Convergence)
 
// Fetch the Separation (r30.x) and Convergence (r30.y)  
// using the Helix NVapi trick
texldl r30, c200.z, s0
 
// (W - Convergence)
add r30.w, r0.w, -r30.y
 
// multiply that times Separation for:
//   Separation * (W - Convergence)
mul r30.z, r30.x, r30.w
 
// Add that to Xold for the complete:
//  Xold + Separation * (W - Convergence)
add r0.x, r0.x, r30.z
		
mov o6, r0				// move fixed r1 (r0) into o6	
	
// approximately 149 instruction slots used
 