//   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, 1, 0, 2, 3
    def c4, 0.111110002, 0, 0, 0
    def c5, 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, c5.x
    texldl r1, r1, s0
    mov r1.yz, c5
    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, c5.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.wyyx
    mul r3, r3, c20.xyxy
    mul r4, r3.zwxx, c5.yyxx
    mul r3, r3.xyxx, c5.yyxx
    texldl r3, r3, s1
    add r2.z, r0.w, r3.x
    mad_sat r3.x, r2.z, c19.z, r1.y
    texldl r4, r4, s1
    add r2.z, r0.w, r4.x
    mad_sat r4.y, r2.z, c19.z, r1.y
    mov r5.zw, c5.x
    mul r5.xy, r1.xwzw, c20
    texldl r5, r5, s1
    add r2.z, r0.w, r5.x
    mad_sat r4.x, r2.z, c19.z, r1.y
    add r5, r1.xwxw, c3.xyzy
    mul r5, r5, c20.xyxy
    mul r6, r5.xyxx, c5.yyxx
    mul r5, r5.zwxx, c5.yyxx
    texldl r5, r5, s1
    add r2.z, r0.w, r5.x
    mad_sat r5.x, r2.z, c19.z, r1.y
    texldl r6, r6, s1
    add r2.z, r0.w, r6.x
    mad_sat r6.x, r2.z, c19.z, r1.y
    add r7, r1.xwxw, c3.xxzx
    mul r7, r7, c20.xyxy
    mul r8, r7.xyxx, c5.yyxx
    mul r7, r7.zwxx, c5.yyxx
    texldl r7, r7, s1
    add r2.z, r0.w, r7.x
    mad_sat r5.y, r2.z, c19.z, r1.y
    texldl r7, r8, s1
    add r2.z, r0.w, r7.x
    mad_sat r6.y, r2.z, c19.z, r1.y
    add r7, r1.xwxw, c3.wxyz
    mul r7, r7, c20.xyxy
    mul r8, r7.zwxx, c5.yyxx
    mul r7, r7.xyxx, c5.yyxx
    texldl r7, r7, s1
    add r2.z, r0.w, r7.x
    mad_sat r3.y, r2.z, c19.z, r1.y
    texldl r7, r8, s1
    add r2.z, r0.w, r7.x
    mad_sat r4.z, r2.z, c19.z, r1.y
    add r7, r1.xwxw, c3.xzzz
    mul r7, r7, c20.xyxy
    mul r8, r7.xyxx, c5.yyxx
    mul r7, r7.zwxx, c5.yyxx
    texldl r7, r7, s1
    add r2.z, r0.w, r7.x
    mad_sat r5.z, r2.z, c19.z, r1.y
    texldl r7, r8, s1
    add r2.z, r0.w, r7.x
    mad_sat r6.z, r2.z, c19.z, r1.y
    lrp r7, r2.x, r6.xyyz, r4.xyyz
    lrp r8, r2.x, r5.xyyz, r6.xyyz
    lrp r4.xy, r2.y, r8.ywzw, r8.xzzw
    lrp r6.xy, r2.y, r7.ywzw, r7.xzzw
    add r2.z, r4.x, r6.x
    add r7, r1.xwxw, c3.wzyw
    mul r7, r7, c20.xyxy
    mul r8, r7.xyxx, c5.yyxx
    mul r7, r7.zwxx, c5.yyxx
    texldl r7, r7, s1
    add r2.w, r0.w, r7.x
    mad_sat r4.w, r2.w, c19.z, r1.y
    texldl r7, r8, s1
    add r2.w, r0.w, r7.x
    mad_sat r3.z, r2.w, c19.z, r1.y
    lrp r7, r2.x, r3.xyyz, r5.xyyz
    lrp r3.xy, r2.y, r7.ywzw, r7.xzzw
    add r2.z, r2.z, r3.x
    add r2.z, r6.y, r2.z
    add r2.z, r4.y, r2.z
    add r2.z, r3.y, r2.z
    add r7, r1.xwxw, c3.xwzw
    add r1.xw, r1, c3.w
    mul r8.xy, r1.xwzw, c20
    mul r7, r7, c20.xyxy
    mul r9, r7.xyxx, c5.yyxx
    mul r7, r7.zwxx, c5.yyxx
    texldl r7, r7, s1
    add r1.x, r0.w, r7.x
    mad_sat r5.w, r1.x, c19.z, r1.y
    texldl r7, r9, s1
    add r1.x, r0.w, r7.x
    mad_sat r6.w, r1.x, c19.z, r1.y
    lrp r1.xw, r2.x, r6.zyzw, r4.zyzw
    lrp r3.xy, r2.x, r5.zwzw, r6.zwzw
    lrp r4.x, r2.y, r3.y, r3.x
    lrp r3.x, r2.y, r1.w, r1.x
    add r1.x, r2.z, r3.x
    add r1.x, r4.x, r1.x
    mov r8.zw, c5.x
    texldl r4, r8, s1
    add r0.w, r0.w, r4.x
    mad_sat r3.w, r0.w, c19.z, r1.y
    lrp r1.yw, r2.x, r3.xzzw, r5.xzzw
    lrp r0.w, r2.y, r1.w, r1.y
    add r0.w, r0.w, r1.x
    mul_sat_pp r0.w, r0.w, c4.x
    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, c5.x
    mad r0.x, r1.x, -r1.x, c5.y
    max r1.x, r0.x, c5.x
    pow_pp r0.x, r1.x, c18.x
    add r1, r1.z, c0
    mad r1, r0.x, r1, c5.y
    add r2, -r1, c5.y
    mad oC0, r0.w, r2, r1

// approximately 162 instruction slots used (34 texture, 128 arithmetic)