//Decals PS 4. Blood.
// ---- Created with 3Dmigoto v1.3.16 on Fri Dec 16 20:10:23 2022
Texture2D<float4> t15 : register(t15);

Texture2D<float4> t4 : register(t4);

Texture2D<float4> t0 : register(t0);

SamplerState s4_s : register(s4);

SamplerState s0_s : register(s0);

cbuffer cb6 : register(b6)
{
  float4 cb6[11];
}

cbuffer cb12 : register(b12)
{
  float4 cb12[225];
}




// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : SV_Position0,
  float3 v1 : TEXCOORD1,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float4 o2 : SV_Target2)
{
  float4 r0,r1,r2,r3,r10,r11,r12;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  
  r0.xy = (uint2)v0.xy;
  r1.xy = (uint2)r0.xy;
  
  r10.xy = r0.xy;
  r12.xyzw = cb12[212].xyzw * r1.yyyy;
  r11.xyzw = cb12[211].xyzw * r1.xxxx + r12.xyzw;
  r10.zw = float2(0,0);
  r10.x = t15.Load(r10.xyz).x;
  r10.xyzw = cb12[213].xyzw * r10.xxxx + r11.xyzw;
  r10.xyzw = cb12[214].xyzw + r10.xyzw;
  
  r1.x+=stereo.x*(stereo.y*r10.w-1)*cb12[220].x;
  
  r2.xyzw = cb12[212].xyzw * r1.yyyy;
  r1.xyzw = cb12[211].xyzw * r1.xxxx + r2.xyzw;
  r0.zw = float2(0,0);
  r0.x = t15.Load(r0.xyz).x;
  r0.xyzw = cb12[213].xyzw * r0.xxxx + r1.xyzw;
  r0.xyzw = cb12[214].xyzw + r0.xyzw;
  r0.xyz = r0.xyz / r0.www;
  r0.w = 1;
  r1.x = dot(r0.xyzw, cb6[0].xyzw);
  r1.y = dot(r0.xyzw, cb6[1].xyzw);
  r1.z = dot(r0.xyzw, cb6[2].xyzw);
  r0.x = cb6[6].w * 0.5 + -0.5;
  r0.xyz = r1.xyz * cb6[6].www + -r0.xxx;
  r1.xy = -cb6[4].xy;
  r1.z = -0;
  r1.xyz = r1.xyz + r0.xyz;
  r1.xyz = cmp(r1.xyz < float3(0,0,0));
  r0.w = (int)r1.y | (int)r1.x;
  r0.w = (int)r1.z | (int)r0.w;
  if (r0.w != 0) discard;
  r1.xy = cb6[4].zw + -r0.xy;
  r1.z = 1 + -r0.z;
  r1.xyz = cmp(r1.xyz < float3(0,0,0));
  r0.w = (int)r1.y | (int)r1.x;
  r0.w = (int)r1.z | (int)r0.w;
  if (r0.w != 0) discard;
  r0.z = -0.5 + r0.z;
  r0.z = r0.z + r0.z;
  r0.z = 1 + -abs(r0.z);
  r0.z = saturate(abs(cb6[10].x) * r0.z);
  r1.xyzw = t0.Sample(s0_s, r0.xy).xyzw;
  r2.xyzw = t4.Sample(s4_s, r0.xy).xyzw;
  r2.xyzw = float4(-0.5,-0.5,-0.5,-0.5) + r2.xyzw;
  r3.xyzw = cb6[7].xyzw * r1.xyzw;
  r0.xyw = -r1.xyz * cb6[7].xyz + float3(1,1,1);
  r0.xyw = cb6[5].www * r0.xyw + r3.xyz;
  r0.xyw = cb6[5].xyz * r0.xyw;
  o1.xyz = cb6[6].zzz * r0.xyw;
  r0.x = cb6[6].y * r3.w;
  o0.xyz = r3.xyz;
  r0.x = r0.x * r0.z;
  o0.w = r0.x;
  o1.w = r0.x;
  o2.w = saturate(4 * r0.x);
  r0.x = dot(r2.xyzw, r2.xyzw);
  r0.x = rsqrt(r0.x);
  r0.xyz = r2.xyz * r0.xxx;
  r1.xyz = cb6[9].zxy * cb6[8].yzx;
  r1.xyz = cb6[9].yzx * cb6[8].zxy + -r1.xyz;
  r1.xyz = r1.xyz * r0.yyy;
  r0.xyw = cb6[8].xyz * r0.xxx + r1.xyz;
  r0.xyz = cb6[9].xyz * r0.zzz + r0.xyw;
  o2.xyz = r0.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Fri Dec 16 20:10:23 2022
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
// TEXCOORD                 1   xyz         1     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
// SV_Target                2   xyzw        2   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB12[215], immediateIndexed
dcl_constantbuffer CB6[11], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s4, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t15
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_temps 4
ftou r0.xy, v0.xyxx
utof r1.xy, r0.xyxx
mul r2.xyzw, r1.yyyy, cb12[212].xyzw
mad r1.xyzw, cb12[211].xyzw, r1.xxxx, r2.xyzw
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r0.x, r0.xyzw, t15.xyzw
mad r0.xyzw, cb12[213].xyzw, r0.xxxx, r1.xyzw
add r0.xyzw, r0.xyzw, cb12[214].xyzw
div r0.xyz, r0.xyzx, r0.wwww
mov r0.w, l(1.000000)
dp4 r1.x, r0.xyzw, cb6[0].xyzw
dp4 r1.y, r0.xyzw, cb6[1].xyzw
dp4 r1.z, r0.xyzw, cb6[2].xyzw
mad r0.x, cb6[6].w, l(0.500000), l(-0.500000)
mad r0.xyz, r1.xyzx, cb6[6].wwww, -r0.xxxx
mov r1.xy, -cb6[4].xyxx
mov r1.z, l(-0.000000)
add r1.xyz, r0.xyzx, r1.xyzx
lt r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
or r0.w, r1.y, r1.x
or r0.w, r1.z, r0.w
discard_nz r0.w
add r1.xy, -r0.xyxx, cb6[4].zwzz
add r1.z, -r0.z, l(1.000000)
lt r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
or r0.w, r1.y, r1.x
or r0.w, r1.z, r0.w
discard_nz r0.w
add r0.z, r0.z, l(-0.500000)
add r0.z, r0.z, r0.z
add r0.z, -|r0.z|, l(1.000000)
mul_sat r0.z, r0.z, |cb6[10].x|
sample_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyxx, t0.xyzw, s0
sample_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyxx, t4.xyzw, s4
add r2.xyzw, r2.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000)
mul r3.xyzw, r1.xyzw, cb6[7].xyzw
mad r0.xyw, -r1.xyxz, cb6[7].xyxz, l(1.000000, 1.000000, 0.000000, 1.000000)
mad r0.xyw, cb6[5].wwww, r0.xyxw, r3.xyxz
mul r0.xyw, r0.xyxw, cb6[5].xyxz
mul o1.xyz, r0.xywx, cb6[6].zzzz
mul r0.x, r3.w, cb6[6].y
mov o0.xyz, r3.xyzx
mul r0.x, r0.z, r0.x
mov o0.w, r0.x
mov o1.w, r0.x
mul_sat o2.w, r0.x, l(4.000000)
dp4 r0.x, r2.xyzw, r2.xyzw
rsq r0.x, r0.x
mul r0.xyz, r0.xxxx, r2.xyzx
mul r1.xyz, cb6[8].yzxy, cb6[9].zxyz
mad r1.xyz, cb6[9].yzxy, cb6[8].zxyz, -r1.xyzx
mul r1.xyz, r0.yyyy, r1.xyzx
mad r0.xyw, cb6[8].xyxz, r0.xxxx, r1.xyxz
mad r0.xyz, cb6[9].xyzx, r0.zzzz, r0.xywx
mad o2.xyz, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
ret
// Approximately 0 instruction slots used

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
