//   float4 ScreenPositionScaleBias;
//   float4x4 ScreenToShadowMatrix;
//   float4x4 ScreenToWorld;
//   float3 ShadowBufferSizeAndSoftTransitionScale;
//   sampler2D ShadowDepthTexture;
//   float4 ShadowModulateColor;
//   float2 ShadowTexelSize;
//
//
// Registers:
//
//   Name                                   Reg   Size
//   -------------------------------------- ----- ----
//   ShadowModulateColor                    c0       1
//   ScreenPositionScaleBias                c1       1
//   MinZ_MaxZRatio                         c2       1
//   ScreenToWorld                          c9       4
//   ScreenToShadowMatrix                   c13      4
//   LightPosition                          c17      1
//   FalloffParameters                      c18      1
//   ShadowBufferSizeAndSoftTransitionScale c19      1
//   ShadowTexelSize                        c20      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, c14
    mad r2, c13, r0.x, r2
    mad r2, c15, r0.z, r2
    add r2, r2, c16
    rcp r0.w, r2.w
    mul r1.xw, r0.w, r2.xyzy
    max r0.w, c4.w, -r2.z
    mul r2.xy, r1.xwzw, c19
    mad r1.xw, r1, c19.xyzy, r1.z
    frc r2.xy, r2
    add r1.xw, r1, -r2.xyzy
    add r3, r1.xwxw, c3.xxxy
    mul r3, r3, c20.xyxy
    mul r4, r3.xyxx, c4.yyxx
    mul r3, r3.zwxx, c4.yyxx
    texldl r3, r3, s1
    add r2.z, r0.w, r3.x
    mad_sat r3.y, r2.z, c19.z, r1.y
    texldl r4, r4, s1
    add r2.z, r0.w, r4.x
    mad_sat r3.x, r2.z, c19.z, r1.y
    add r4, r1.xwxw, c3.xzyx
    mul r4, r4, c20.xyxy
    mul r5, r4.xyxx, c4.yyxx
    mul r4, r4.zwxx, c4.yyxx
    texldl r4, r4, s1
    add r2.z, r0.w, r4.x
    mad_sat r4.x, r2.z, c19.z, r1.y
    texldl r5, r5, s1
    add r2.z, r0.w, r5.x
    mad_sat r3.z, r2.z, c19.z, r1.y
    add r5, r1.xwxw, c3.yyyz
    mul r5, r5, c20.xyxy
    mul r6, r5.xyxx, c4.yyxx
    mul r5, r5.zwxx, c4.yyxx
    texldl r5, r5, s1
    add r2.z, r0.w, r5.x
    mad_sat r4.z, r2.z, c19.z, r1.y
    texldl r5, r6, s1
    add r2.z, r0.w, r5.x
    mad_sat r4.y, r2.z, c19.z, r1.y
    lrp r5, r2.x, r4.xyyz, r3.xyyz
    lrp r3.xy, r2.y, r5.ywzw, r5.xzzw
    add r2.z, r3.y, r3.x
    add r3.xy, r1.xwzw, c3.z
    add r5, r1.xwxw, c3.zxzy
    mul r5, r5, c20.xyxy
    mul r3.xy, r3, c20
    mov r3.zw, c4.x
    texldl r3, r3, s1
    add r1.x, r0.w, r3.x
    mad_sat r3.z, r1.x, c19.z, r1.y
    mul r6, r5.xyxx, c4.yyxx
    mul r5, r5.zwxx, c4.yyxx
    texldl r5, r5, s1
    add r1.x, r0.w, r5.x
    mad_sat r3.y, r1.x, c19.z, r1.y
    texldl r5, r6, s1
    add r0.w, r0.w, r5.x
    mad_sat r3.x, r0.w, c19.z, r1.y
    lrp r5, r2.x, r3.xyyz, r4.xyyz
    lrp r1.xy, r2.y, r5.ywzw, r5.xzzw
    add r0.w, r1.x, r2.z
    add r0.w, r1.y, r0.w
    mul_sat_pp r0.w, r0.w, c3.w
    mul r0.w, r0.w, r0.w
    mul r1.xyw, r0.y, c10.xyzz
    mad r1.xyw, c9.xyzz, r0.x, r1
    mad r0.xyz, c11, r0.z, r1.xyww
    add r0.xyz, r0, c12
    add r0.xyz, -r0, c17
    mul r0.xyz, r0, c17.w
    dp3 r0.x, r0, r0
    rsq r0.x, r0.x
    rcp r0.x, r0.x
    mad r0.x, r0.x, c18.y, c18.z
    max r1.x, r0.x, c4.x
    mad r0.x, r1.x, -r1.x, c4.y
    max r1.x, r0.x, c4.x
    pow_pp r0.x, r1.x, c18.x
    add r1, r1.z, c0
    mad r1, r0.x, r1, c4.y
    add r2, -r1, c4.y
    mad oC0, r0.w, r2, r1

// approximately 107 instruction slots used (20 texture, 87 arithmetic)