//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4 LghtAttn0;
//   float4 LghtColor0;
//   float4 LghtDir0;
//   float4 LghtPos0;
//   sampler2D PSSGShadowPSSMapDepthMap0;
//   float4x4 PSSGShadowPSSMapLightTextureMatrix0;
//   float ShadowOpacity;
//   float cameraFar;
//   float cameraFarMinusNear;
//   float cameraNearFar;
//   float3 eyePositionWS;
//   sampler2D g_GBufferDepth;
//   sampler2D g_GBufferDiffuse;
//   sampler2D g_GBufferNormal;
//   sampler2D g_GBufferSpecular;
//   float4 g_PixelPerfectScreenOffset;
//   float g_RenderRatio;
//   float4 g_ShadowMapSizeAndDuDv;
//
//
// Registers:
//
//   Name                                Reg   Size
//   ----------------------------------- ----- ----
//   PSSGShadowPSSMapLightTextureMatrix0 c0       4
//   eyePositionWS                       c4       1
//   cameraFar                           c5       1
//   cameraNearFar                       c6       1
//   cameraFarMinusNear                  c7       1
//   g_RenderRatio                       c8       1
//   LghtPos0                            c9       1
//   LghtColor0                          c10      1
//   LghtAttn0                           c11      1
//   LghtDir0                            c12      1
//   ShadowOpacity                       c13      1
//   g_ShadowMapSizeAndDuDv              c14      1
//   g_PixelPerfectScreenOffset          c15      1
//   g_GBufferDiffuse                    s0       1
//   g_GBufferNormal                     s1       1
//   g_GBufferSpecular                   s2       1
//   g_GBufferDepth                      s3       1
//   PSSGShadowPSSMapDepthMap0           s4       1
//

    ps_3_0
    def c16, 0.5, -0.5, 2, -1
    def c17, 2.20000005, 1024, 8, -80
    def c18, 0.001953125, -1, 80, 40
    def c19, 1.44269502, -115.415604, 3, 0.125
    def c20, -6, 6, 0.0397887453, 4
def c220, 1, 0.5, 0.0625, 0.83
dcl_2d s14
dcl vPos.xy
    dcl_texcoord v0.xyw  // IN<4,5,7>
    dcl_texcoord1 v1.xyz  // IN<8,9,10>
    dcl_2d s0
    dcl_2d s1
    dcl_2d s2
    dcl_2d s3
    dcl_2d s4

#line 1102 "s:\data\datasource\shaders\memory"
    rcp r0.x, v0.w  // ::oow<0>
    mul r0.yz, r0.x, v0.xxyw  // ::uvProj<0,1>
    mul_pp r1.xyz, r0.x, v1  // mainFPStencilLight::IN<8,9,10>

#line 1109
    mov r2.xyw, c16
    mad r0.xy, r0.yzzw, r2, c15
    add r0.xy, r0, c16.x  // ::uv<0,1>

#line 702
    mul r0.xy, r0, c8.x  // FetchGeom::uv<0,1>

    mov r11.xy, vPos.xy
    rcp r11.z, c210.x
    rcp r11.w, c210.y
    mul r11.xy, r11.xy, r11.zw
    mul r11.zw, r11.zw, c220.yy
    add r0.xy, r11.xy, r11.zw
	
#line 706
    texld r3, r0, s3  // getDepth::depthSample<0>

#line 231 "incCommon.cgfx"
    mov r4.x, c7.x  // ::cameraFarMinusNear<0>
    mad r0.z, r3.x, r4.x, -c5.x
    rcp r0.z, r0.z
    mul r0.z, r0.z, c6.x  // ::viewSpaceZ<0>

#line 710 "s:\data\datasource\shaders\memory"
    mad r3.xyz, r0.z, r1, c4  // ::geom<0,1,2>
	
//Mike_ar69: Stereo Correct
mov r21.xyz, r3.xyz
mov r21.w, c220.x

mul r22, r21.y, c205
mad r22, c204, r21.x, r22
mad r22, c206, r21.z, r22
add r22, c207, r22
	
texldl r24, c220.z, s14
add r24.y, -r22.z, -r24.y
mul r24.x, r24.x, r24.y
rcp r25.x, c100.x
mul r24.x, r24.x, r25.x //c100.x //c220.w
add r22.x, r22.x, -r24.x

rcp r25.w, r22.w
mul r22, r22, r25.w

mul r21, r22.y, c201
mad r21, c200, r22.x, r21
mad r21, c202, r22.z, r21
add r21, c203, r21

rcp r25.w, r21.w
mul r21.xyz, r21.xyz, r25.w

mov r3.xyz, r21.xyz

    mul r1.xyz, r1, r0.z  // ::eyeToPos<0,1,2>

#line 642
    mul r4, r3.y, c1
    mad r4, c0, r3.x, r4
    mad r4, c2, r3.z, r4

#line 608
    add r3.xyz, -r3, c9  // ::lightVec<0,1,2>

#line 642
    add r4, r4, c3  // ::uv0<0,1,2,3>

#line 403
    rcp r0.z, r4.w

#line 454
    mad r0.w, r4.z, -r0.z, -c16.w
    rcp r0.w, r0.w

#line 404
    mul r2.yz, r0.z, r4.xxyw  // ::uv<0,1>

#line 453
    mov r4.xy, c14  // ::g_ShadowMapSizeAndDuDv<0,1>
    mul r4.yw, r4.xxzy, c17.z
    rcp r5.y, r4.y
    rcp r5.w, r4.w
    mad_sat r4.yw, r5, c16.z, r2.xyzz  // getDepthAndWeightFilterBilinear::uv<0,1>

#line 199
    mul r5.xz, r4.yyww, c14.xyyw
    frc r6.xy, r5.xzzw
    add r5.xz, r5, -r6.xyyw

#line 206
    mul r6.xy, r2.x, c14.zwzw  // ::halfOff<0,1>

#line 199
    rcp r7.y, c14.x

#line 208
    mad r8.z, r5.x, r7.y, r6.x  // ::uvY<0>

#line 199
    rcp r7.w, c14.y

#line 208
    mad r8.xyw, r5.xzzz, r7.ywzw, -r6.xyzy  // ::uvX<0,1>, ::uvY<1>

#line 220
    texld r9, r8.zwzw, s4  // getDepth::depthSample<0>
    texld r8, r8, s4  // getDepth::depthSample<0>

#line 454
    mov r8.y, r9.x

#line 210
    mad r9.z, r5.x, r7.y, -r6.x  // ::uvW<0>
    mad r9.xyw, r5.xzzz, r7.ywzw, r6.xyzy  // ::uvZ<0,1>, ::uvW<1>
    mad r4.yw, r5.xxzz, -r7, r4

#line 222
    texld r10, r9.zwzw, s4  // getDepth::depthSample<0>
    texld r9, r9, s4  // getDepth::depthSample<0>

#line 454
    mov r8.z, r9.x
    mov r8.w, r10.x
    mad r8, r4.z, -r0.z, r8
    mul r8, r0.w, r8

#line 411
    mad_sat r1.w, r4.x, c18.x, c18.y  // ::factor<0>
    mad r1.w, r1.w, c18.z, c18.w  // ::esmK<0>

#line 454
    mul r9, r8, r1.w
    mad r8, r1.w, -r8, c17.w
    mul r9, r9, c19.x
    cmp r8, r8, c19.y, r9
    exp_sat r9.x, r8.x  // ::shadowExp<0>
    exp_sat r9.y, r8.y  // ::shadowExp<1>
    exp_sat r9.z, r8.z  // ::shadowExp<2>
    exp_sat r9.w, r8.w  // ::shadowExp<3>

#line 212
    mul r5.xz, r4.yyww, c14.xyyw  // ::fracUV<0,1>
    mad r4.xy, r4.wyzw, -c14.yxzw, -r2.w

#line 216
    mul r8.yw, r4.xxzy, r5.xxzz  // getDepthAndWeightFilterBilinear::weights<1,3>
    mul r8.z, r5.z, r5.x  // getDepthAndWeightFilterBilinear::weights<2>
    mul r8.x, r4.x, r4.y  // getDepthAndWeightFilterBilinear::weights<0>

#line 456
    dp4 r2.x, r8, r9  // ::shadow<0>
    mul r2.x, r2.x, c19.z

#line 453
    mad_sat r4.xy, r5.ywzw, -c16.z, r2.yzzw  // getDepthAndWeightFilterBilinear::uv<0,1>

#line 199
    mul r5.xz, r4.xyyw, c14.xyyw
    frc r6.zw, r5.xyxz
    add r5.xz, r5, -r6.zyww

#line 208
    mad r8.z, r5.x, r7.y, r6.x  // ::uvY<0>
    mad r8.xyw, r5.xzzz, r7.ywzw, -r6.xyzy  // ::uvX<0,1>, ::uvY<1>

#line 220
    texld r9, r8.zwzw, s4  // getDepth::depthSample<0>
    texld r8, r8, s4  // getDepth::depthSample<0>

#line 454
    mov r8.y, r9.x

#line 210
    mad r9.z, r5.x, r7.y, -r6.x  // ::uvW<0>
    mad r9.xyw, r5.xzzz, r7.ywzw, r6.xyzy  // ::uvZ<0,1>, ::uvW<1>
    mad r4.xy, r5.xzzw, -r7.ywzw, r4

#line 222
    texld r10, r9.zwzw, s4  // getDepth::depthSample<0>
    texld r9, r9, s4  // getDepth::depthSample<0>

#line 454
    mov r8.z, r9.x
    mov r8.w, r10.x
    mad r8, r4.z, -r0.z, r8
    mul r8, r0.w, r8
    mul r9, r1.w, r8
    mad r8, r1.w, -r8, c17.w
    mul r9, r9, c19.x
    cmp r8, r8, c19.y, r9
    exp_sat r9.x, r8.x  // ::shadowExp<0>
    exp_sat r9.y, r8.y  // ::shadowExp<1>
    exp_sat r9.z, r8.z  // ::shadowExp<2>
    exp_sat r9.w, r8.w  // ::shadowExp<3>

#line 212
    mul r5.xz, r4.xyyw, c14.xyyw  // ::fracUV<0,1>
    mad r4.xy, r4.yxzw, -c14.yxzw, -r2.w

#line 216
    mul r8.yw, r4.xxzy, r5.xxzz  // getDepthAndWeightFilterBilinear::weights<1,3>
    mul r8.z, r5.z, r5.x  // getDepthAndWeightFilterBilinear::weights<2>
    mul r8.x, r4.x, r4.y  // getDepthAndWeightFilterBilinear::weights<0>

#line 456
    dp4 r3.w, r8, r9  // ::shadow<0>
    mad r2.x, r3.w, c19.z, r2.x  // ::sum<0>

#line 453
    mad_sat r4.xy, r5.ywzw, c20, r2.yzzw  // getDepthAndWeightFilterBilinear::uv<0,1>
    mad_sat r2.yz, r5.xyww, c20.xyxw, r2  // getDepthAndWeightFilterBilinear::uv<0,1>

#line 199
    mul r5.xy, r4, c14
    frc r5.zw, r5.xyxy
    add r5.xy, -r5.zwzw, r5

#line 208
    mad r8.z, r5.x, r7.y, r6.x  // ::uvY<0>
    mad r8.xyw, r5.xyzy, r7.ywzw, -r6.xyzy  // ::uvX<0,1>, ::uvY<1>

#line 220
    texld r9, r8.zwzw, s4  // getDepth::depthSample<0>
    texld r8, r8, s4  // getDepth::depthSample<0>

#line 454
    mov r8.y, r9.x

#line 210
    mad r9.z, r5.x, r7.y, -r6.x  // ::uvW<0>
    mad r9.xyw, r5.xyzy, r7.ywzw, r6.xyzy  // ::uvZ<0,1>, ::uvW<1>
    mad r4.xy, r5, -r7.ywzw, r4

#line 222
    texld r5, r9.zwzw, s4  // getDepth::depthSample<0>
    texld r9, r9, s4  // getDepth::depthSample<0>

#line 454
    mov r8.z, r9.x
    mov r8.w, r5.x
    mad r5, r4.z, -r0.z, r8
    mul r5, r0.w, r5
    mul r8, r1.w, r5
    mad r5, r1.w, -r5, c17.w
    mul r8, r8, c19.x
    cmp r5, r5, c19.y, r8
    exp_sat r8.x, r5.x  // ::shadowExp<0>
    exp_sat r8.y, r5.y  // ::shadowExp<1>
    exp_sat r8.z, r5.z  // ::shadowExp<2>
    exp_sat r8.w, r5.w  // ::shadowExp<3>

#line 212
    mul r5.xy, r4, c14  // ::fracUV<0,1>
    mad r4.xy, r4.yxzw, -c14.yxzw, -r2.w

#line 216
    mul r9.yw, r4.xxzy, r5.xxzy  // getDepthAndWeightFilterBilinear::weights<1,3>
    mul r9.z, r5.y, r5.x  // getDepthAndWeightFilterBilinear::weights<2>
    mul r9.x, r4.x, r4.y  // getDepthAndWeightFilterBilinear::weights<0>

#line 456
    dp4 r3.w, r9, r8  // ::shadow<0>
    add r2.x, r2.x, r3.w  // ::sum<0>

#line 199
    mul r4.xy, r2.yzzw, c14
    frc r5.xy, r4
    add r4.xy, r4, -r5

#line 208
    mad r5.z, r4.x, r7.y, r6.x  // ::uvY<0>
    mad r5.xyw, r4.xyzy, r7.ywzw, -r6.xyzy  // ::uvX<0,1>, ::uvY<1>

#line 220
    texld r8, r5.zwzw, s4  // getDepth::depthSample<0>
    texld r5, r5, s4  // getDepth::depthSample<0>

#line 454
    mov r5.y, r8.x

#line 210
    mad r8.z, r4.x, r7.y, -r6.x  // ::uvW<0>
    mad r8.xyw, r4.xyzy, r7.ywzw, r6.xyzy  // ::uvZ<0,1>, ::uvW<1>
    mad r2.yz, r4.xxyw, -r7.xyww, r2

#line 222
    texld r6, r8.zwzw, s4  // getDepth::depthSample<0>
    texld r7, r8, s4  // getDepth::depthSample<0>

#line 454
    mov r5.z, r7.x
    mov r5.w, r6.x
    mad r4, r4.z, -r0.z, r5
    mul r4, r0.w, r4
    mad r5, r1.w, -r4, c17.w
    mul r4, r1.w, r4
    mul r4, r4, c19.x
    cmp r4, r5, c19.y, r4
    exp_sat r5.x, r4.x  // ::shadowExp<0>
    exp_sat r5.y, r4.y  // ::shadowExp<1>
    exp_sat r5.z, r4.z  // ::shadowExp<2>
    exp_sat r5.w, r4.w  // ::shadowExp<3>

#line 212
    mul r0.zw, r2.xyyz, c14.xyxy  // ::fracUV<0,1>
    mad r2.yz, r2.xzyw, -c14.xyxw, -r2.w

#line 216
    mul r4.yw, r0.xzzw, r2.xyzz  // getDepthAndWeightFilterBilinear::weights<1,3>
    mul r4.z, r0.w, r0.z  // getDepthAndWeightFilterBilinear::weights<2>
    mul r4.x, r2.y, r2.z  // getDepthAndWeightFilterBilinear::weights<0>

#line 456
    dp4 r0.z, r4, r5  // ::shadow<0>
    add r0.z, r0.z, r2.x  // ::sum<0>

#line 460
    mul_sat_pp r0.z, r0.z, c19.w  // ::sampleDepth<0>

#line 589
    add r0.z, r0.z, c16.w
    mad_pp r0.z, c13.x, r0.z, -r2.w  // ::shadow<0>

#line 611
    dp3 r0.w, r3, r3
    rsq r0.w, r0.w
    mul r2.xyz, r0.w, r3  // ::lightVec<0,1,2>
    rcp r0.w, r0.w  // ::lightDist<0>

#line 621
    add r0.w, r0.w, -c11.x
    mul_sat_pp r0.w, r0.w, c11.y  // ::attn<0>

#line 616
    dp3 r1.w, -c12, r2  // ::dirContribution<0>
    add r1.w, r1.w, -c11.z
    mul_sat r1.w, r1.w, c11.w  // ::coneAttn<0>

#line 626
    mul_pp r0.w, r0.w, r1.w  // ::attn<0>

#line 629
    mul_pp r0.w, r0.w, r0.w  // ::attn<0>

#line 694
    mul r3.xyz, r0.w, c10
    mul r3.xyz, r0.z, r3

#line 711
    dp3 r0.z, -r1, -r1
    rsq r0.z, r0.z

#line 676
    mad r1.xyz, -r1, r0.z, r2
    nrm_pp r4.xyz, r1  // ::halfVec<0,1,2>

#line 713
    texld_pp r1, r0, s1  // ::n<0,1,2>

#line 717
    mad r1.xyz, r1, c16.z, c16.w
    nrm_pp r5.xyz, r1  // ::geom<9,10,11>

#line 681
    dp3_sat_pp r0.z, r5, r4  // ::ndh<0>

#line 678
    dp3_sat r0.w, r5, r2  // ::ndl<0>

#line 740
    texld_pp r1, r0, s2  // ::s<0,1,2,3>
    texld_pp r2, r0, s0  // ::d<0,1,2>

#line 747
    mul_pp r0.x, r1.w, c17.y
    max_pp r1.w, r0.x, -c16.w  // ::material<7>

#line 682
    pow_pp r2.w, r0.z, r1.w  // ::specPower<0>
    add r0.x, r1.w, c17.z
    mul r0.x, r0.x, r2.w
    mul_pp r0.x, r0.x, c20.z  // ::specPower<0>

#line 692
    mul_pp r0.xyz, r0.x, r1
    mul_sat r1.x, r0.w, c20.w
    mul r0.xyz, r0, r1.x

#line 730
    log_pp r1.x, r2.x
    log_pp r1.y, r2.y
    log_pp r1.z, r2.z
    mul_pp r1.xyz, r1, c17.x
    exp_pp r2.x, r1.x  // ::gammaToLinear<0>
    exp_pp r2.y, r1.y  // ::gammaToLinear<1>
    exp_pp r2.z, r1.z  // ::gammaToLinear<2>

#line 692
    mad_pp r0.xyz, r2, r0.w, r0  // ::result<0,1,2>
    mul_pp oC0.xyz, r3, r0  // ::mainFPStencilSpotShadowPers<0,1,2>
    mov_pp oC0.w, -c16.w  // ::mainFPStencilSpotShadowPers<3>

// approximately 216 instruction slots used (20 texture, 196 arithmetic)
 