// RESIDENT EVIL 6 - 2D SHADOWS (DEMO)
// HELIXMOD FIX BY MIKE_AR69
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4 CBScreen__packed1;
//   float4 CBViewProjection__packed4;
//   sampler2D SSPoint__tDepthMap;
//   sampler2D SSShadowDepth__tShadowMapCombine;
//   float4 __tShadowMapCombine__invsize;
//   row_major float4x4 fProj;
//   
//   struct
//   {
//       float4 __packed0;								c1
//       float4 __packed1;								c2
//       float4 fShadowRange;							c3
//       row_major float4x4 fShadowProjectNear;			c4,c5,c6,c7
//       row_major float4x4 fShadowProjectMiddle;		c8,c9,c10,c11
//       row_major float4x4 fShadowProjectFar;			c12,c13,c14,c15
//       float4 __packed15;								c16
//       float4 __packed16;								c17
//       float4 fShadowMapSize;							c18
//       row_major float3x4 fShadowRangeMat;			null
//       float4 __packed21;								null
//       float4 __packed22;								null
//
//   } sShadowReceiveParam;
//
//
// Registers:
//
//   Name                             Reg   Size
//   -------------------------------- ----- ----
//   sShadowReceiveParam              c1      18
//   fProj                            c19      4		//c19,c20,c21,c22
//   CBScreen__packed1                c23      1
//   CBViewProjection__packed4        c24      1
//   __tShadowMapCombine__invsize     c25      1
//   SSPoint__tDepthMap               s0       1
//   SSShadowDepth__tShadowMapCombine s1       1
//

    ps_3_0
    def c0, 0.5, 1, 0.00392156886, 1.53787005e-005
    def c26, 0, 1, -2, -1
    def c27, 0.111111112, -2, 3, 0
def c200, 1, 0, 0.0625, 0.5
dcl_2d s13	
    dcl_texcoord v0.xyz
    dcl vPos.xy
    dcl_2d s0
    dcl_2d s1
    add r0.xy, c0.x, vPos
    mul r0.xy, r0, c23.zwzw
    texld r0, r0, s0						//Depth map - sampled from vPos
    dp3 r0.x, r0, c0.yzww
    add r0.x, r0.x, c21.z			//Proj z-row
    rcp r0.x, r0.x
    mul r0.x, r0.x, c22.z			//Proj w-row
    mad r0.xyz, r0.x, v0, c24 		//ViewProjectionPacked
					
mov r21.xyz, r0.xyz

mul r22, c175, r21.y
mad r22, c174, r21.x, r22
mad r22, c176, r21.z, r22
add r22, r22, c177

texldl r24, c200.z, s13
add r24.y, r22.w, -r24.y
mul r24.x, r24.x, r24.y
add r22.x, r22.x, -r24.x

rcp r22.w, r22.w
mul r22.xyz, r22.xyz, r22.w

mul r21, c171, r22.y
mad r21, c170, r22.x, r21
mad r21, c172, r22.z, r21
add r21, r21, c173

rcp r21.w, r21.w
mul r21.xyz, r21.xyz, r21.w

mov r0.xyz, r21.xyz

    mul r1, r0.y, c5				//fShadowProjectNear (like the LightTransform)
    mad r1, r0.x, c4, r1
    mad r1, r0.z, c6, r1
    add r1, r1, c7					
	rcp r0.w, r1.w
    mul r2.xyz, r0.w, r1			
	
    cmp r3.xyz, -r2, c26.x, c26.y	
		
	mul r1.w, r3.y, r3.x
    mul r1.w, r3.z, r1.w
    mad r3.xyz, r1, r0.w, -c0.y
    cmp r3.xyz, r3, c26.x, c26.y
    mul r2.z, r3.y, r3.x
    mul r2.z, r3.z, r2.z
    mul r1.w, r1.w, r2.z

    if_ne r1.w, -r1.w
	
      mov r3, c26
      mad r4, c25.xyxy, r3.zzzw, r2.xyxy				//***** r2 is the target coordinate
      mul r5, r4.xyxx, c26.yyxx  
      texldl r5, r5, s1									//Sample from Shadowmap
      mul r4, r4.zwxx, c26.yyxx
      texldl r4, r4, s1									//Sample from Shadowmap
      mad r6, c25.xyxy, r3.zxzy, r2.xyxy
      mul r7, r6.xyxx, c26.yyxx
      texldl r7, r7, s1									//Sample from Shadowmap
      mul r6, r6.zwxx, c26.yyxx
      texldl r6, r6, s1									//Sample from Shadowmap
      mad r8, c25.xyxy, r3.wzwx, r2.xyxy
      mul r9, r8.xyxx, c26.yyxx
      texldl r9, r9, s1									//Sample from Shadowmap
      mad r10.xy, r1, r0.w, -c25
      mov r10.zw, c26.x
      texldl r10, r10, s1								//Sample from Shadowmap
      mul r8, r8.zwxx, c26.yyxx
      texldl r8, r8, s1									//Sample from Shadowmap
      mad r11, c25.xyxy, r3.wyxz, r2.xyxy
      mul r12, r11.xyxx, c26.yyxx
      texldl r12, r12, s1								//Sample from Shadowmap
      mul r11, r11.zwxx, c26.yyxx
      texldl r11, r11, s1								//Sample from Shadowmap
      mad r13, c25.xyxy, r3.xwxy, r2.xyxy
      mul r14, r13.xyxx, c26.yyxx
      texldl r14, r14, s1								//Sample from Shadowmap
      mov r2.w, c26.x
      texldl r15, r2.xyww, s1							//Sample from Shadowmap
      mul r13, r13.zwxx, c26.yyxx
      texldl r13, r13, s1								//Sample from Shadowmap
      mad r16, c25.xyxy, r3.yzyw, r2.xyxy
      mul r17, r16.xyxx, c26.yyxx
      texldl r17, r17, s1								//Sample from Shadowmap
      mul r16, r16.zwxx, c26.yyxx
      texldl r16, r16, s1								//Sample from Shadowmap
      mad r3.xy, c25, r3.yxzw, r2
      mov r3.zw, c26.x
      texldl r3, r3, s1									//Sample from Shadowmap
	  mad r18.xy, r1, r0.w, c25
      mov r18.zw, c26.x
      texldl r18, r18, s1								//Sample from Shadowmap
	  mov r5.y, r4.x									//Shadowmap depth test 
      mov r5.z, r7.x
      mov r5.w, r6.x
      mad r4, r1.z, r0.w, -r5
      cmp r5, r4, c26.y, c26.x
      mov r9.y, r10.x									//Shadowmap depth test
      mov r9.z, r8.x
      mov r9.w, r12.x
      mad r6, r1.z, r0.w, -r9
      cmp r6, r6, c26.y, c26.x
      mov r11.y, r14.x									//Shadowmap depth test 
      mov r11.z, r15.x
      mov r11.w, r13.x
      mad r7, r1.z, r0.w, -r11
      cmp r7, r7, c26.y, c26.x
      mov r17.y, r16.x									//Shadowmap depth test 
      mov r17.z, r3.x
      mov r17.w, r18.x
      mad r1, r1.z, r0.w, -r17
      cmp r1, r1, c26.y, c26.x
      mul r2.xy, r2, c18								
      frc r2.xy, r2
      add r3, r5, r6
      add r3, r7, r3
      cmp r4, r4, -c26.y, -c26.x
      add r1, r1, r4									
      mad r1, r1, r2.x, r3
      add r0.w, r1.y, r1.x
      add r0.w, r1.z, r0.w
      add r1.x, -r1.x, r1.w
      mad r0.w, r1.x, r2.y, r0.w
      mul r0.w, r0.w, c27.x
    else
      mov r0.w, c26.x
    endif
    add r0.xyz, r0, -c1
    dp3 r1.x, r0, r0
    rsq r1.x, r1.x
    rcp r1.y, r1.x
    mul r0.xyz, r0, r1.x
    add r1.xz, -c16.yyww, c16
    add r1.y, r1.y, -c16.y
    rcp r1.x, r1.x
    mul_sat r1.x, r1.x, r1.y
    mad r1.y, r1.x, c27.y, c27.z
    mul r1.x, r1.x, r1.x
    mul r1.x, r1.x, r1.y
    dp3 r0.x, r0, c2.yzww
    add r0.x, r0.x, -c16.w
    rcp r0.y, r1.z
    mul_sat r0.x, r0.y, r0.x
    mad r0.y, r0.x, c27.y, c27.z
    mul r0.x, r0.x, r0.x
    mul r0.x, r0.x, r0.y
    mul r0.x, r0.x, r1.x
    mul oC0, r0.x, r0.w

// approximately 139 instruction slots used (33 texture, 106 arithmetic)
 