//Temporal effect on grass.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Sat May 22 10:50:20 2021
//
//
// 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[13], immediateIndexed
dcl_constantbuffer cb1[60], immediateIndexed
dcl_constantbuffer cb2[45], immediateIndexed
dcl_constantbuffer cb3[13], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (uint,uint,uint,uint) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (uint,uint,uint,uint) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_uav_typed_texture2d (float,float,float,float) u0
dcl_uav_typed_texture2d (uint,uint,uint,uint) u1
dcl_uav_typed_texture2d (uint,uint,uint,uint) u2
dcl_input vThreadGroupID.xy
dcl_input vThreadIDInGroup.xy
dcl_input vThreadID.xy
dcl_temps 40
dcl_resource_texture2d (float,float,float,float) t125
dcl_tgsm_structured g0, 120, 10
dcl_thread_group 8, 8, 1

ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
ld_indexable(texture2d)(float,float,float,float) r26.xyzw, l(2, 0, 0, 0), t125.xyzw
dcl_resource_texture1d (float,float,float,float) t120
ld_indexable(texture1d)(float,float,float,float) r35.xyzw, l(10, 0, 0, 0), t120.xyzw

iadd r0.xy, vThreadID.xyxx, cb0[7].xyxx
ishl r1.xy, vThreadGroupID.xyxx, l(3, 3, 0, 0)
iadd r1.xy, r1.xyxx, cb0[7].xyxx
iadd r1.xy, r1.xyxx, l(-1, -1, 0, 0)
iadd r1.zw, vThreadIDInGroup.xxxy, r1.xxxy
iadd r2.xy, r1.zwzz, l(1, 1, 0, 0)
mov r2.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r1.zw, r2.xyww, t3.zwxy
ld_indexable(texture2d)(float,float,float,float) r2.z, r2.xyzw, t1.yzxw
lt r2.w, l(0.000000), r1.z
ine r3.xy, cb0[5].yzyy, l(0, 0, 0, 0)
not r3.zw, r3.xxxy
and r4.x, r3.w, r3.z
and r2.w, r2.w, r4.x
itof r2.xy, r2.xyxx
mad r2.xy, r2.xyxx, cb0[8].xyxx, cb0[8].zwzz
max r4.y, r2.z, l(9.999999960E-012)

//64 if temporal AO is skipped.
mul r25.w, r4.y, l(-32.0)
mad r2.x, r25.x, r25.w, r2.x

mul r5.xyzw, r2.yyyy, cb0[10].xyzw
mad r5.xyzw, r2.xxxx, cb0[9].xyzw, r5.xyzw
mad r5.xyzw, r4.yyyy, cb0[11].xyzw, r5.xyzw
add r5.xyzw, r5.xyzw, cb0[12].xyzw
div r5.xyzw, r5.xyzw, r5.wwww
add r2.xy, -r2.xyxx, r5.xyxx
lt r4.y, l(0.000000), r5.w
and r4.y, r3.z, r4.y
movc r2.xy, r4.yyyy, r2.xyxx, l(-1000.000000,-1000.000000,0,0)
mad r4.y, r1.w, l(65535.000000), l(0.500000)
ftoi r4.y, r4.y
and r4.yz, r4.yyyy, l(0, 1, -2, 0)
ieq r4.y, r4.y, l(1)
and r4.y, r2.w, r4.y
utof r4.z, r4.z
add r1.w, r4.z, l(-0.500000)
mad r1.zw, r1.zzzw, l(0.000000, 0.000000, 4.008016, 0.0000611584037), l(0.000000, 0.000000, -2.00397754, -2.00397754)
movc r6.xy, r2.wwww, -r1.zwzz, r2.xyxx
movc r6.z, r4.y, -r2.z, r2.z
iadd r1.zw, vThreadIDInGroup.xxxy, l(0, 0, 1, 1)
imul null, r2.x, vThreadIDInGroup.y, l(12)
imad r2.y, vThreadIDInGroup.y, l(12), l(12)
store_structured g0.xyz, r1.z, r2.y, r6.xyzx
and r4.zw, vThreadIDInGroup.xxxy, l(0, 0, 1, 1)
movc r6.yz, r4.zzwz, l(0,9,9,0), l(0,0,0,0)
ige r4.zw, vThreadIDInGroup.xxxx, l(0, 0, 4, 6)
movc r6.x, r4.z, r1.w, r6.z
movc r4.zw, r4.wwww, r6.xxxy, r6.yyyx
iadd r6.xy, r4.zwzz, r1.xyxx
mov r6.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r1.xy, r6.xyww, t3.xyzw
ld_indexable(texture2d)(float,float,float,float) r1.w, r6.xyzw, t1.yzwx
lt r5.x, l(0.000000), r1.x
and r4.x, r4.x, r5.x
itof r5.xy, r6.xyxx
mad r5.xy, r5.xyxx, cb0[8].xyxx, cb0[8].zwzz
max r5.w, r1.w, l(9.999999960E-012)

mul r25.w, r5.w, l(-32.0)
mad r5.x, r25.x, r25.w, r5.x

mul r6.xyz, r5.yyyy, cb0[10].xywx
mad r6.xyz, r5.xxxx, cb0[9].xywx, r6.xyzx
mad r6.xyz, r5.wwww, cb0[11].xywx, r6.xyzx
add r6.xyz, r6.xyzx, cb0[12].xywx
div r6.xyz, r6.xyzx, r6.zzzz
add r5.xy, -r5.xyxx, r6.xyxx
lt r5.w, l(0.000000), r6.z
and r3.z, r3.z, r5.w
movc r5.xy, r3.zzzz, r5.xyxx, l(-1000.000000,-1000.000000,0,0)
mad r3.z, r1.y, l(65535.000000), l(0.500000)
ftoi r3.z, r3.z
and r6.xy, r3.zzzz, l(1, -2, 0, 0)
ieq r3.z, r6.x, l(1)
and r3.z, r3.z, r4.x
utof r5.w, r6.y
add r1.y, r5.w, l(-0.500000)
mad r1.xy, r1.xyxx, l(4.008016, 0.0000611584037, 0.000000, 0.000000), l(-2.00397754, -2.00397754, 0.000000, 0.000000)
movc r6.xy, r4.xxxx, -r1.xyxx, r5.xyxx
movc r6.z, r3.z, -r1.w, r1.w
imul null, r1.x, r4.w, l(12)
store_structured g0.xyz, r4.z, r1.x, r6.xyzx
sync_g_t
ige r1.xy, r0.xyxx, cb0[7].zwzz
or r1.x, r1.y, r1.x
if_nz r1.x
  ret
endif
movc r1.x, r4.y, r2.z, r5.z
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.z, r0.xyzw, t0.yzxw
imad r1.yw, vThreadIDInGroup.yyyy, l(0, 12, 0, 12), l(0, 20, 0, 24)
ld_structured r4.xyzw, r1.z, r1.y, g0.xyzw
mov r5.xy, |r4.xwxx|
ubfe r0.w, l(11), l(20), r0.z
utof r0.w, r0.w
mad r0.w, r0.w, l(0.00782013685), l(-8.000000)
mul r1.y, cb1[30].w, cb2[44].z
mul r1.y, r0.w, r1.y
mad r1.y, -r1.y, r5.x, l(1.000000)
div r1.y, r5.x, r1.y
mad r2.z, r0.w, cb2[44].w, l(1.000000)
mul r2.z, r2.z, r5.x
lt r0.w, l(0.000000), r0.w
max r3.z, r1.y, r2.z
min r1.y, r1.y, r2.z
movc r0.w, r0.w, r3.z, r1.y
sqrt r1.y, r0.w
bfi r2.z, l(1), l(2), r0.y, l(0)
bfi r2.z, l(1), l(1), r0.x, r2.z
bfi r3.z, l(2), l(3), cb3[12].y, l(0)
iadd r2.z, r2.z, r3.z
ushr r2.z, l(0x8739d26c), r2.z
and r2.z, r2.z, l(3)
utof r2.z, r2.z
add r2.z, r2.z, l(0.500000)
and r0.z, r0.z, l(0x80000000)
ine r0.z, r0.z, l(0)
and r3.z, r2.w, r0.z
not r2.w, r2.w
and r0.z, r0.z, r2.w
and r0.z, r3.w, r0.z
itof r6.xy, r0.xyxx
mad r6.xy, r6.xyxx, cb0[8].xyxx, cb0[8].zwzz
ld_structured r7.xyz, r1.z, r2.y, g0.xyzx
mul r7.w, r5.x, l(1.010000)
mad r2.w, r5.x, l(1.050000), l(0.000001)
lt r4.x, r7.z, l(0.000000)
and r4.x, r4.x, l(1)
ld_structured r8.xyz, vThreadIDInGroup.x, r2.x, g0.xyzx
lt r5.x, r8.z, l(0.000000)
and r5.x, r5.x, l(1)
iadd r4.x, r4.x, r5.x
mov r8.w, |r8.z|
lt r5.x, r7.w, r8.w
movc r7.xyw, r5.xxxx, r8.xyxw, r7.xyxw
max r5.x, |r7.z|, r8.w
lt r6.z, r2.w, r8.w
and r6.z, r6.z, l(1)
ld_structured r8.xyz, r1.z, r2.x, g0.xyzx
lt r1.z, r8.z, l(0.000000)
and r1.z, r1.z, l(1)
iadd r1.z, r4.x, r1.z
mov r8.w, |r8.z|
lt r4.x, r7.w, r8.w
movc r7.xyz, r4.xxxx, r8.xywx, r7.xywx
max r4.x, r5.x, r8.w
lt r5.x, r2.w, r8.w
and r5.x, r5.x, l(1)
iadd r5.x, r6.z, r5.x
iadd r6.z, vThreadIDInGroup.x, l(2)
ld_structured r8.xyz, r6.z, r2.x, g0.xyzx
lt r2.x, r8.z, l(0.000000)
and r2.x, r2.x, l(1)
iadd r1.z, r1.z, r2.x
mov r8.w, |r8.z|
lt r2.x, r7.z, r8.w
movc r7.xyz, r2.xxxx, r8.xywx, r7.xyzx
max r2.x, r4.x, r8.w
lt r4.x, r2.w, r8.w
and r4.x, r4.x, l(1)
iadd r4.x, r5.x, r4.x
ld_structured r8.xyz, vThreadIDInGroup.x, r2.y, g0.xyzx
lt r5.x, r8.z, l(0.000000)
and r5.x, r5.x, l(1)
iadd r1.z, r1.z, r5.x
mov r8.w, |r8.z|
lt r5.x, r7.z, r8.w
movc r7.xyz, r5.xxxx, r8.xywx, r7.xyzx
max r2.x, r2.x, r8.w
lt r5.x, r2.w, r8.w
and r5.x, r5.x, l(1)
iadd r4.x, r4.x, r5.x
ld_structured r8.xyz, r6.z, r2.y, g0.xyzx
lt r2.y, r8.z, l(0.000000)
and r2.y, r2.y, l(1)
iadd r1.z, r1.z, r2.y
mov r8.w, |r8.z|
lt r2.y, r7.z, r8.w
movc r7.xyz, r2.yyyy, r8.xywx, r7.xyzx
max r2.x, r2.x, r8.w
lt r2.y, r2.w, r8.w
and r2.y, r2.y, l(1)
iadd r2.y, r4.x, r2.y
ld_structured r8.xyz, vThreadIDInGroup.x, r1.w, g0.xyzx
lt r4.x, r8.z, l(0.000000)
and r4.x, r4.x, l(1)
iadd r1.z, r1.z, r4.x
mov r8.w, |r8.z|
lt r4.x, r7.z, r8.w
movc r7.xyz, r4.xxxx, r8.xywx, r7.xyzx
max r2.x, r2.x, r8.w
lt r4.x, r2.w, r8.w
and r4.x, r4.x, l(1)
iadd r2.y, r2.y, r4.x
lt r4.x, r4.w, l(0.000000)
and r4.x, r4.x, l(1)
iadd r1.z, r1.z, r4.x
lt r4.x, r7.z, r5.y
mov r5.zw, r4.yyyz
movc r4.xyz, r4.xxxx, r5.zwyz, r7.xyzx
max r2.x, r5.y, r2.x
lt r4.w, r2.w, r5.y
and r4.w, r4.w, l(1)
iadd r2.y, r2.y, r4.w
ld_structured r5.xyz, r6.z, r1.w, g0.xyzx
lt r1.w, r5.z, l(0.000000)
and r1.w, r1.w, l(1)
iadd r1.z, r1.z, r1.w
lt r1.w, r4.z, |r5.z|
movc r4.xy, r1.wwww, r5.xyxx, r4.xyxx
max r1.w, r2.x, |r5.z|
lt r2.x, r2.w, |r5.z|
and r2.x, r2.x, l(1)
iadd r2.x, r2.y, r2.x
sqrt r2.y, r1.w
mov_sat r2.w, r2.y
dp2 r4.z, r4.xyxx, r4.xyxx
mul r4.w, r1.w, l(0.000010)
lt r4.z, r4.z, r4.w
ieq r4.w, r1.z, l(0)
mad r2.w, r2.w, l(16383.000000), l(0.500000)
ftou r2.w, r2.w
movc r5.xy, r1.zzzz, l(0,128.000000,0,0), l(1,1024.000000,0,0)
and r1.z, r4.z, l(2)
iadd r1.z, r5.x, r1.z
imad r1.z, r2.w, l(4), r1.z
ieq r2.w, cb0[5].w, l(0)
and r2.w, r2.w, r3.y
movc r2.w, r2.w, l(0), l(1.000000)
mad r4.xy, r4.xyxx, r2.wwww, r6.xyxx
add r5.xz, cb0[0].xxyx, l(-1.000000, 0.000000, -1.000000, 0.000000)
add r5.xz, r5.xxzx, -cb0[1].zzwz
ge r5.xz, r4.xxyx, r5.xxzx
add r6.zw, -cb0[0].xxxy, cb0[1].zzzw
add r6.zw, r6.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000)
ge r6.zw, r6.zzzw, r4.xxxy
and r5.xz, r5.xxzx, r6.zzwz
and r2.w, r5.z, r5.x
ieq r3.x, r3.x, l(0)
and r2.w, r2.w, r3.x
mad r6.yz, r6.xxyx, cb1[52].xxyx, cb1[52].wwzw
mad r3.xy, r4.xyxx, cb0[2].xyxx, cb0[2].wzww
mul r4.xy, cb0[2].xyxx, cb1[59].xyxx
mad r4.xy, cb1[26].xyxx, cb1[52].xyxx, -r4.xyxx
add r4.xy, r3.xyxx, -r4.xyxx
gather4_indexable(texture2d)(uint,uint,uint,uint) r7.xyzw, r4.xyxx, t2.xyzw, s0.x
ushr r8.xyzw, r7.xyzw, l(2, 2, 2, 2)
utof r8.xyzw, r8.xyzw
mul r9.xyzw, r8.xyzw, l(0.0000610388815, 0.0000610388815, 0.0000610388815, 0.0000610388815)
and r10.xyzw, r7.xyzw, l(1, 1, 1, 1)
ieq r10.xyzw, r10.xyzw, l(1, 1, 1, 1)
and r7.xyzw, r7.xyzw, l(2, 2, 2, 2)
ieq r7.xyzw, r7.xyzw, l(2, 2, 2, 2)
sqrt r1.x, r1.x
mad r11.xyzw, r8.xyzw, l(0.0000610388815, 0.0000610388815, 0.0000610388815, 0.0000610388815), -r1.xxxx
mul r11.xyzw, r5.yyyy, |r11.xyzw|
mad r8.xyzw, -r8.xyzw, l(0.0000610388815, 0.0000610388815, 0.0000610388815, 0.0000610388815), r2.yyyy
min r8.xyzw, r8.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r5.xyzw, r5.yyyy, -r8.xyzw
min r5.xyzw, r5.xyzw, r11.xyzw
max r4.xy, r9.ywyy, r9.xzxx
max r1.x, r4.y, r4.x
mul r1.x, r1.x, r1.x
lt r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000), r5.xyzw
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1,1,1,1)
iadd r2.y, r5.x, r5.y
iadd r2.y, r2.y, r5.z
iadd r2.y, r2.y, r5.w
and r4.xy, r7.zwzz, r7.xyxx
and r4.x, r4.y, r4.x
and r4.x, r4.x, r4.z
ieq r5.xyzw, r10.xyzw, l(0, 0, 0, 0)
or r4.yz, r5.zzwz, r5.xxyx
or r4.y, r4.z, r4.y
and r4.y, r4.y, r4.w
and r3.w, r3.w, r4.y
movc r2.y, r3.w, l(0), r2.y
iadd r2.y, r2.y, -r4.x
lt r4.yz, cb0[3].xxzx, r0.wwww
ieq r3.w, r2.y, l(4)
and r4.y, r3.w, r4.y
lt r5.x, r0.w, cb0[3].w
or r4.z, r4.z, r5.x
and r3.w, r3.w, r4.z
uge r2.x, r2.x, l(5)
and r2.x, r2.x, r4.x
and r4.x, r2.x, l(1)
and r4.z, r3.z, l(1)
or r4.x, r4.z, r4.x
movc r2.y, r4.x, l(4), r2.y
ine r4.x, cb0[4].w, l(0)
or r4.x, r4.x, r4.w
mad r4.zw, r2.zzzz, l(0.000000, 0.000000, 0.125000, 0.250000), l(0.000000, 0.000000, 1.000000, 1.000000)
mul r2.z, r1.w, r4.z
lt r2.z, cb0[4].x, r2.z
not r4.z, r4.y
and r3.w, r3.w, r4.z
or r3.w, r2.z, r3.w
lt r4.z, r1.w, cb0[4].y
lt r1.x, r1.x, cb0[4].y
and r1.x, r1.x, r4.z
or r1.x, r1.x, r3.w
ge r1.w, r1.w, cb0[4].z
ine r3.w, cb0[5].x, l(0)
or r1.w, r1.w, r3.w
and r1.x, r1.w, r1.x
and r1.x, r4.x, r1.x
or r1.x, r1.x, r2.x
ieq r1.w, r2.y, l(0)
or r1.x, r1.w, r1.x
div r1.w, cb0[2].x, cb1[52].x
and r3.w, r2.z, l(1)
movc r4.z, cb0[6].x, l(1), l(0)
or r3.w, r3.w, r4.z
lt r0.w, r0.w, l(0.000001)
and r2.z, r4.x, r2.z
or r0.w, r0.w, r2.z
ine r2.z, cb0[6].x, l(0)
or r0.w, r0.w, r2.z
or r0.w, r2.x, r0.w
or r0.w, r3.z, r0.w
or r0.w, r4.y, r0.w
mul r6.x, r1.w, r6.y
add r2.xz, -r6.xxzx, r3.xxyx
mul r3.xy, r2.xzxx, l(4.000000, 4.000000, 0.000000, 0.000000)
mad_sat r2.xz, r2.xxzx, l(4.000000, 0.000000, 4.000000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000)
mad r3.xy, r3.xyxx, r4.wwww, l(0.500000, 0.500000, 0.000000, 0.000000)
mov_sat r4.xy, r3.xyxx
eq r3.xy, r3.xyxx, r4.xyxx
and r1.w, r3.y, r3.x
and r1.w, r2.w, r1.w
and r1.w, r1.w, l(1)
mad r2.xz, r2.xxzx, cb2[10].xxyx, l(0.500000, 0.000000, 0.500000, 0.000000)
ftou r2.xz, r2.xxzx
ishl r2.z, r2.z, l(14)
or r2.x, r2.z, r2.x
and r1.x, r1.x, l(0x10000000)
or r1.x, r1.x, r2.x
and r0.w, r0.w, l(0x20000000)
or r0.w, r0.w, r1.x
umin r1.x, r2.y, l(3)
ishl r1.x, r1.x, l(30)
movc r1.x, r3.w, l(-2.000000), r1.x
movc r0.z, r0.z, l(0), r1.x
or r0.z, r0.z, r0.w
movc r0.z, r1.w, r0.z, l(0)
store_uav_typed u0.xyzw, r0.xyyy, r1.yyyy
store_uav_typed u1.xyzw, r0.xyyy, r0.zzzz
store_uav_typed u2.xyzw, r0.xyyy, r1.zzzz
ret
// Approximately 0 instruction slots used
