//water surface auenwald
// Generated by Microsoft (R) HLSL Shader Compiler 9.26.952.2844
//
// Parameters:
//
//   float4 ModelBBoxOffSet;
//   float4 ModelBBoxScale;
//   float3 fogParam;
//   bool isLinearDepth;
//   bool isSkining;
//   bool isUseInstancing;
//   bool isVertexLightingEnabled;
//   float4 jointMatrices[144];
//   bool light0bit0;
//   bool light0bit1;
//   bool light1bit0;
//   bool light1bit1;
//   bool light2bit0;
//   bool light2bit1;
//   bool light3bit0;
//   bool light3bit1;
//   float4 lightColors[4];
//   float4 lightDirections[4];
//   float4 lightParams[4];
//   float4 lightPositions[4];
//   float shininess;
//   float3 specularColor;
//   float2 uvofs0;
//   float2 uvofs1;
//   float2 uvofs2;
//   float2 uvofs3;
//   float4x4 viewITMatrix;
//   float4x4 worldITMatrix;
//   float4x4 worldMatrix;
//   float4x4 worldViewMatrix;
//   float4x4 worldViewProjMatrix;
//
//
// Registers:
//
//   Name                    Reg   Size
//   ----------------------- ----- ----
//   isSkining               b0       1
//   isUseInstancing         b1       1
//   isLinearDepth           b2       1
//   isVertexLightingEnabled b6       1
//   light0bit0              b8       1
//   light0bit1              b9       1
//   light1bit0              b10      1
//   light1bit1              b11      1
//   light2bit0              b12      1
//   light2bit1              b13      1
//   light3bit0              b14      1
//   light3bit1              b15      1
//   worldMatrix             c0       4
//   worldITMatrix           c4       3
//   worldViewProjMatrix     c8       4
//   worldViewMatrix         c12      4
//   viewITMatrix            c16      4
//   jointMatrices           c21    144
//   ModelBBoxScale          c169     1
//   ModelBBoxOffSet         c170     1
//   lightDirections         c171     4
//   lightPositions          c175     4
//   lightColors             c179     4
//   lightParams             c183     4
//   uvofs0                  c187     1
//   uvofs1                  c188     1
//   uvofs2                  c189     1
//   uvofs3                  c190     1
//   specularColor           c191     1
//   shininess               c192     1
//   fogParam                c193     1
//
//
// Default values:
//
//   uvofs0
//     c187 = { 0, 0, 0, 0 };
//
//   uvofs1
//     c188 = { 0, 0, 0, 0 };
//
//   uvofs2
//     c189 = { 0, 0, 0, 0 };
//
//   uvofs3
//     c190 = { 0, 0, 0, 0 };
//
//   specularColor
//     c191 = { 1, 1, 1, 0 };
//
//   shininess
//     c192 = { 12, 0, 0, 0 };
//
//   fogParam
//     c193 = { 0, 100, 1, 0 };
//

    vs_3_0
	def c200, 0, 1, 0.0625, 0	//	0.0625 prime directive reference value		
    def c7, 2, -1, 3, -0
    def c20, 0.5, 0.00100000005, 0, 0
    def c165, 1, -1, 0, 0
	dcl_2d s0							// Sampler used to fetch stereo params	
    dcl_position v0
    dcl_color v1
    dcl_normal v2
    dcl_texcoord5 v3
    dcl_blendindices v4
    dcl_texcoord6 v5
    dcl_texcoord7 v6
    dcl_texcoord v7
    dcl_texcoord1 v8
    dcl_texcoord2 v9
    dcl_texcoord3 v10
    dcl_position o0
    dcl_texcoord o1
    dcl_texcoord1 o2
    dcl_texcoord2 o3
    dcl_texcoord3 o4.xyz
    dcl_color o5
    dcl_texcoord4 o6
    dcl_texcoord5 o7
    dcl_texcoord6 o8
    mad r0.xyz, v2, c7.x, c7.y
    mad r1.xyz, v3, c7.x, c7.y
    mov r2.xyz, c169
    mad r2.xyz, v0, r2, c170
    if b1
      mov r2.w, v0.w
      dp4 r0.w, v4, r2
      dp4 r1.w, v5, r2
      dp4 r2.z, v6, r2
      dp3 r2.w, v4, r0
      dp3 r3.x, v5, r0
      dp3 r0.z, v6, r0
      dp3 r3.y, v4, r1
      dp3 r3.z, v5, r1
      dp3 r1.z, v6, r1
      mov r2.x, r0.w
      mov r2.y, r1.w
      mov r0.x, r2.w
      mov r0.y, r3.x
      mov r1.xy, r3.yzzw
    else
      if b0
        mul r3, c7.z, v6
        frc r4, r3
        add r5, r3, -r4
        slt r3, r3, -r3
        slt r4, -r4, r4
        mad r3, r3, r4, r5
        mova a0, r3
        mul r3, v5.y, c21[a0.y]
        mul r4, v5.y, c22[a0.y]
        mul r5, v5.y, c23[a0.y]
        mad r3, c21[a0.x], v5.x, r3
        mad r4, c22[a0.x], v5.x, r4
        mad r5, c23[a0.x], v5.x, r5
        mad r3, c21[a0.z], v5.z, r3
        mad r4, c22[a0.z], v5.z, r4
        mad r5, c23[a0.z], v5.z, r5
        mad r3, c21[a0.w], v5.w, r3
        mad r4, c22[a0.w], v5.w, r4
        mad r5, c23[a0.w], v5.w, r5
        mov r6.xyz, r2
        mov r6.w, v0.w
        dp4 r2.x, r3, r6
        dp4 r2.y, r4, r6
        dp4 r2.z, r5, r6
        dp3 r0.w, r3, r0
        dp3 r1.w, r4, r0
        dp3 r0.z, r5, r0
        dp3 r2.w, r3, r1
        dp3 r3.x, r4, r1
        dp3 r1.z, r5, r1
        mov r0.x, r0.w
        mov r0.y, r1.w
        mov r1.x, r2.w
        mov r1.y, r3.x
      endif
    endif
    mul r3, r2.y, c1
    mad r3, c0, r2.x, r3
    mad r3, c2, r2.z, r3
    mad r3, c3, v0.w, r3
    mul r0.w, r2.y, c13.z
    mad r0.w, c12.z, r2.x, r0.w
    mad r0.w, c14.z, r2.z, r0.w
    mad r0.w, c15.z, v0.w, r0.w
    mul r4, r2.y, c9
    mad r4, c8, r2.x, r4
    mad r2, c10, r2.z, r4
    mad r2, c11, v0.w, r2
    mul r4.xyz, r0.y, c5
    mad r4.xyz, c4, r0.x, r4
    mad r0.xyz, c6, r0.z, r4
    mul r4.xyz, r1.y, c5
    mad r1.xyw, c4.xyzz, r1.x, r4.xyzz
    mad r1.xyz, c6, r1.z, r1.xyww
    mul r1.w, c7.x, v3.w
    add r1, r1, -c7.yyyw
    mul o5, r1, c20.x
    add r1.xy, c187, v7
    add r1.zw, c188.xyxy, v8.xyxy
    add r4.xy, c189, v9
    add r4.zw, c190.xyxy, v10.xyxy
    mov r5.x, -c16.w
    mov r5.y, -c17.w
    mov r5.z, -c18.w
    mov r5.w, -c19.w
    add r5, r3, r5
    if b6
      dp4 r5.w, r5, r5
      rsq r5.w, r5.w
      mul r6.xyz, r5, r5.w
      nrm r7.xyz, r0
      dp3 r5.w, r6, r7
      add r5.w, r5.w, r5.w
      mad r6.xyz, r7, -r5.w, r6
      if b8
        if b9
          add r8.xyz, r3, -c175
          dp3 r5.w, r8, r8
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c183.z
          add r6.w, -r6.w, c183.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c183.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r8.xyz, r8, r5.w
          dp3 r5.w, -c171, -r8
          add r5.w, r5.w, -c183.x
          add r7.w, -c183.x, c183.y
          rcp r7.w, r7.w
          mul_sat r5.w, r5.w, r7.w
          mul r5.w, r6.w, r5.w
          dp3_sat r6.w, r7, -r8
          dp3_sat r7.w, r6, -r8
          pow r8.x, r7.w, c192.x
          mul r8.yzw, r5.w, c179.xxyz
          mul r9.xyz, r6.w, r8.yzww
          mul r8.xyz, r8.x, r8.yzww
        else
          dp3_sat r5.w, r7, -c171
          dp3_sat r6.w, r6, -c171
          pow r7.w, r6.w, c192.x
          mul r9.xyz, r5.w, c179
          mul r8.xyz, r7.w, c179
        endif
      else
        if b9
          add r10.xyz, r3, -c175
          dp3 r5.w, r10, r10
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c183.z
          add r6.w, -r6.w, c183.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c183.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r10.xyz, r10, r5.w
          dp3_sat r5.w, r7, -r10
          dp3_sat r7.w, r6, -r10
          pow r8.w, r7.w, c192.x
          mul r10.xyz, r6.w, c179
          mul r9.xyz, r5.w, r10
          mul r8.xyz, r8.w, r10
        else
          mov r9.xyz, -c7.w
          mov r8.xyz, -c7.w
        endif
      endif
      if b10
        if b11
          add r10.xyz, r3, -c176
          dp3 r5.w, r10, r10
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c184.z
          add r6.w, -r6.w, c184.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c184.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r10.xyz, r10, r5.w
          dp3 r5.w, -c172, -r10
          add r5.w, r5.w, -c184.x
          add r7.w, -c184.x, c184.y
          rcp r7.w, r7.w
          mul_sat r5.w, r5.w, r7.w
          mul r5.w, r6.w, r5.w
          dp3_sat r6.w, r7, -r10
          dp3_sat r7.w, r6, -r10
          pow r8.w, r7.w, c192.x
          mul r10.xyz, r5.w, c180
          mad r9.xyz, r10, r6.w, r9
          mad r8.xyz, r10, r8.w, r8
        else
          dp3_sat r5.w, r7, -c172
          dp3_sat r6.w, r6, -c172
          pow r7.w, r6.w, c192.x
          mad r9.xyz, c180, r5.w, r9
          mad r8.xyz, c180, r7.w, r8
        endif
      else
        if b11
          add r10.xyz, r3, -c176
          dp3 r5.w, r10, r10
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c184.z
          add r6.w, -r6.w, c184.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c184.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r10.xyz, r10, r5.w
          dp3_sat r5.w, r7, -r10
          dp3_sat r7.w, r6, -r10
          pow r8.w, r7.w, c192.x
          mul r10.xyz, r6.w, c180
          mad r9.xyz, r10, r5.w, r9
          mad r8.xyz, r10, r8.w, r8
        endif
      endif
      if b12
        if b13
          add r10.xyz, r3, -c177
          dp3 r5.w, r10, r10
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c185.z
          add r6.w, -r6.w, c185.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c185.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r10.xyz, r10, r5.w
          dp3 r5.w, -c173, -r10
          add r5.w, r5.w, -c185.x
          add r7.w, -c185.x, c185.y
          rcp r7.w, r7.w
          mul_sat r5.w, r5.w, r7.w
          mul r5.w, r6.w, r5.w
          dp3_sat r6.w, r7, -r10
          dp3_sat r7.w, r6, -r10
          pow r8.w, r7.w, c192.x
          mul r10.xyz, r5.w, c181
          mad r9.xyz, r10, r6.w, r9
          mad r8.xyz, r10, r8.w, r8
        else
          dp3_sat r5.w, r7, -c173
          dp3_sat r6.w, r6, -c173
          pow r7.w, r6.w, c192.x
          mad r9.xyz, c181, r5.w, r9
          mad r8.xyz, c181, r7.w, r8
        endif
      else
        if b13
          add r10.xyz, r3, -c177
          dp3 r5.w, r10, r10
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c185.z
          add r6.w, -r6.w, c185.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c185.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r10.xyz, r10, r5.w
          dp3_sat r5.w, r7, -r10
          dp3_sat r7.w, r6, -r10
          pow r8.w, r7.w, c192.x
          mul r10.xyz, r6.w, c181
          mad r9.xyz, r10, r5.w, r9
          mad r8.xyz, r10, r8.w, r8
        endif
      endif
      if b14
        if b15
          add r10.xyz, r3, -c178
          dp3 r5.w, r10, r10
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c186.z
          add r6.w, -r6.w, c186.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c186.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r10.xyz, r10, r5.w
          dp3 r5.w, -c174, -r10
          add r5.w, r5.w, -c186.x
          add r7.w, -c186.x, c186.y
          rcp r7.w, r7.w
          mul_sat r5.w, r5.w, r7.w
          mul r5.w, r6.w, r5.w
          dp3_sat r6.w, r7, -r10
          dp3_sat r7.w, r6, -r10
          pow r8.w, r7.w, c192.x
          mul r10.xyz, r5.w, c182
          mad r9.xyz, r10, r6.w, r9
          mad r8.xyz, r10, r8.w, r8
        else
          dp3_sat r5.w, r7, -c174
          dp3_sat r6.w, r6, -c174
          pow r7.w, r6.w, c192.x
          mad r9.xyz, c182, r5.w, r9
          mad r8.xyz, c182, r7.w, r8
        endif
      else
        if b15
          add r10.xyz, r3, -c178
          dp3 r5.w, r10, r10
          rsq r5.w, r5.w
          rcp r6.w, r5.w
          pow r7.w, r6.w, c186.z
          add r6.w, -r6.w, c186.w
          max r6.w, r6.w, c20.y
          mul r7.w, r7.w, c186.w
          rcp r7.w, r7.w
          mul r6.w, r6.w, r7.w
          mul r10.xyz, r10, r5.w
          dp3_sat r5.w, r7, -r10
          dp3_sat r6.x, r6, -r10
          pow r7.x, r6.x, c192.x
          mul r6.xyz, r6.w, c182
          mad r9.xyz, r6, r5.w, r9
          mad r8.xyz, r6, r7.x, r8
        endif
      endif
      mad r6.xyz, r8, c191, r9
      add r6.xyz, r6, -c7.y
    else
      mov r6.xyz, -c7.y
    endif
    mov r6.w, -c7.y
    mul o1, r6, v1
    add r0.w, -r0.w, -c193.x
    add r5.w, -c193.x, c193.y
    rcp r5.w, r5.w
    mul_sat r0.w, r0.w, r5.w
    pow r5.w, r0.w, c193.z
    min o8.w, r5.w, -c7.y
    if b2
      mul r6.x, r2.w, r2.z
    else
      mov r6.x, r2.z
    endif
    mov r6.yzw, r2.xxyw
    mov o0, r6.yzxw
    mov o2, r3
 //   mov o3, r2
    mov o4.xyz, r0
    mad o6.xy, r1, c165, c165.zxzw
    mad o6.zw, r1, c165.xyxy, c165.xyzx
    mad o7.xy, r4, c165, c165.zxzw
    mad o7.zw, r4, c165.xyxy, c165.xyzx
    mov o8.xyz, r5

mov r0, r2				// move r2 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 o3, r0				// move fixed r2 (r0) into o3	
// approximately 415 instruction slots used