//
// 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[4];
//   float4 shadowFarPlanes;
//
//
// Registers:
//
//   Name             Reg   Size
//   ---------------- ----- ----
//   ViewMatrix       c0      15
//   ProjectionMatrix c16     16
//   ShadowProperties c32      1
//   LightProperties  c33      1
//   shadowFarPlanes  c34      1
//   GBuffer1         s0       1
//   Shadow           s1       1
//

    ps_3_0
    def c0, 4, 3, 2, 0
    def c1, 0.5, 1, 0.224999994, -0.5
    def c3, 5, 2.22222233, 0, 0
    def c4, -0, -1, -2, -3
    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 25 "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 30
    rcp r1.x, c32.x
    rcp r1.z, c32.y
    mul r1.yw, r1.xxzz, c1.x  // ::xShift<0>, ::yShift<0>
    add r1.xz, r1, r1  // ::xScale<0>, ::yScale<0>

#line 20
    mov r0.w, c1.y
    dp4 r2.x, c16, r0  // ComputeShadowTexC::texCoord<0>
    dp4 r2.y, c17, r0  // ComputeShadowTexC::texCoord<1>
    dp4 r2.z, c19, r0  // ComputeShadowTexC::texCoord<3>
    rcp r2.z, r2.z
    mul r3.xy, r2.z, r2  // ComputeShadowTexC::texCoord<0,1>

#line 35
    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, c1.z

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

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

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

#line 41
        mad r2.x, r2.x, r2.z, -r1.y
        add r2.x, r2.x, c1.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, c1.z

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

#line 44
          mad r1.y, r2.x, r2.z, -r1.y
          add r1.y, r1.y, c1.w
          mul r1.x, r1.x, r1_abs.y
          mad r1.y, r2.y, r2.z, -r1.w
          add r1.y, r1.y, c1.w
          mul r1.y, r1.z, r1_abs.y
          max r2.x, r1.x, r1.y
          add r1.x, r2.x, -c1.z
          cmp r1.x, r1.x, c0.x, c0.y  // ::index<0>

#line 41
        else
          mov r1.x, c0.z  // ::index<0>
        endif

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

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

#line 50
    mad r1.y, c32.x, -c32.y, r1.x
    add r2, r1.x, c4
    cmp r4, -r2_abs, -c4.y, -c4.x
    mov r1.w, c0.w
    cmp r5, -r2_abs.x, c2, r1.w
    cmp r5, -r2_abs.y, c6, r5
    cmp r5, -r2_abs.z, c10, r5
    cmp r2, -r2_abs.w, c14, r5
    dp4 r0.x, r2, r0  // ::LightPos<2>
    dp4 r0.y, c34, r4
    rcp r0.y, r0.y
    mul_sat r0.x, r0.y, r0.x  // ::sceneDepth<0>
    texld r2, r3, s1
    mul r0.y, r0.y, c33.w
    mul r0.y, r0.x, r0.y
    mad r0.y, r0.y, c3.x, r2.x
    add r0.x, -r0.x, r0.y
    mov r0.yw, c1
    mad r0.z, c32.x, c32.y, -r0.y
    add r0.z, -r1.x, r0.z
    add r1.xz, -r0.y, c32.xyyw
    mad_sat r1.xz, r1, -c1.x, r3.xyyw
    mad r1.xz, r1, c32.xyyw, r0.w
    mul_sat r1.xz, r1_abs, c3.y  // ::fadeParams<0,1>
    add r0.y, r0.y, -c33.z
    add_sat r0.yw, -r0.y, r1.xxzz  // ::fadeParams<0,1>
    rcp r1.x, c33.z
    mul_sat r0.yw, r0, r1.x  // ::fadeParams<0,1>
    max r1.x, r0.y, r0.w
    cmp r0.xy, r0.x, -c4.yxzw, -c4  // ::shadowValue<0>
    mad r0.y, r1.x, r0.y, r0.x  // ::shadowValue<0>

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

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

// approximately 104 instruction slots used (2 texture, 102 arithmetic)
 