//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   sampler2D GBuffer1;
//   float4 LightProperties;
//   row_major float4x4 ProjectionMatrix[4];
//   sampler2D Shadow;
//   float4 ShadowProperties;
//   row_major float4x4 ViewMatrix[5];
//   float4 shadowFarPlanes;
//
//
// Registers:
//
//   Name             Reg   Size
//   ---------------- ----- ----
//   ViewMatrix       c0      19
//   ProjectionMatrix c19     16
//   ShadowProperties c35      1
//   LightProperties  c36      1
//   shadowFarPlanes  c37      1
//   GBuffer1         s0       1
//   Shadow           s1       1
//

    ps_3_0
    def c38, 0.5, 1, 0.224999994, -0.5
    def c39, 5, 0.000500000024, 0.0625, 2.22222233
    def c40, -0, -1, -2, -3
    def c41, -1, -2, -3, -4
    def c42, 2, 4, 3, 0
    def c43, -0.241888404, 0.997065067, -0.81409955, 0.914375901
    def c44, 0.443233252, -0.975115538, 0.53742981, -0.4737342
    def c45, -0.382775426, 0.276768446, 0.974843979, 0.756483793
    def c46, -0.915885806, 0.457714319, -0.815442324, -0.879124641
    def c47, -0.0941841006, -0.929388702, 0.344959378, 0.293877602
    def c48, -0.942016244, -0.399062157, 0.945586085, -0.768907249
    def c49, 0.199841261, 0.78641367, 0.143831611, -0.1410079
    def c50, -0.26496911, -0.418930233, 0.791975141, 0.190901875
    dcl_texcoord v0.xy  // In<4,5>
    dcl_texcoord2 v1.xyz  // In<6,7,8>
    dcl_texcoord3 v2.xyz  // In<9,10,11>
    dcl_2d s0
    dcl_2d s1

#line 83 "D:\Steam\steamapps\common\Divinity - Original Sin\Shipping\memory"
    texld r0, v0, s0  // ::depth<0>
    mov r1.xyz, v1  // In<6,7,8>
    mad r0.xyz, r0.x, r1, v2  // ::WorldPos<0,1,2>

#line 88
    rcp r1.x, c35.x
    rcp r1.z, c35.y
    mul r1.yw, r1.xxzz, c38.x  // ::xShift<0>, ::yShift<0>
    add r1.xz, r1, r1  // ::xScale<0>, ::yScale<0>

#line 41
    mov r0.w, c38.y
    dp4 r2.x, c19, r0  // ComputeShadowTexC::texCoord<0>
    dp4 r2.y, c20, r0  // ComputeShadowTexC::texCoord<1>
    dp4 r2.z, c22, r0  // ComputeShadowTexC::texCoord<3>
    rcp r2.z, r2.z
    mul r3.xy, r2.z, r2  // ComputeShadowTexC::texCoord<0,1>

#line 94
    mad r2.x, r2.x, r2.z, -r1.y
    rcp r1.x, r1.x
    mad r2.y, r2.y, r2.z, -r1.w
    rcp r1.z, r1.z
    mul r2.xy, r1.xzzw, r2_abs
    max r3.z, r2.x, r2.y
    if_ge r3.z, c38.z

#line 41
      dp4 r2.x, c23, r0  // ComputeShadowTexC::texCoord<0>
      dp4 r2.y, c24, r0  // ComputeShadowTexC::texCoord<1>
      dp4 r2.z, c26, r0  // ComputeShadowTexC::texCoord<3>
      rcp r2.z, r2.z
      mul r3.xy, r2.z, r2  // ComputeShadowTexC::texCoord<0,1>

#line 98
      mad r2.x, r2.x, r2.z, -r1.y
      mad r2.y, r2.y, r2.z, -r1.w
      add r2.y, r2.y, c38.w
      mul r2.xy, r1.xzzw, r2_abs
      max r3.z, r2.x, r2.y
      if_ge r3.z, c38.z

#line 101
        mul r2.x, c35.y, c35.x
        if_lt c42.x, r2.x

#line 41
          dp4 r2.x, c27, r0  // ComputeShadowTexC::texCoord<0>
          dp4 r2.y, c28, r0  // ComputeShadowTexC::texCoord<1>
          dp4 r2.z, c30, r0  // ComputeShadowTexC::texCoord<3>
          rcp r2.z, r2.z
          mul r3.xy, r2.z, r2  // ComputeShadowTexC::texCoord<0,1>

#line 104
          mad r2.x, r2.x, r2.z, -r1.y
          add r2.x, r2.x, c38.w
          mad r2.y, r2.y, r2.z, -r1.w
          mul r2.xy, r1.xzzw, r2_abs
          max r3.z, r2.x, r2.y
          if_ge r3.z, c38.z

#line 41
            dp4 r2.x, c31, r0  // ComputeShadowTexC::texCoord<0>
            dp4 r2.y, c32, r0  // ComputeShadowTexC::texCoord<1>
            dp4 r2.z, c34, r0  // ComputeShadowTexC::texCoord<3>
            rcp r2.z, r2.z
            mul r3.xy, r2.z, r2  // ComputeShadowTexC::texCoord<0,1>

#line 108
            mad r1.y, r2.x, r2.z, -r1.y
            add r1.y, r1.y, c38.w
            mul r1.x, r1.x, r1_abs.y
            mad r1.y, r2.y, r2.z, -r1.w
            add r1.y, r1.y, c38.w
            mul r1.y, r1.z, r1_abs.y
            max r2.x, r1.x, r1.y
            add r1.x, r2.x, -c38.z
            cmp r1.x, r1.x, c42.y, c42.z  // ::index<0>

#line 104
          else
            mov r1.x, c42.x  // ::index<0>
          endif

#line 101
        else
          mov r1.x, c42.x  // ::index<0>
        endif

#line 98
      else
        mov r1.x, c38.y  // ::index<0>
      endif

#line 94
    else
      mov r1.x, c42.w  // ::index<0>
    endif

#line 119
    mad r1.y, c35.x, -c35.y, r1.x
    add r2, r1.x, c41
    mov r1.w, c42.w
    cmp r4, -r1.x, c2, r1.w
    cmp r4, -r2_abs.x, c6, r4
    cmp r4, -r2_abs.y, c10, r4
    cmp r4, -r2_abs.z, c14, r4
    cmp r2, -r2_abs.w, c18, r4
    dp4 r0.x, r2, r0  // ::LightPos<2>
    add r2, r1.x, c40
    cmp r2, -r2_abs, -c40.y, -c40.x
    dp4 r0.y, c37, r2
    rcp r0.y, r0.y
    mul_sat r0.x, r0.y, r0.x  // ::sceneDepth<0>
    mul r0.y, r0.y, c36.w  // PCSS::params<3>

#line 52
    mov r2.xz, c36  // ::LightProperties<0,2>
    mad r4, r2.x, c48, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mul r0.y, r0.x, r0.y
    mad r0.z, r0.y, -c39.x, r5.x
    add r0.z, -r0.x, r0.z
    cmp r5.z, r0.z, c42.w, r5.x  // ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r0.w, r0.y, -c39.x, r4.x
    add r0.w, -r0.x, r0.w
    add r5.w, r4.x, r5.z  // ::blockerSum<0>
    cmp r5.xy, r0.z, -c40, -c40.yzzw  // FindBlocker::numBlockers<0,0>
    cmp r0.zw, r0.w, r5.xyxz, r5.xyyw  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    mad r4, r2.x, c47, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r5.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r5.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r4.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r4.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    mad r4, r2.x, c46, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r5.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r5.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r4.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r4.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    mad r4, r2.x, c45, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r5.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r5.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r4.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r4.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    mad r4, r2.x, c44, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r5.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r5.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r4.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r4.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    mad r4, r2.x, c50, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r5.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r5.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r4.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r4.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    mad r4, r2.x, c43, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r5.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r5.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r4.x
    add r1.z, -r0.x, r1.z
    add r4.y, r0.w, r4.x  // ::blockerSum<0>
    add r4.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r4.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    mad r4, r2.x, c49, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r5.x
    add r1.z, -r0.x, r1.z
    add r2.y, r0.w, r5.x  // ::blockerSum<0>
    add r2.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r2.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, -c39.x, r4.x
    add r1.z, -r0.x, r1.z
    add r2.y, r0.w, r4.x  // ::blockerSum<0>
    add r2.x, r0.z, c38.y  // FindBlocker::numBlockers<0>
    cmp r0.zw, r1.z, r0, r2.xyxy  // FindBlocker::numBlockers<0>, ::blockerSum<0>

#line 58
    rcp r1.z, r0.z
    mul r1.w, r0.w, r1.z  // FindBlocker::avgBlockerDepth<0>

#line 77
    add r0.z, r0.z, -c38.y

#line 46
    mad r0.w, r0.w, -r1.z, r0.x
    rcp r1.z, r1.w
    mul r0.w, r0.w, r1.z  // ::PenumbraSize<0>

#line 78
    mul r0.w, r0.w, c36.x
    mul r0.w, r0.w, c36.y
    max r1.z, c39.y, r0.w  // ::filterRadiusUV<0>

#line 64
    mad r4, r1.z, c48, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r0.w, r0.y, c39.x, r5.x
    add r0.w, -r0.w, r0.x
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r4.x
    add r1.w, r0.x, -r1.w
    cmp r2.xy, r0.w, -c40, -c40.yzzw  // ::sum<0,0>
    cmp r0.w, r1.w, r2.x, r2.y  // ::sum<0>
    mad r4, r1.z, c47, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r5.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r4.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    mad r4, r1.z, c46, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r5.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r4.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    mad r4, r1.z, c45, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r5.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r4.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    mad r4, r1.z, c44, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r5.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r4.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    mad r4, r1.z, c50, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r5.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r4.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    mad r4, r1.z, c43, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r5.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r1.w, r0.y, c39.x, r4.x
    add r1.w, r0.x, -r1.w
    add r2.x, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.w, r0.w, r2.x  // ::sum<0>
    mad r4, r1.z, c49, r3.xyxy
    texld r5, r4, s1  // ::shadowMapDepth<0>
    mad r1.z, r0.y, c39.x, r5.x
    add r1.z, r0.x, -r1.z
    add r1.w, r0.w, c38.y  // ::sum<0>
    cmp r0.w, r1.z, r0.w, r1.w  // ::sum<0>
    texld r4, r4.zwzw, s1  // ::shadowMapDepth<0>
    mad r0.y, r0.y, c39.x, r4.x
    add r0.x, -r0.y, r0.x
    add r0.y, r0.w, c38.y  // ::sum<0>
    cmp r0.x, r0.x, r0.w, r0.y  // ::sum<0>
    mul r0.x, r0.x, c39.z  // ::PCF_Filter<0>

#line 77
    cmp r0.x, r0.z, r0.x, c38.y  // ::PCSS<0>

#line 123
    mad r0.y, c35.x, c35.y, -r1.x
    add r0.y, r0.y, -c38.y
    mov r2.yw, c38
    add r0.zw, -r2.y, c35.xyxy
    mad_sat r0.zw, r0, -c38.x, r3.xyxy
    mad r0.zw, r0, c35.xyxy, r2.w
    mul_sat r0.zw, r0_abs, c39.w  // ::fadeParams<0,1>
    add r1.x, -r2.z, c38.y
    add_sat r0.zw, r0, -r1.x  // ::fadeParams<0,1>
    rcp r1.x, c36.z
    mul_sat r0.zw, r0, r1.x  // ::fadeParams<0,1>
    max r1.x, r0.z, r0.w
    lrp r2.x, r1.x, c38.y, r0.x  // ::shadowValue<0>

#line 123
    cmp r0.x, -r0_abs.y, r2.x, r0.x  // ::shadowValue<0>

#line 119
    cmp oC0, r1.y, c38.y, r0.x  // ::main<0,1,2,3>

// approximately 309 instruction slots used (33 texture, 276 arithmetic)
 