//Blod Splatter on walls
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.3.11 on Sun Aug 05 17:28:15 2018
//
//
// Buffer Definitions:
//
// cbuffer cb_g_Pass
// {
//
//   struct PassConsts
//   {
//
//       float4 m_EyePosition;          // Offset:    0
//       float4 m_EyeDirection;         // Offset:   16
//       float4x4 m_ViewToWorld;        // Offset:   32
//       float4x4 m_WorldToView;        // Offset:   96
//       float4x4 m_ProjMatrix;         // Offset:  160
//       float4x4 m_ViewProj;           // Offset:  224
//       float4x4 m_ViewNoTranslationProj;// Offset:  288
//       float4 m_ViewTranslation;      // Offset:  352
//
//       struct ReverseProjParams
//       {
//
//           float4x4 clipXYZToViewPos; // Offset:  368
//           float4x4 clipXYZToWorldPos;// Offset:  432
//           float4 clipZToViewZ;       // Offset:  496
//
//       } reverseProjParams;           // Offset:  368
//       float4 m_VPosToUV;             // Offset:  512
//       float4 m_ViewportScaleOffset;  // Offset:  528
//       float4 m_ClipPlane;            // Offset:  544
//       float4 m_GlobalLightingScale;  // Offset:  560
//       float4 m_ViewSpaceLightingBackWS;// Offset:  576
//       float4 m_ThinGeomAAPixelScale; // Offset:  592
//
//   } g_Pass;                          // Offset:    0 Size:   608
//
// }
//
// cbuffer cb_g_Decal
// {
//
//   struct DecalInstanceConsts
//   {
//
//       float4 m_TileOffset;           // Offset:    0
//       float4 m_RadiusHeightDistFadeFactors;// Offset:   16
//       float4 m_UVector;              // Offset:   32
//       float4 m_VVector;              // Offset:   48
//       float4 m_NVector;              // Offset:   64
//       float4 m_WorldPosition;        // Offset:   80
//       float4 m_LerpEnd;              // Offset:   96
//       float4 m_LerpMask;             // Offset:  112
//       float4 m_TintColor;            // Offset:  128
//       float4 m_AlphaTestValue;       // Offset:  144
//
//   } g_Decal;                         // Offset:    0 Size:   160
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// s_StandardSampler                 sampler      NA          NA   14        1
// t_decalTexture                    texture  float4          2d    0        1
// t_worldNormalsTexture             texture  float4       2dMS4    2        1
// t_depthBufferTexture              texture   float       2dMS4    8        1
// cb_g_Pass                         cbuffer      NA          NA    2        1
// cb_g_Decal                        cbuffer      NA          NA    5        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
// SV_SampleIndex           0   x           1   SAMPLE    uint   x
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
// Pixel Shader runs at sample frequency
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb2[33], immediateIndexed
dcl_constantbuffer cb5[10], immediateIndexed
dcl_sampler s14, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2dms(4) (float,float,float,float) t2
dcl_resource_texture2dms(4) (float,float,float,float) t8
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps_sgv v1.x, sampleIndex
dcl_output o0.xyzw

//insert
dcl_temps 28
dcl_resource_texture2d (float,float,float,float) t125

ftou r0.xy, v0.xyxx
mov r0.zw, l(0,0,0,0)
ldms_indexable(texture2dms)(float,float,float,float) r1.xyz, r0.xyzw, t2.xyzw, v1.x
ldms_indexable(texture2dms)(float,float,float,float) r0.z, r0.xyww, t8.yzxw, v1.x
add r1.xyz, r1.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
add r1.xyz, r1.xyzx, r1.xyzx
dp3 r1.w, r1.xyzx, cb5[4].xyzx
ge r2.x, l(0.000000), r1.w
dp3 r2.y, r1.xyzx, cb5[2].xyzx
dp3 r1.x, r1.xyzx, cb5[3].xyzx
lt r1.y, |r2.y|, |r1.w|
lt r1.z, |r1.x|, |r1.w|
and r1.y, r1.z, r1.y
and r1.z, r2.x, r1.y
discard_nz r1.z
lt r1.z, |r1.w|, |r1.x|
lt r1.w, |r1.w|, |r2.y|
lt r2.x, |r2.y|, |r1.x|
and r1.z, r1.z, r2.x
movc r2.xzw, r1.zzzz, cb5[3].xxyz, cb5[4].xxyz
lt r3.x, |r1.x|, |r2.y|
lt r2.y, l(0.000000), r2.y
movc r3.yzw, r2.yyyy, cb5[4].xxyz, -cb5[4].xxyz
lt r1.x, l(0.000000), r1.x
movc r4.xyz, r1.xxxx, -cb5[4].xyzx, cb5[4].xyzx
movc r4.xyz, r1.zzzz, r4.xyzx, cb5[3].xyzx
and r1.x, r1.w, r3.x
movc r2.xyz, r1.xxxx, cb5[2].xyzx, r2.xzwx
movc r2.xyz, r1.yyyy, cb5[4].xyzx, r2.xyzx



mul r1.zw, v0.xxxy, cb2[32].xxxy
mad r0.xy, r1.zwzz, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
mov r0.w, l(1.000000)


//fix strategy from HLSL converted to ASM --- Losti
ld_indexable(texture2d)(float,float,float,float) r27.xyzw, l(0, 0, 0, 0), t125.xyzw
dp4 r26.w, r0.xyzw, cb2[30].xyzw
mul r27.w, r26.w, r27.y
add r27.w, r27.w, l(-1.0)
mul r27.w, r27.w, r27.x
add r0.x, r0.x, r27.w


dp4 r5.x, r0.xyzw, cb2[27].xyzw
dp4 r5.y, r0.xyzw, cb2[28].xyzw
dp4 r5.z, r0.xyzw, cb2[29].xyzw
dp4 r0.x, r0.xyzw, cb2[30].xyzw
div r0.xyz, r5.xyzx, r0.xxxx



add r0.xyz, r0.xyzx, -cb5[5].xyzx
dp3 r0.w, r0.xyzx, r2.xyzx
add r1.z, -|r0.w|, cb5[1].x
mad_sat r0.w, |r0.w|, cb5[1].z, cb5[1].w
mul r2.xyzw, r0.wwww, cb5[7].xyzw
lt r0.w, r1.z, l(0.000000)
discard_nz r0.w
or r0.w, r1.y, r1.x
movc r1.xzw, r1.xxxx, r3.yyzw, cb5[2].xxyz
movc r1.xyz, r1.yyyy, cb5[2].xyzx, r1.xzwx
dp3 r1.z, r1.xyzx, r0.xyzx
movc r3.xyz, r0.wwww, cb5[3].xyzx, r4.xyzx
dp3 r1.w, r3.xyzx, r0.xyzx
dp3 r0.x, r0.xyzx, r0.xyzx
sqrt r0.x, r0.x
div r0.yz, r1.zzwz, r0.xxxx
div r0.x, r0.x, cb5[1].x
mad r0.xy, r0.yzyy, r0.xxxx, l(1.000000, 1.000000, 0.000000, 0.000000)
mad r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(1.000000, 1.000000, 0.000000, 0.000000)
mul r1.zw, r0.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000)
lt r0.xyzw, r1.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r1.xyzw, r1.zwzz, t0.xyzw, s14
or r0.xy, r0.zwzz, r0.xyxx
or r0.x, r0.y, r0.x
discard_nz r0.x
mul r0.xyzw, r1.xyzw, cb5[8].xyzw
mad r1.xyzw, -r1.xyzw, cb5[8].xyzw, cb5[6].xyzw
mul r3.xyzw, cb5[5].wwww, cb5[7].xyzw
mad r0.xyzw, r3.xyzw, r1.xyzw, r0.xyzw
add r1.xyzw, -r0.xyzw, cb5[6].xyzw
mad r0.xyzw, r2.xyzw, r1.xyzw, r0.xyzw
add r1.xyzw, r0.wwww, -cb5[9].xyzw
mov o0.xyzw, r0.xyzw
lt r0.xyzw, r1.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
or r0.xy, r0.zwzz, r0.xyxx
or r0.x, r0.y, r0.x
discard_nz r0.x
ret
// Approximately 75 instruction slots used