//Ambient occlusion CS 3.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Wed Jan 05 19:41:20 2022
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[1], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (uint,uint,uint,uint) t0
dcl_uav_typed_texture2d (uint,uint,uint,uint) u0
dcl_input vThreadID.xy
dcl_temps 5
dcl_thread_group 8, 8, 1
ishl r0.xy, vThreadID.xyxx, l(1, 1, 0, 0)
utof r0.xy, r0.xyxx
add r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
mul r0.xy, r0.xyxx, cb0[0].xyxx
gather4_indexable(texture2d)(uint,uint,uint,uint) r0.xyzw, r0.xyxx, t0.xyzw, s0.x
and r1.xyzw, r0.xyzw, l(1023, 1023, 1023, 1023)
utof r1.xyzw, r1.zxwy
mov r2.xz, r1.yywy
ubfe r3.xyzw, l(10, 10, 10, 10), l(10, 10, 10, 10), r0.xyzw
utof r3.xyzw, r3.xyzw
mov r2.yw, r3.xxxy
mov r1.yw, r3.zzzw
mad r1.xyzw, r1.xyzw, l(0.00195503421, 0.00195503421, 0.00195503421, 0.00195503421), l(-1.000000, -1.000000, -1.000000, -1.000000)
mad r2.xyzw, r2.xyzw, l(0.00195503421, 0.00195503421, 0.00195503421, 0.00195503421), l(-1.000000, -1.000000, -1.000000, -1.000000)
add r3.xyzw, -|r2.yxwz|, l(1.000000, 1.000000, 1.000000, 1.000000)
ge r4.xyzw, r2.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r3.xyzw, r4.xyzw, r3.xyzw, -r3.xyzw
dp2 r4.x, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx|
add r4.z, -r4.x, l(1.000000)
lt r4.w, r4.z, l(0.000000)
movc r4.xy, r4.wwww, r3.xyxx, r2.xyxx
dp3 r2.x, r4.xyzx, r4.xyzx
rsq r2.x, r2.x
mul r3.xy, r2.xxxx, r4.xyxx
mad r2.y, -r4.x, r2.x, -r3.y
mad r4.xy, r4.xyxx, r2.xxxx, -r3.yxyy
add r3.x, r3.y, r3.x
mad r3.x, r4.z, r2.x, r3.x
lt r3.x, l(0.000000), r3.x
movc r3.x, r3.x, l(64), l(128)
mad r4.xy, r4.zzzz, r2.xxxx, r4.xyxx
mad r2.x, r4.z, r2.x, r2.y
lt r2.x, l(0.000000), r2.x
movc r2.x, r2.x, l(1), l(2)
lt r4.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r4.xyxx
movc r4.xy, r4.xyxx, l(4,16,0,0), l(8,32,0,0)
iadd r2.x, r2.x, r4.x
iadd r2.x, r2.x, r4.y
iadd r2.x, r2.x, r3.x
movc r0.x, r0.x, r2.x, l(0)
dp2 r2.x, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.zwzz|
add r4.z, -r2.x, l(1.000000)
lt r2.x, r4.z, l(0.000000)
movc r4.xy, r2.xxxx, r3.zwzz, r2.zwzz
dp3 r2.x, r4.xyzx, r4.xyzx
rsq r2.x, r2.x
mul r2.yz, r2.xxxx, r4.xxyx
mad r2.w, -r4.x, r2.x, -r2.z
mad r3.xy, r4.xyxx, r2.xxxx, -r2.zyzz
add r2.y, r2.z, r2.y
mad r2.y, r4.z, r2.x, r2.y
lt r2.y, l(0.000000), r2.y
mad r3.xy, r4.zzzz, r2.xxxx, r3.xyxx
mad r2.x, r4.z, r2.x, r2.w
lt r2.x, l(0.000000), r2.x
lt r2.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r3.xxxy
movc r2.xyzw, r2.xyzw, l(1,64,4,16), l(2,128,8,32)
iadd r2.x, r2.x, r2.z
iadd r2.x, r2.x, r2.w
iadd r2.x, r2.x, r2.y
movc r0.y, r0.y, r2.x, l(0)
or r0.x, r0.y, r0.x
add r2.xyzw, -|r1.yxwz|, l(1.000000, 1.000000, 1.000000, 1.000000)
ge r3.xyzw, r1.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r2.xyzw, r3.xyzw, r2.xyzw, -r2.xyzw
dp2 r0.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r1.xyxx|
add r3.z, -r0.y, l(1.000000)
lt r0.y, r3.z, l(0.000000)
movc r3.xy, r0.yyyy, r2.xyxx, r1.xyxx
dp3 r0.y, r3.xyzx, r3.xyzx
rsq r0.y, r0.y
mul r1.xy, r0.yyyy, r3.xyxx
mad r2.x, -r3.x, r0.y, -r1.y
mad r3.xy, r3.xyxx, r0.yyyy, -r1.yxyy
add r1.x, r1.y, r1.x
mad r1.x, r3.z, r0.y, r1.x
lt r1.x, l(0.000000), r1.x
movc r1.x, r1.x, l(64), l(128)
mad r3.xy, r3.zzzz, r0.yyyy, r3.xyxx
mad r0.y, r3.z, r0.y, r2.x
lt r0.y, l(0.000000), r0.y
movc r0.y, r0.y, l(1), l(2)
lt r2.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r3.xyxx
movc r2.xy, r2.xyxx, l(4,16,0,0), l(8,32,0,0)
iadd r0.y, r0.y, r2.x
iadd r0.y, r0.y, r2.y
iadd r0.y, r0.y, r1.x
movc r0.y, r0.z, r0.y, l(0)
or r0.x, r0.y, r0.x
dp2 r0.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r1.zwzz|
add r3.z, -r0.y, l(1.000000)
lt r0.y, r3.z, l(0.000000)
movc r3.xy, r0.yyyy, r2.zwzz, r1.zwzz
dp3 r0.y, r3.xyzx, r3.xyzx
rsq r0.y, r0.y
mul r1.xy, r0.yyyy, r3.xyxx
mad r0.z, -r3.x, r0.y, -r1.y
mad r1.zw, r3.xxxy, r0.yyyy, -r1.yyyx
add r1.x, r1.y, r1.x
mad r1.x, r3.z, r0.y, r1.x
lt r1.x, l(0.000000), r1.x
mad r1.yz, r3.zzzz, r0.yyyy, r1.zzwz
mad r0.y, r3.z, r0.y, r0.z
lt r0.y, l(0.000000), r0.y
movc r0.y, r0.y, l(1), l(2)
lt r1.yz, l(0.000000, 0.000000, 0.000000, 0.000000), r1.yyzy
movc r1.xyz, r1.xyzx, l(64,4,16,0), l(128,8,32,0)
iadd r0.y, r0.y, r1.y
iadd r0.y, r0.y, r1.z
iadd r0.y, r0.y, r1.x
movc r0.y, r0.w, r0.y, l(0)
or r0.x, r0.y, r0.x
store_uav_typed u0.xyzw, vThreadID.xyyy, r0.xxxx
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Wed Jan 05 19:41:20 2022
// Texture2D<uint4> t0 : register(t0);
//
// SamplerState s0_s : register(s0);
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[1];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2d (uint,uint,uint,uint) u0
//   float4 r0,r1,r2,r3,r4;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 8, 8, 1
//   r0.xy = (uint2)vThreadID.xy << int2(1,1);
//   r0.xy = (uint2)r0.xy;
//   r0.xy = float2(0.5,0.5) + r0.xy;
//   r0.xy = cb0[0].xy * r0.xy;
//   r0.xyzw = t0.Gather(s0_s, r0.xy).xyzw;
//   r1.xyzw = (int4)r0.xyzw & int4(1023,1023,1023,1023);
//   r1.xyzw = (uint4)r1.zxwy;
//   r2.xz = r1.yw;
//   if (10 == 0) r3.x = 0; else if (10+10 < 32) {   r3.x = (uint)r0.x << (32-(10 + 10)); r3.x = (uint)r3.x >> (32-10);  } else r3.x = (uint)r0.x >> 10;
//   if (10 == 0) r3.y = 0; else if (10+10 < 32) {   r3.y = (uint)r0.y << (32-(10 + 10)); r3.y = (uint)r3.y >> (32-10);  } else r3.y = (uint)r0.y >> 10;
//   if (10 == 0) r3.z = 0; else if (10+10 < 32) {   r3.z = (uint)r0.z << (32-(10 + 10)); r3.z = (uint)r3.z >> (32-10);  } else r3.z = (uint)r0.z >> 10;
//   if (10 == 0) r3.w = 0; else if (10+10 < 32) {   r3.w = (uint)r0.w << (32-(10 + 10)); r3.w = (uint)r3.w >> (32-10);  } else r3.w = (uint)r0.w >> 10;
//   r3.xyzw = (uint4)r3.xyzw;
//   r2.yw = r3.xy;
//   r1.yw = r3.zw;
//   r1.xyzw = r1.xyzw * float4(0.00195503421,0.00195503421,0.00195503421,0.00195503421) + float4(-1,-1,-1,-1);
//   r2.xyzw = r2.xyzw * float4(0.00195503421,0.00195503421,0.00195503421,0.00195503421) + float4(-1,-1,-1,-1);
//   r3.xyzw = float4(1,1,1,1) + -abs(r2.yxwz);
//   r4.xyzw = cmp(r2.xyzw >= float4(0,0,0,0));
//   r3.xyzw = r4.xyzw ? r3.xyzw : -r3.xyzw;
//   r4.x = dot(float2(1,1), abs(r2.xy));
//   r4.z = 1 + -r4.x;
//   r4.w = cmp(r4.z < 0);
//   r4.xy = r4.ww ? r3.xy : r2.xy;
//   r2.x = dot(r4.xyz, r4.xyz);
//   r2.x = rsqrt(r2.x);
//   r3.xy = r4.xy * r2.xx;
//   r2.y = -r4.x * r2.x + -r3.y;
//   r4.xy = r4.xy * r2.xx + -r3.yx;
//   r3.x = r3.x + r3.y;
//   r3.x = r4.z * r2.x + r3.x;
//   r3.x = cmp(0 < r3.x);
//   r3.x = r3.x ? 64 : 128;
//   r4.xy = r4.zz * r2.xx + r4.xy;
//   r2.x = r4.z * r2.x + r2.y;
//   r2.x = cmp(0 < r2.x);
//   r2.x = r2.x ? 1 : 2;
//   r4.xy = cmp(float2(0,0) < r4.xy);
//   r4.xy = r4.xy ? float2(4,16) : float2(8,32);
//   r2.x = (int)r2.x + (int)r4.x;
//   r2.x = (int)r2.x + (int)r4.y;
//   r2.x = (int)r2.x + (int)r3.x;
//   r0.x = r0.x ? r2.x : 0;
//   r2.x = dot(float2(1,1), abs(r2.zw));
//   r4.z = 1 + -r2.x;
//   r2.x = cmp(r4.z < 0);
//   r4.xy = r2.xx ? r3.zw : r2.zw;
//   r2.x = dot(r4.xyz, r4.xyz);
//   r2.x = rsqrt(r2.x);
//   r2.yz = r4.xy * r2.xx;
//   r2.w = -r4.x * r2.x + -r2.z;
//   r3.xy = r4.xy * r2.xx + -r2.zy;
//   r2.y = r2.y + r2.z;
//   r2.y = r4.z * r2.x + r2.y;
//   r2.y = cmp(0 < r2.y);
//   r3.xy = r4.zz * r2.xx + r3.xy;
//   r2.x = r4.z * r2.x + r2.w;
//   r2.x = cmp(0 < r2.x);
//   r2.zw = cmp(float2(0,0) < r3.xy);
//   r2.xyzw = r2.xyzw ? float4(1,64,4,16) : float4(2,128,8,32);
//   r2.x = (int)r2.x + (int)r2.z;
//   r2.x = (int)r2.x + (int)r2.w;
//   r2.x = (int)r2.x + (int)r2.y;
//   r0.y = r0.y ? r2.x : 0;
//   r0.x = (int)r0.y | (int)r0.x;
//   r2.xyzw = float4(1,1,1,1) + -abs(r1.yxwz);
//   r3.xyzw = cmp(r1.xyzw >= float4(0,0,0,0));
//   r2.xyzw = r3.xyzw ? r2.xyzw : -r2.xyzw;
//   r0.y = dot(float2(1,1), abs(r1.xy));
//   r3.z = 1 + -r0.y;
//   r0.y = cmp(r3.z < 0);
//   r3.xy = r0.yy ? r2.xy : r1.xy;
//   r0.y = dot(r3.xyz, r3.xyz);
//   r0.y = rsqrt(r0.y);
//   r1.xy = r3.xy * r0.yy;
//   r2.x = -r3.x * r0.y + -r1.y;
//   r3.xy = r3.xy * r0.yy + -r1.yx;
//   r1.x = r1.x + r1.y;
//   r1.x = r3.z * r0.y + r1.x;
//   r1.x = cmp(0 < r1.x);
//   r1.x = r1.x ? 64 : 128;
//   r3.xy = r3.zz * r0.yy + r3.xy;
//   r0.y = r3.z * r0.y + r2.x;
//   r0.y = cmp(0 < r0.y);
//   r0.y = r0.y ? 1 : 2;
//   r2.xy = cmp(float2(0,0) < r3.xy);
//   r2.xy = r2.xy ? float2(4,16) : float2(8,32);
//   r0.y = (int)r0.y + (int)r2.x;
//   r0.y = (int)r0.y + (int)r2.y;
//   r0.y = (int)r0.y + (int)r1.x;
//   r0.y = r0.z ? r0.y : 0;
//   r0.x = (int)r0.y | (int)r0.x;
//   r0.y = dot(float2(1,1), abs(r1.zw));
//   r3.z = 1 + -r0.y;
//   r0.y = cmp(r3.z < 0);
//   r3.xy = r0.yy ? r2.zw : r1.zw;
//   r0.y = dot(r3.xyz, r3.xyz);
//   r0.y = rsqrt(r0.y);
//   r1.xy = r3.xy * r0.yy;
//   r0.z = -r3.x * r0.y + -r1.y;
//   r1.zw = r3.xy * r0.yy + -r1.yx;
//   r1.x = r1.x + r1.y;
//   r1.x = r3.z * r0.y + r1.x;
//   r1.x = cmp(0 < r1.x);
//   r1.yz = r3.zz * r0.yy + r1.zw;
//   r0.y = r3.z * r0.y + r0.z;
//   r0.y = cmp(0 < r0.y);
//   r0.y = r0.y ? 1 : 2;
//   r1.yz = cmp(float2(0,0) < r1.yz);
//   r1.xyz = r1.xyz ? float3(64,4,16) : float3(128,8,32);
//   r0.y = (int)r0.y + (int)r1.y;
//   r0.y = (int)r0.y + (int)r1.z;
//   r0.y = (int)r0.y + (int)r1.x;
//   r0.y = r0.w ? r0.y : 0;
//   r0.x = (int)r0.y | (int)r0.x;
// // No code for instruction (needs manual fix):
// store_uav_typed u0.xyzw, vThreadID.xyyy, r0.xxxx
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// F:\SteamLibrary\steamapps\common\Days Gone\BendGame\Binaries\Win64\ShaderFixes\75420e993bc6ed6d-cs_replace.txt(20,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
