//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Sat May 22 13:54:10 2021
//
//
// Note: shader requires additional functionality:
//       Early depth-stencil
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float   xy
// TEXCOORD                 4   xyz         1     NONE   float
// TEXCOORD                 5   xyzw        2     NONE   float   xyzw
// TANGENTX                 0   xyzw        3     NONE   float
// TANGENTZ                 0   xyzw        4     NONE   float
// TEXCOORD                 7   xyzw        5     NONE   float   xyzw
// TEXCOORD                 8   xyz         6     NONE   float
// SV_POSITION              0   xyzw        7      POS   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
ps_5_0
dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil
dcl_constantbuffer cb0[2], immediateIndexed
dcl_constantbuffer cb1[44], immediateIndexed
dcl_constantbuffer cb2[5], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_uav_structured u1, 4
dcl_input_ps linear v0.xy
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v5.xyzw
dcl_temps 4
add r0.xyz, v5.xyzx, cb0[1].xyzx
ftoi r0.xyz, r0.xyzx
ushr r0.xyz, r0.xyzx, l(2, 2, 2, 0)
sample_indexable(texture2d)(float,float,float,float) r0.w, v0.xyxx, t0.yzwx, s0
max r1.x, |r0.w|, l(0.000001)
log r1.x, r1.x
mul r1.x, r1.x, v2.z
exp r1.x, r1.x
mad r1.x, v2.x, r1.x, v2.y
mad r1.yzw, r1.xxxx, l(0.000000, 0.000154118257, 0.000842420210, 0.0000422806261), l(0.000000, 0.860117733, 1.000000, 0.317398727)
mul r2.x, r1.x, r1.x
mad r1.yzw, r2.xxxx, l(0.000000, 1.286412186E-007, 7.081451372E-007, 4.204816761E-008), r1.yyzw
div r1.y, r1.y, r1.z
mad r1.z, -r1.x, l(0.0000289741820), l(1.000000)
mad r1.z, r2.x, l(1.614560574E-007), r1.z
div r1.z, r1.w, r1.z
mul r1.xw, r1.xxxy, l(0.000400, 0.000000, 0.000000, 3.000000)
add r1.y, r1.y, r1.y
mad r1.y, -r1.z, l(8.000000), r1.y
add r1.y, r1.y, l(4.000000)
div r1.w, r1.w, r1.y
add r1.z, r1.z, r1.z
div r1.y, r1.z, r1.y
add r1.z, -r1.w, l(1.000000)
add r1.z, -r1.y, r1.z
div r1.y, l(1.000000, 1.000000, 1.000000, 1.000000), r1.y
mul r2.xz, r1.wwzw, r1.yyyy
mov r2.y, l(1.000000)
dp3 r3.x, l(3.24045420, -1.53713846, -0.498531401, 0.000000), r2.xyzx
dp3 r3.y, l(-0.969266, 1.87601078, 0.041556, 0.000000), r2.xyzx
dp3 r3.z, l(0.0556433983, -0.204025894, 1.05722523, 0.000000), r2.xyzx
mul r1.x, r1.x, r1.x
mul r1.x, r1.x, r1.x
mul r1.xyz, r1.xxxx, r3.xyzx
mul r1.xyz, r1.xyzx, cb2[4].xxxx
div r1.xyz, r1.xyzx, cb1[43].xxxx
add r1.xyz, r1.xyzx, cb2[1].xyzx
mul_sat r0.w, r0.w, v2.w
mul r0.w, r0.w, |v5.w|
mul r0.w, r0.w, cb1[43].y
dp3 r2.x, l(0.627403915, 0.329283029, 0.0433130674, 0.000000), r1.xyzx
dp3 r2.y, l(0.0690972880, 0.919540405, 0.0113623161, 0.000000), r1.xyzx
dp3 r2.z, l(0.0163914394, 0.0880133063, 0.895595253, 0.000000), r1.xyzx
max r1.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
and r2.xyz, r1.xyzx, l(0x7f800000, 0x7f800000, 0x7f800000, 0)
ine r2.xyz, l(0x7f800000, 0x7f800000, 0x7f800000, 0), r2.xyzx
ieq r2.xyz, r2.xyzx, l(0, 0, 0, 0)
or r1.w, r2.y, r2.x
or r1.w, r2.z, r1.w
movc r1.xyz, r1.wwww, l(0,0,0,0), r1.xyzx
mul r0.w, r0.w, cb0[1].w
mul r0.w, r0.w, l(2048.000000)
mul r1.xyz, r0.wwww, r1.xyzx
max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
ftou r1.xyz, r1.xyzx
ult r2.xyz, r0.xyzx, cb0[0].xyzx
and r0.w, r2.y, r2.x
and r0.w, r2.z, r0.w
ult r2.xyz, l(0, 0, 0, 0), r1.xyzx
or r1.w, r2.y, r2.x
or r1.w, r2.z, r1.w
and r0.w, r0.w, r1.w
if_nz r0.w
  imad r0.x, r0.y, cb0[0].x, r0.x
  imul null, r0.y, cb0[0].x, cb0[0].y
  imad r0.x, r0.z, r0.y, r0.x
  imul null, r2.x, r0.x, l(3)
  mov r2.y, l(0)
  atomic_iadd u1, r2.xyxx, r1.x
  imad r0.xy, r0.xxxx, l(3, 3, 0, 0), l(1, 2, 0, 0)
  mov r0.z, l(0)
  atomic_iadd u1, r0.xzxx, r1.y
  atomic_iadd u1, r0.yzyy, r1.z
endif
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Sat May 22 13:54:10 2021
// struct u1_t {
//   float val[1];
// };
// RWStructuredBuffer<u1_t> u1 : register(u1);
//
// Texture2D<float4> t0 : register(t0);
//
// SamplerState s0_s : register(s0);
//
// cbuffer cb2 : register(b2)
// {
//   float4 cb2[5];
// }
//
// cbuffer cb1 : register(b1)
// {
//   float4 cb1[44];
// }
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[2];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main(
//   float4 v0 : TEXCOORD0,
//   float4 v1 : TEXCOORD4,
//   float4 v2 : TEXCOORD5,
//   float4 v3 : TANGENTX0,
//   float4 v4 : TANGENTZ0,
//   float4 v5 : TEXCOORD7,
//   float3 v6 : TEXCOORD8,
//   float4 v7 : SV_POSITION0)
// {
//   float4 r0,r1,r2,r3;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.xyz = cb0[1].xyz + v5.xyz;
//   r0.xyz = (int3)r0.xyz;
//   r0.xyz = (uint3)r0.xyz >> int3(2,2,2);
//   r0.w = t0.Sample(s0_s, v0.xy).x;
//   r1.x = max(9.99999997e-007, abs(r0.w));
//   r1.x = log2(r1.x);
//   r1.x = v2.z * r1.x;
//   r1.x = exp2(r1.x);
//   r1.x = v2.x * r1.x + v2.y;
//   r1.yzw = r1.xxx * float3(0.000154118257,0.00084242021,4.22806261e-005) + float3(0.860117733,1,0.317398727);
//   r2.x = r1.x * r1.x;
//   r1.yzw = r2.xxx * float3(1.28641219e-007,7.08145137e-007,4.20481676e-008) + r1.yzw;
//   r1.y = r1.y / r1.z;
//   r1.z = -r1.x * 2.8974182e-005 + 1;
//   r1.z = r2.x * 1.61456057e-007 + r1.z;
//   r1.z = r1.w / r1.z;
//   r1.xw = float2(0.00039999999,3) * r1.xy;
//   r1.y = r1.y + r1.y;
//   r1.y = -r1.z * 8 + r1.y;
//   r1.y = 4 + r1.y;
//   r1.w = r1.w / r1.y;
//   r1.z = r1.z + r1.z;
//   r1.y = r1.z / r1.y;
//   r1.z = 1 + -r1.w;
//   r1.z = r1.z + -r1.y;
//   r1.y = 1 / r1.y;
//   r2.xz = r1.yy * r1.wz;
//   r2.y = 1;
//   r3.x = dot(float3(3.2404542,-1.53713846,-0.498531401), r2.xyz);
//   r3.y = dot(float3(-0.969265997,1.87601078,0.0415560007), r2.xyz);
//   r3.z = dot(float3(0.0556433983,-0.204025894,1.05722523), r2.xyz);
//   r1.x = r1.x * r1.x;
//   r1.x = r1.x * r1.x;
//   r1.xyz = r3.xyz * r1.xxx;
//   r1.xyz = cb2[4].xxx * r1.xyz;
//   r1.xyz = r1.xyz / cb1[43].xxx;
//   r1.xyz = cb2[1].xyz + r1.xyz;
//   r0.w = saturate(v2.w * r0.w);
//   r0.w = abs(v5.w) * r0.w;
//   r0.w = cb1[43].y * r0.w;
//   r2.x = dot(float3(0.627403915,0.329283029,0.0433130674), r1.xyz);
//   r2.y = dot(float3(0.069097288,0.919540405,0.0113623161), r1.xyz);
//   r2.z = dot(float3(0.0163914394,0.0880133063,0.895595253), r1.xyz);
//   r1.xyz = max(float3(0,0,0), r2.xyz);
//   r2.xyz = (int3)r1.xyz & int3(0x7f800000,0x7f800000,0x7f800000);
//   r2.xyz = cmp(int3(0x7f800000,0x7f800000,0x7f800000) != (int3)r2.xyz);
//   r2.xyz = cmp((int3)r2.xyz == int3(0,0,0));
//   r1.w = (int)r2.y | (int)r2.x;
//   r1.w = (int)r2.z | (int)r1.w;
//   r1.xyz = r1.www ? float3(0,0,0) : r1.xyz;
//   r0.w = cb0[1].w * r0.w;
//   r0.w = 2048 * r0.w;
//   r1.xyz = r1.xyz * r0.www;
//   r1.xyz = max(float3(0,0,0), r1.xyz);
//   r1.xyz = (uint3)r1.xyz;
//   r2.xyz = cmp((uint3)r0.xyz < asuint(cb0[0].xyz));
//   r0.w = r2.y ? r2.x : 0;
//   r0.w = r2.z ? r0.w : 0;
//   r2.xyz = cmp(int3(0,0,0) < (uint3)r1.xyz);
//   r1.w = (int)r2.y | (int)r2.x;
//   r1.w = (int)r2.z | (int)r1.w;
//   r0.w = (int)r0.w & (int)r1.w;
//   if (r0.w != 0) {
//     r0.x = mad((int)r0.y, asint(cb0[0].x), (int)r0.x);
//     r0.y = asint(cb0[0].x) * asint(cb0[0].y);
//     r0.x = mad((int)r0.z, (int)r0.y, (int)r0.x);
//     r2.x = (int)r0.x * 3;
//     r2.y = 0;
//     // Needs manual fix for instruction:
//     atomic_iadd u1, r2.xyxx, r1.x
//     InterlockedAdd(dest, value, orig_value);
//     r0.xy = mad((int2)r0.xx, int2(3,3), int2(1,2));
//     r0.z = 0;
//     // Needs manual fix for instruction:
//     atomic_iadd u1, r0.xzxx, r1.y
//     InterlockedAdd(dest, value, orig_value);
//     // Needs manual fix for instruction:
//     atomic_iadd u1, r0.yzyy, r1.z
//     InterlockedAdd(dest, value, orig_value);
//   }
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// F:\SteamLibrary\steamapps\common\Days Gone\BendGame\Binaries\Win64\ShaderFixes\009e7d4e1472c189-ps_replace.txt(107,16-42): warning X3203: signed/unsigned mismatch, unsigned assumed
// F:\SteamLibrary\steamapps\common\Days Gone\BendGame\Binaries\Win64\ShaderFixes\009e7d4e1472c189-ps_replace.txt(118,5-15): error X3000: unrecognized identifier 'atomic_iadd'
// F:\SteamLibrary\steamapps\common\Days Gone\BendGame\Binaries\Win64\ShaderFixes\009e7d4e1472c189-ps_replace.txt(118,17-18): error X3000: unrecognized identifier 'u1'
/////////////////////////////////////////////////////////////////////////////
