//   float4 ScreenPositionScaleBias;
//   float4x4 ScreenToShadowMatrix;
//   float3 ShadowBufferSizeAndSoftTransitionScale;
//   sampler2D ShadowDepthTexture;
//   float4 ShadowModulateColor;
//   float2 ShadowTexelSize;
//
//
// Registers:
//
//   Name                                   Reg   Size
//   -------------------------------------- ----- ----
//   ShadowModulateColor                    c0       1
//   ScreenPositionScaleBias                c1       1
//   MinZ_MaxZRatio                         c2       1
//   ScreenToShadowMatrix                   c9       4
//   ShadowBufferSizeAndSoftTransitionScale c13      1
//   ShadowTexelSize                        c14      1
//   SceneColorTexture                      s0       1
//   ShadowDepthTexture                     s1       1
//

    ps_3_0
    def c3, 0.5, 1.5, 2.5, 0.25
    def c4, 0, 1, -1, -0.999000013
   def c200, 0.0, 0.5, 0.0625, 0 
    dcl_texcoord v0.xyw
    dcl_2d s0
    dcl_2d s1
   dcl_2d s14
    mov r16.xyw,  v0
    texldl r11, c200.z, s14
    add r11.y, r16.w, -r11.y
    mul r11.x, r11.x, r11.y
    add r16.x, r16.x, r11.x
    rcp r0.x,r16.w
    mul r0.xy, r0.x,r16
    mad r1.xy, r0, c1, c1.wzzw
    mov r1.zw, c4.x
    texldl r1, r1, s0
    mov r1.yz, c4
    add r0.z, r1.y, -c2.y
    add r0.z, -r0.z, r1.w
    rcp r0.z, r0.z
    mul r0.z, r0.z, -c2.x
    mul r0.xy, r0.z, r0
    texldl r11, c200.z, s14
    add r11.y,  r0.z, -r11.y
    mul r11.x, r11.x, r11.y
    add  r0.x,  r0.x, -r11.x
    mul r2, r0.y, c10
    mad r2, c9, r0.x, r2
    mad r0, c11, r0.z, r2
    add r0, r0, c12
    rcp r0.w, r0.w
    mul r0.xy, r0.w, r0
    max r1.x, c4.w, -r0.z
    mul r0.zw, r0.xyxy, c13.xyxy
    mad r0.xy, r0, c13, r1.z
    frc r0.zw, r0
    add r0.xy, -r0.zwzw, r0
    add r2, r0.xyxy, c3.xxxy
    mul r2, r2, c14.xyxy
    mul r3, r2.xyxx, c4.yyxx
    mul r2, r2.zwxx, c4.yyxx
    texldl r2, r2, s1
    add r1.z, r1.x, r2.x
    mad_sat r2.y, r1.z, c13.z, r1.y
    texldl r3, r3, s1
    add r1.z, r1.x, r3.x
    mad_sat r2.x, r1.z, c13.z, r1.y
    add r3, r0.xyxy, c3.xzyx
    mul r3, r3, c14.xyxy
    mul r4, r3.xyxx, c4.yyxx
    mul r3, r3.zwxx, c4.yyxx
    texldl r3, r3, s1
    add r1.z, r1.x, r3.x
    mad_sat r3.x, r1.z, c13.z, r1.y
    texldl r4, r4, s1
    add r1.z, r1.x, r4.x
    mad_sat r2.z, r1.z, c13.z, r1.y
    add r4, r0.xyxy, c3.yyyz
    mul r4, r4, c14.xyxy
    mul r5, r4.xyxx, c4.yyxx
    mul r4, r4.zwxx, c4.yyxx
    texldl r4, r4, s1
    add r1.z, r1.x, r4.x
    mad_sat r3.z, r1.z, c13.z, r1.y
    texldl r4, r5, s1
    add r1.z, r1.x, r4.x
    mad_sat r3.y, r1.z, c13.z, r1.y
    lrp r4, r0.z, r3.xyyz, r2.xyyz
    lrp r1.zw, r0.w, r4.xyyw, r4.xyxz
    add r1.z, r1.w, r1.z
    add r2.xy, r0, c3.z
    add r4, r0.xyxy, c3.zxzy
    mul r4, r4, c14.xyxy
    mul r2.xy, r2, c14
    mov r2.zw, c4.x
    texldl r2, r2, s1
    add r0.x, r1.x, r2.x
    mad_sat r2.z, r0.x, c13.z, r1.y
    mul r5, r4.xyxx, c4.yyxx
    mul r4, r4.zwxx, c4.yyxx
    texldl r4, r4, s1
    add r0.x, r1.x, r4.x
    mad_sat r2.y, r0.x, c13.z, r1.y
    texldl r4, r5, s1
    add r0.x, r1.x, r4.x
    mad_sat r2.x, r0.x, c13.z, r1.y
    lrp r4, r0.z, r2.xyyz, r3.xyyz
    lrp r1.xw, r0.w, r4.yyzw, r4.xyzz
    add r0.x, r1.x, r1.z
    add r0.x, r1.w, r0.x
    mul_sat_pp r0.x, r0.x, c3.w
    mul r0.x, r0.x, r0.x
    add r1, r1.y, -c0
    mad oC0, r0.x, r1, c0

// approximately 89 instruction slots used (20 texture, 69 arithmetic)