//water palumpolum
// 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;
//   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
//   specularColor           c190     1
//   shininess               c191     1
//   fogParam                c192     1
//
//
// Default values:
//
//   uvofs0
//     c187 = { 0, 0, 0, 0 };
//
//   uvofs1
//     c188 = { 0, 0, 0, 0 };
//
//   uvofs2
//     c189 = { 0, 0, 0, 0 };
//
//   specularColor
//     c190 = { 1, 1, 1, 0 };
//
//   shininess
//     c191 = { 12, 0, 0, 0 };
//
//   fogParam
//     c192 = { 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_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 o7.y, -r4.y, -c7.y
    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 r4.y, r5, r5
      rsq r4.y, r4.y
      mul r4.yzw, r5.xxyz, r4.y
      nrm r6.xyz, r0
      dp3 r5.w, r4.yzww, r6
      add r5.w, r5.w, r5.w
      mad r4.yzw, r6.xxyz, -r5.w, r4
      if b8
        if b9
          add r7.xyz, r3, -c175
          dp3 r5.w, r7, r7
          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 r7.xyz, r7, r5.w
          dp3 r5.w, -c171, -r7
          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, r6, -r7
          dp3_sat r7.x, r4.yzww, -r7
          pow r8.x, r7.x, c191.x
          mul r7.xyz, r5.w, c179
          mul r8.yzw, r6.w, r7.xxyz
          mul r7.xyz, r8.x, r7
        else
          dp3_sat r5.w, r6, -c171
          dp3_sat r6.w, r4.yzww, -c171
          pow r7.w, r6.w, c191.x
          mul r8.yzw, r5.w, c179.xxyz
          mul r7.xyz, r7.w, c179
        endif
      else
        if b9
          add r9.xyz, r3, -c175
          dp3 r5.w, r9, r9
          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 r9.xyz, r9, r5.w
          dp3_sat r5.w, r6, -r9
          dp3_sat r7.w, r4.yzww, -r9
          pow r8.x, r7.w, c191.x
          mul r9.xyz, r6.w, c179
          mul r8.yzw, r5.w, r9.xxyz
          mul r7.xyz, r8.x, r9
        else
          mov r8.yzw, -c7.w
          mov r7.xyz, -c7.w
        endif
      endif
      if b10
        if b11
          add r9.xyz, r3, -c176
          dp3 r5.w, r9, r9
          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 r9.xyz, r9, r5.w
          dp3 r5.w, -c172, -r9
          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, r6, -r9
          dp3_sat r7.w, r4.yzww, -r9
          pow r8.x, r7.w, c191.x
          mul r9.xyz, r5.w, c180
          mad r8.yzw, r9.xxyz, r6.w, r8
          mad r7.xyz, r9, r8.x, r7
        else
          dp3_sat r5.w, r6, -c172
          dp3_sat r6.w, r4.yzww, -c172
          pow r7.w, r6.w, c191.x
          mad r8.yzw, c180.xxyz, r5.w, r8
          mad r7.xyz, c180, r7.w, r7
        endif
      else
        if b11
          add r9.xyz, r3, -c176
          dp3 r5.w, r9, r9
          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 r9.xyz, r9, r5.w
          dp3_sat r5.w, r6, -r9
          dp3_sat r7.w, r4.yzww, -r9
          pow r8.x, r7.w, c191.x
          mul r9.xyz, r6.w, c180
          mad r8.yzw, r9.xxyz, r5.w, r8
          mad r7.xyz, r9, r8.x, r7
        endif
      endif
      if b12
        if b13
          add r9.xyz, r3, -c177
          dp3 r5.w, r9, r9
          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 r9.xyz, r9, r5.w
          dp3 r5.w, -c173, -r9
          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, r6, -r9
          dp3_sat r7.w, r4.yzww, -r9
          pow r8.x, r7.w, c191.x
          mul r9.xyz, r5.w, c181
          mad r8.yzw, r9.xxyz, r6.w, r8
          mad r7.xyz, r9, r8.x, r7
        else
          dp3_sat r5.w, r6, -c173
          dp3_sat r6.w, r4.yzww, -c173
          pow r7.w, r6.w, c191.x
          mad r8.yzw, c181.xxyz, r5.w, r8
          mad r7.xyz, c181, r7.w, r7
        endif
      else
        if b13
          add r9.xyz, r3, -c177
          dp3 r5.w, r9, r9
          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 r9.xyz, r9, r5.w
          dp3_sat r5.w, r6, -r9
          dp3_sat r7.w, r4.yzww, -r9
          pow r8.x, r7.w, c191.x
          mul r9.xyz, r6.w, c181
          mad r8.yzw, r9.xxyz, r5.w, r8
          mad r7.xyz, r9, r8.x, r7
        endif
      endif
      if b14
        if b15
          add r9.xyz, r3, -c178
          dp3 r5.w, r9, r9
          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 r9.xyz, r9, r5.w
          dp3 r5.w, -c174, -r9
          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, r6, -r9
          dp3_sat r7.w, r4.yzww, -r9
          pow r8.x, r7.w, c191.x
          mul r9.xyz, r5.w, c182
          mad r8.yzw, r9.xxyz, r6.w, r8
          mad r7.xyz, r9, r8.x, r7
        else
          dp3_sat r5.w, r6, -c174
          dp3_sat r6.w, r4.yzww, -c174
          pow r7.w, r6.w, c191.x
          mad r8.yzw, c182.xxyz, r5.w, r8
          mad r7.xyz, c182, r7.w, r7
        endif
      else
        if b15
          add r9.xyz, r3, -c178
          dp3 r5.w, r9, r9
          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 r9.xyz, r9, r5.w
          dp3_sat r5.w, r6, -r9
          dp3_sat r4.y, r4.yzww, -r9
          pow r6.x, r4.y, c191.x
          mul r4.yzw, r6.w, c182.xxyz
          mad r8.yzw, r4, r5.w, r8
          mad r7.xyz, r4.yzww, r6.x, r7
        endif
      endif
      mad r4.yzw, r7.xxyz, c190.xxyz, r8
      add r6.xyz, r4.yzww, -c7.y
    else
      mov r6.xyz, -c7.y
    endif
    mov r6.w, -c7.y
    mul o1, r6, v1
    add r0.w, -r0.w, -c192.x
    add r4.y, -c192.x, c192.y
    rcp r4.y, r4.y
    mul_sat r0.w, r0.w, r4.y
    pow r4.y, r0.w, c192.z
    min o8.w, r4.y, -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
    mov o7.x, r4.x
    mov o7.zw, -c7.w
    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