//Volumetric lighting CS 1.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Sat May 22 09:37:41 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[5], immediateIndexed
dcl_constantbuffer cb1[52], immediateIndexed
dcl_constantbuffer cb2[45], immediateIndexed
dcl_constantbuffer cb3[60], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2darray (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture3d (float,float,float,float) t7
dcl_resource_texture3d (float,float,float,float) t8
dcl_uav_typed_texture3d (float,float,float,float) u0
dcl_input vThreadID.xyz
dcl_temps 40
dcl_resource_texture2d (float,float,float,float) t125
dcl_thread_group 8, 8, 1
ld_indexable(texture2d)(float,float,float,float) r0.x, vThreadID.xyzz, t5.xyzw

ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw

max r0.x, r0.x, cb0[4].z
mad r0.y, r0.x, cb1[51].z, -cb1[51].w
div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y
utof r0.zw, vThreadID.xxxy
add r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
mul r1.xy, r0.zwzz, cb0[0].xyxx
mad r0.zw, r1.xxxy, l(0.000000, 0.000000, 2.000000, -2.000000), l(0.000000, 0.000000, -1.000000, 1.000000)


mul r22.xyzw, r0.wwww, cb1[33].xyzw
mad r22.xyzw, r0.zzzz, cb1[32].xyzw, r22.xyzw
mad r22.xyzw, r0.xxxx, cb1[34].xyzw, r22.xyzw
add r22.xyzw, r22.xyzw, cb1[35].xyzw

add r0.z, -r25.x, r0.z

mul r32.xyzw, r0.wwww, cb1[33].xyzw
mad r32.xyzw, r0.zzzz, cb1[32].xyzw, r32.xyzw
mad r32.xyzw, r0.xxxx, cb1[34].xyzw, r32.xyzw
add r32.xyzw, r32.xyzw, cb1[35].xyzw

mul r25.w, r22.w, r25.y
mad r0.z, r25.x, r25.w, r0.z

mul r2.xyzw, r0.wwww, cb1[33].xyzw
mad r2.xyzw, r0.zzzz, cb1[32].xyzw, r2.xyzw
mad r2.xyzw, r0.xxxx, cb1[34].xyzw, r2.xyzw
add r2.xyzw, r2.xyzw, cb1[35].xyzw
div r0.xzw, r2.xxyz, r2.wwww
dp3 r1.w, r0.xzwx, r0.xzwx
sqrt r1.w, r1.w
div r0.xzw, r0.xxzw, r1.wwww
div r0.y, r1.w, r0.y
mul r0.y, r0.y, cb0[4].y
bfi r2.x, l(1), l(2), vThreadID.y, l(0)
bfi r2.x, l(1), l(1), vThreadID.x, r2.x
bfi r2.y, l(2), l(3), cb3[12].y, l(0)
iadd r2.x, r2.x, r2.y
ushr r2.x, l(0x8739d26c), r2.x
and r2.x, r2.x, l(3)
utof r2.x, r2.x
div_sat r2.y, r1.w, r0.y
dp3 r2.z, r0.xzwx, cb2[32].xyzx
add r2.xw, r2.xxxz, l(0.500000, 0.000000, 0.000000, 1.250000)
log r2.w, r2.w
mul r2.w, r2.w, l(-1.500000)
exp r2.w, r2.w
mul r2.w, r2.w, l(0.238732412)
add r3.xyz, -cb0[1].xyzx, cb0[2].xyzx
mad r3.xyz, -r2.zzzz, r3.xyzx, cb0[1].xyzx
mul r3.xyz, r2.wwww, r3.xyzx
mul r3.xyz, r3.xyzx, cb2[33].xyzx
mul r3.xyz, r3.xyzx, cb2[43].yyyy
min r0.y, r0.y, r1.w
mul r4.xyz, r0.yyyy, r0.xzwx

//mul r26.x, r25.y, cb1[32].x
//mul r26.y, r25.y, cb1[32].y
//mul r26.z, r25.y, cb1[32].z
////div r26.xyz, r26.xyzx, r1.wwww
//mad r4.xyz, r25.xxxx, r26.xyzx, r4.xyzx

mul r5.xyz, r4.yyyy, cb2[29].xyzx
mad r5.xyz, r4.xxxx, cb2[28].xyzx, r5.xyzx
mad r5.xyz, r4.zzzz, cb2[30].xyzx, r5.xyzx
div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb2[19].w
mad r6.xyz, cb2[21].xyzx, r1.wwww, cb2[22].xyzx
mad r6.xyz, r6.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)

dp3 r7.x, r4.xyzx, cb2[18].xyzx
dp3 r7.y, r4.xyzx, cb2[19].xyzx
dp3 r7.z, r4.xyzx, cb2[20].xyzx
add r4.xyz, r7.xyzx, cb2[21].xyzx
mad r4.xyz, r4.xyzx, r1.wwww, cb2[22].xyzx
mad r4.xyz, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
add r4.xyz, -r6.xyzx, r4.xyzx
add r1.w, r0.y, l(-5000.000000)
mul r7.xyz, r0.xzwx, l(5000.000000, 5000.000000, 5000.000000, 0.000000)
dp3 r2.z, r7.xyzx, r7.xyzx
sqrt r2.z, r2.z
add r1.w, r1.w, r2.z
mad r1.w, r1.w, l(0.000010), -cb2[44].x
mul r2.w, r1.w, cb3[47].x
ge r3.w, l(0.000000), r2.w
if_nz r3.w
  mov r8.xyz, l(0,0,0,0)
  mov r4.w, l(1.000000)
endif
if_z r3.w
  div r3.w, r7.z, r2.z
  mul r2.z, r2.z, l(0.000010)
  mad r5.w, r0.w, l(0.050000), cb3[52].z
  add r5.w, r5.w, -cb3[46].z
  mul r6.w, r5.w, cb3[47].y
  mad r5.w, r5.w, cb3[47].y, -cb3[52].x
  lt r5.w, l(0.000010), |r5.w|
  add r7.z, cb3[52].x, l(0.000010)
  movc r5.w, r5.w, r6.w, r7.z
  exp r6.w, -r5.w
  add r5.w, r5.w, -cb3[52].x
  add r6.w, -r6.w, cb3[52].y
  div r5.w, |r6.w|, |r5.w|
  mul r2.w, r2.w, r2.w
  mad r1.w, r1.w, cb3[47].x, -r2.w
  mad r1.w, cb3[51].w, r1.w, r2.w
  mul r2.w, r5.w, -r1.w
  exp r5.w, r2.w
  mul r1.w, -r1.w, cb3[48].x
  exp r1.w, r1.w
  min r6.w, |r7.y|, |r7.x|
  max r7.z, |r7.y|, |r7.x|
  div r7.z, l(1.000000, 1.000000, 1.000000, 1.000000), r7.z
  mul r6.w, r6.w, r7.z
  mul r7.z, r6.w, r6.w
  mad r7.w, r7.z, l(0.0208350997), l(-0.085133)
  mad r7.w, r7.z, r7.w, l(0.180141)
  mad r7.w, r7.z, r7.w, l(-0.330299497)
  mad r7.z, r7.z, r7.w, l(0.999866)
  mul r7.w, r6.w, r7.z
  lt r8.w, |r7.y|, |r7.x|
  mad r7.w, r7.w, l(-2.000000), l(1.57079637)
  and r7.w, r8.w, r7.w
  mad r6.w, r6.w, r7.z, r7.w
  lt r7.z, -r7.y, r7.y
  and r7.z, r7.z, l(0xc0490fdb)
  add r6.w, r6.w, r7.z
  min r7.z, -r7.y, r7.x
  max r7.x, -r7.y, r7.x
  lt r7.y, r7.z, -r7.z
  ge r7.x, r7.x, -r7.x
  and r7.x, r7.x, r7.y
  movc r6.w, r7.x, -r6.w, r6.w
  mad r7.x, r6.w, l(-0.159154937), l(0.500000)
  add r6.w, -|r3.w|, l(1.000000)
  sqrt r6.w, r6.w
  mad r7.z, |r3.w|, l(-0.0187292993), l(0.074261)
  mad r7.z, r7.z, |r3.w|, l(-0.212114394)
  mad r7.z, r7.z, |r3.w|, l(1.57072878)
  mul r7.w, r6.w, r7.z
  mad r7.w, r7.w, l(-2.000000), l(3.14159274)
  lt r3.w, -r3.w, r3.w
  and r3.w, r3.w, r7.w
  mad r3.w, r7.z, r6.w, r3.w
  add r3.w, -r3.w, l(1.57079637)
  mad r7.y, r3.w, l(0.318309873), l(0.500000)
  mul r2.z, r2.z, -cb3[52].w
  exp r2.z, r2.z
  mad r2.z, r2.z, cb3[59].y, cb3[59].x
  sample_l_indexable(texture2d)(float,float,float,float) r7.xyz, r7.xyxx, t1.xyzw, s4, r2.z
  add r2.z, -r1.w, l(1.000000)
  mul r2.z, r5.w, r2.z
  mul r9.x, r2.z, cb3[31].w
  mul r9.y, r2.z, cb3[32].w
  mul r9.z, r2.z, cb3[33].w
  mad r7.xyz, r7.xyzx, cb2[43].wwww, r9.xyzx
  mul r4.w, r1.w, r5.w
  mul r9.xyz, r2.wwww, cb3[51].xyzx
  exp r9.xyz, r9.xyzx
  mul r8.xyz, r7.xyzx, r9.xyzx
endif
mul r1.w, cb2[44].x, l(100000.000000)
div_sat r1.w, r1.w, r0.y
mul r2.z, r1.w, l(32.000000)
lt r2.w, r1.w, l(1.000000)
add r1.w, -r1.w, l(1.000000)
div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w
and r1.w, r1.w, r2.w
log r2.w, r4.w
mul r1.w, r1.w, r2.w
mul r1.w, r1.w, l(0.031250)
exp r1.w, r1.w
add r1.w, -r1.w, l(1.000000)
mul r2.w, cb2[43].y, l(0.500000)
mul r7.xyz, r2.wwww, r8.xyzx



mul r2.w, r2.x, l(-0.00390625000)
add r3.w, -cb3[59].z, l(1.000000)
mul r4.w, cb2[34].z, cb2[34].z
mov r8.xy, vThreadID.xyxx
mov r9.w, l(1.000000)
mov r10.w, l(0)
mov r11.w, l(2.000000)
mov r12.w, l(1.000000)
mov r13.xyzw, l(0,0,0,0)
mov r5.w, r2.w
mov r6.w, l(0)
mov r7.w, l(0)

//mad r8.x, r25.x, r25.y, r8.x

loop
  ige r9.x, r7.w, l(32)
  breakc_nz r9.x
  mad r9.x, r2.x, l(0.00390625000), r5.w
  mul r9.x, r0.y, r9.x
  
  
  
  mul r14.xy, r0.xzxx, r9.xxxx
  
  
  
  mad r14.xy, r14.xyxx, cb2[0].xyxx, -cb2[1].xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r14.xyzw, r14.xyxx, t6.xyzw, s0, l(0.000000)
  mad r11.x, -r0.w, r9.x, cb2[1].z
  mad r11.x, r14.z, cb2[0].z, r11.x
  mul_sat r11.x, r11.x, l(0.000976562500)
  mul r14.z, r14.w, r14.w
  mad r11.x, r11.x, r14.y, r14.z
  mul r11.x, r11.x, l(0.000976562500)
  mad r9.x, r9.x, cb3[59].w, l(1.000000)
  div r9.x, cb3[59].z, r9.x
  add_sat r9.x, r3.w, r9.x
  mov r15.xyzw, r13.xyzw
  mov r14.y, r5.w
  mov r14.z, r6.w
  mov r14.w, l(0)
  mov r16.x, l(0)
  loop
    ige r16.y, r16.x, l(2)
    breakc_nz r16.y
    add r14.y, r14.y, l(0.015625)
    mul r16.y, r0.y, r14.y
    mad r10.xyz, r5.zxyz, r14.yyyy, cb2[31].zxyz
    mad r12.xyz, r4.xyzx, r14.yyyy, r6.xyzx
    mul r16.zw, r0.xxxz, r16.yyyy
    mad r16.zw, r16.zzzw, cb2[0].xxxy, -cb2[1].xxxy
    sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r16.zwzz, t0.xyzw, s0, l(0.000000)
    mad r16.zw, r17.yyyx, cb2[0].zzzz, cb2[1].zzzz
    mad r16.zw, r0.wwww, r16.yyyy, -r16.zzzw
    mad_sat r16.w, r16.w, cb2[0].w, l(1.000000)
    mad_sat r17.x, |r16.z|, l(0.000156249997), r17.w
    mul r16.w, r17.z, r16.w
    mad r16.z, r16.z, cb0[3].z, cb0[3].y
    exp r16.z, r16.z
    min r16.z, r16.z, l(1.000000)
    mad r17.y, -r2.y, r14.y, l(1.000000)
    mad r1.z, -r17.y, |r17.y|, l(1.000000)
    sample_l_indexable(texture3d)(float,float,float,float) r17.yzw, r1.xyzx, t7.wxyz, s0, l(0.000000)
    sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r1.xyzx, t8.xyzw, s1, l(0.000000)
    mad r18.xyzw, r18.xyzw, l(2.007874, 2.007874, 2.007874, 2.007874), l(-1.000000, -1.000000, -1.000000, -1.000000)
    lt r1.z, r18.w, l(0.000000)
    dp3 r19.x, r18.xyzx, r0.xzwx
    add r19.x, r19.x, l(1.000000)
    mad r19.x, r19.x, r19.x, l(-1.000000)
    dp3 r18.x, r18.xyzx, r18.xyzx
    min r18.x, r18.x, l(1.000000)
    mad r18.x, -r18.x, l(0.500000), l(1.000000)
    mul r18.xw, r18.xxxw, r18.xxxw
    mul r18.x, r18.x, cb2[43].y
    mul r17.yzw, r17.yyzw, r18.xxxx
    mad r18.xyz, cb0[2].xyzx, r19.xxxx, cb0[1].xyzx
    and r1.z, r16.w, r1.z
    mov_sat r19.xy, r10.yzyy
    eq r19.xy, r10.yzyy, r19.xyxx
    and r16.w, r19.y, r19.x
    add r19.xy, r10.yzyy, -cb2[34].xyxx
    add r19.zw, r10.yyyz, -cb2[35].xxxy
    max r20.xy, |r19.ywyy|, |r19.xzxx|
    mad r9.yz, r19.xxyx, cb2[34].zzzz, l(0.000000, 1.500000, 0.500000, 0.000000)
    mad r11.yz, r19.zzwz, r4.wwww, l(0.000000, 2.500000, 0.500000, 0.000000)
    lt r19.x, r20.x, cb2[34].w
    movc r19.xyz, r19.xxxx, r9.yzwy, r10.yzwy
    lt r9.y, r20.y, cb2[35].w
    movc r19.yzw, r9.yyyy, r11.yyzw, r19.xxyz
    mul r19.x, r19.y, cb2[35].z
    sample_l_indexable(texture2d)(float,float,float,float) r9.yz, r19.xzxx, t3.zxyw, s2, l(0.000000)
    lt r9.z, r10.x, r9.z
    lt r9.y, r9.y, r10.x
    and r9.z, r9.y, r9.z
    lt r10.y, l(0.000000), r1.z
    and r9.z, r9.z, r10.y
    if_nz r9.z
      eq r9.z, r19.w, l(0.000000)
      movc r10.y, r9.z, l(1.000000), cb2[34].z
      ne r10.z, r19.w, l(2.000000)
      or r9.z, r9.z, r10.z
      movc r9.z, r9.z, l(1.000000), cb2[34].z
      mul r9.z, r9.z, r10.y
      mul r10.y, r19.x, l(3.000000)
      frc r10.y, r10.y
      mul r10.z, r5.x, r9.z
      mul r11.y, r10.z, l(0.046875)
      mad_sat r10.z, r10.z, l(0.046875), r10.y
      add r10.y, -r10.y, r10.z
      div r10.y, r10.y, r11.y
      mul r9.z, r9.z, r10.y
      mul r9.z, r9.z, l(0.00260416674)
      mov r20.xy, r19.xzxx
      mov r20.z, r10.x
      mov r10.yz, l(0,0,0,0)
      loop
        ige r11.y, r10.z, l(6)
        breakc_nz r11.y
        sample_l_indexable(texture2d)(float,float,float,float) r11.y, r20.xyxx, t2.yxzw, s1, l(0.000000)
        add r11.y, -r20.z, r11.y
        mul_sat r11.y, r11.y, l(128.000000)
        add r10.y, r10.y, r11.y
        mad r20.xyz, r5.xyzx, r9.zzzz, r20.xyzx
        iadd r10.z, r10.z, l(1)
      endloop
      mov r10.x, r20.z
      mul r9.z, r10.y, l(0.166666672)
    else
      movc r9.z, r9.y, l(0), l(1.000000)
    endif
    lt r9.y, r10.x, l(1.000000)
    and r9.y, r9.y, r16.w
    movc r9.y, r9.y, r9.z, l(1.000000)
    mul r1.z, r1.z, r9.y
    sample_l_indexable(texture2darray)(float,float,float,float) r19.xyzw, r12.xywx, t4.xyzw, s3, l(0.000000)
    add r9.yz, -r12.zzzz, r19.xxyx
    mul_sat r9.yz, r9.yyzy, l(0.000000, 256.000000, 16.000000, 0.000000)
    mad r9.y, -r9.y, r19.z, l(1.000000)
    add r10.x, -r19.w, l(1.000000)
    add r10.x, -r9.y, r10.x
    mad r9.y, r9.z, r10.x, r9.y
    mul r1.z, r1.z, r9.y
    mul r12.xyz, r1.zzzz, r3.xyzx
    mad r12.xyz, r17.yzwy, r18.xyzx, r12.xyzx
    add r1.z, -r17.x, l(1.000000)
    mul r1.z, r1.z, cb0[3].w
    mad r1.z, r16.z, cb0[3].x, r1.z
    mul_sat r9.y, r16.y, cb0[4].x
    mul r1.z, r1.z, r9.y
    mad r14.w, r18.w, r9.x, r14.w
    mad r9.y, -r0.y, r14.y, r14.z
    mad r1.z, r1.z, r14.x, r11.x
    mul r1.z, r1.z, r9.y
    exp r1.z, r1.z
    add r17.w, -r1.z, l(1.000000)
    mul r1.z, r9.x, r17.w
    mul r17.xyz, r1.zzzz, r12.xyzx
    add r1.z, -r15.w, l(1.000000)
    mad r15.xyzw, r17.xyzw, r1.zzzz, r15.xyzw
    iadd r16.x, r16.x, l(1)
    mov r14.z, r16.y
  endloop
  mov r5.w, r14.y
  mov r6.w, r14.z
  mad_sat r1.z, r5.w, l(32.000000), -r2.z
  add r9.x, -r15.w, l(1.000000)
  mul r9.x, r1.w, r9.x
  mul r16.w, r1.z, r9.x
  mul r1.z, r14.w, r16.w
  mul r16.xyz, r1.zzzz, r7.xyzx
  add r13.xyzw, r15.xyzw, r16.xyzw
  mov r8.zw, r7.wwww
  store_uav_typed u0.xyzw, r8.xyzw, r13.xyzw
  iadd r7.w, r7.w, l(1)
endloop
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Sat May 22 09:37:41 2021
// Texture3D<float4> t8 : register(t8);
//
// Texture3D<float4> t7 : register(t7);
//
// Texture2D<float4> t6 : register(t6);
//
// Texture2D<float4> t5 : register(t5);
//
// Texture2DArray<float4> t4 : register(t4);
//
// Texture2D<float4> t3 : register(t3);
//
// Texture2D<float4> t2 : register(t2);
//
// Texture2D<float4> t1 : register(t1);
//
// Texture2D<float4> t0 : register(t0);
//
// SamplerState s4_s : register(s4);
//
// SamplerState s3_s : register(s3);
//
// SamplerState s2_s : register(s2);
//
// SamplerState s1_s : register(s1);
//
// SamplerState s0_s : register(s0);
//
// cbuffer cb3 : register(b3)
// {
//   float4 cb3[60];
// }
//
// cbuffer cb2 : register(b2)
// {
//   float4 cb2[45];
// }
//
// cbuffer cb1 : register(b1)
// {
//   float4 cb1[52];
// }
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[5];
// }
//
//
//
//
// // 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_texture3d (float,float,float,float) u0
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 8, 8, 1
//   r0.x = t5.Load(vThreadID.xyz).x;
//   r0.x = max(cb0[4].z, r0.x);
//   r0.y = r0.x * cb1[51].z + -cb1[51].w;
//   r0.y = 1 / r0.y;
//   r0.zw = (uint2)vThreadID.xy;
//   r0.zw = float2(0.5,0.5) + r0.zw;
//   r1.xy = cb0[0].xy * r0.zw;
//   r0.zw = r1.xy * float2(2,-2) + float2(-1,1);
//   r2.xyzw = cb1[33].xyzw * r0.wwww;
//   r2.xyzw = r0.zzzz * cb1[32].xyzw + r2.xyzw;
//   r2.xyzw = r0.xxxx * cb1[34].xyzw + r2.xyzw;
//   r2.xyzw = cb1[35].xyzw + r2.xyzw;
//   r0.xzw = r2.xyz / r2.www;
//   r1.w = dot(r0.xzw, r0.xzw);
//   r1.w = sqrt(r1.w);
//   r0.xzw = r0.xzw / r1.www;
//   r0.y = r1.w / r0.y;
//   r0.y = cb0[4].y * r0.y;
//   bitmask.x = ((~(-1 << 1)) << 2) & 0xffffffff;  r2.x = (((uint)vThreadID.y << 2) & bitmask.x) | ((uint)0 & ~bitmask.x);
//   bitmask.x = ((~(-1 << 1)) << 1) & 0xffffffff;  r2.x = (((uint)vThreadID.x << 1) & bitmask.x) | ((uint)r2.x & ~bitmask.x);
//   bitmask.y = ((~(-1 << 2)) << 3) & 0xffffffff;  r2.y = (((uint)cb3[12].y << 3) & bitmask.y) | ((uint)0 & ~bitmask.y);
//   r2.x = (int)r2.x + (int)r2.y;
//   r2.x = 0x8739d26c >> (uint)r2.x;
//   r2.x = (int)r2.x & 3;
//   r2.x = (uint)r2.x;
//   r2.y = saturate(r1.w / r0.y);
//   r2.z = dot(r0.xzw, cb2[32].xyz);
//   r2.xw = float2(0.5,1.25) + r2.xz;
//   r2.w = log2(r2.w);
//   r2.w = -1.5 * r2.w;
//   r2.w = exp2(r2.w);
//   r2.w = 0.238732412 * r2.w;
//   r3.xyz = cb0[2].xyz + -cb0[1].xyz;
//   r3.xyz = -r2.zzz * r3.xyz + cb0[1].xyz;
//   r3.xyz = r3.xyz * r2.www;
//   r3.xyz = cb2[33].xyz * r3.xyz;
//   r3.xyz = cb2[43].yyy * r3.xyz;
//   r0.y = min(r1.w, r0.y);
//   r4.xyz = r0.xzw * r0.yyy;
//   r5.xyz = cb2[29].xyz * r4.yyy;
//   r5.xyz = r4.xxx * cb2[28].xyz + r5.xyz;
//   r5.xyz = r4.zzz * cb2[30].xyz + r5.xyz;
//   r1.w = 1 / cb2[19].w;
//   r6.xyz = cb2[21].xyz * r1.www + cb2[22].xyz;
//   r6.xyz = r6.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
//   r7.x = dot(r4.xyz, cb2[18].xyz);
//   r7.y = dot(r4.xyz, cb2[19].xyz);
//   r7.z = dot(r4.xyz, cb2[20].xyz);
//   r4.xyz = cb2[21].xyz + r7.xyz;
//   r4.xyz = r4.xyz * r1.www + cb2[22].xyz;
//   r4.xyz = r4.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
//   r4.xyz = r4.xyz + -r6.xyz;
//   r1.w = -5000 + r0.y;
//   r7.xyz = float3(5000,5000,5000) * r0.xzw;
//   r2.z = dot(r7.xyz, r7.xyz);
//   r2.z = sqrt(r2.z);
//   r1.w = r2.z + r1.w;
//   r1.w = r1.w * 9.99999975e-006 + -cb2[44].x;
//   r2.w = cb3[47].x * r1.w;
//   r3.w = cmp(0 >= r2.w);
//   if (r3.w != 0) {
//     r8.xyz = float3(0,0,0);
//     r4.w = 1;
//   }
//   if (r3.w == 0) {
//     r3.w = r7.z / r2.z;
//     r2.z = 9.99999975e-006 * r2.z;
//     r5.w = r0.w * 0.0500000007 + cb3[52].z;
//     r5.w = -cb3[46].z + r5.w;
//     r6.w = cb3[47].y * r5.w;
//     r5.w = r5.w * cb3[47].y + -cb3[52].x;
//     r5.w = cmp(9.99999975e-006 < abs(r5.w));
//     r7.z = 9.99999975e-006 + cb3[52].x;
//     r5.w = r5.w ? r6.w : r7.z;
//     r6.w = exp2(-r5.w);
//     r5.w = -cb3[52].x + r5.w;
//     r6.w = cb3[52].y + -r6.w;
//     r5.w = abs(r6.w) / abs(r5.w);
//     r2.w = r2.w * r2.w;
//     r1.w = r1.w * cb3[47].x + -r2.w;
//     r1.w = cb3[51].w * r1.w + r2.w;
//     r2.w = -r1.w * r5.w;
//     r5.w = exp2(r2.w);
//     r1.w = cb3[48].x * -r1.w;
//     r1.w = exp2(r1.w);
//     r6.w = min(abs(r7.x), abs(r7.y));
//     r7.z = max(abs(r7.x), abs(r7.y));
//     r7.z = 1 / r7.z;
//     r6.w = r7.z * r6.w;
//     r7.z = r6.w * r6.w;
//     r7.w = r7.z * 0.0208350997 + -0.0851330012;
//     r7.w = r7.z * r7.w + 0.180141002;
//     r7.w = r7.z * r7.w + -0.330299497;
//     r7.z = r7.z * r7.w + 0.999866009;
//     r7.w = r7.z * r6.w;
//     r8.w = cmp(abs(r7.y) < abs(r7.x));
//     r7.w = r7.w * -2 + 1.57079637;
//     r7.w = r8.w ? r7.w : 0;
//     r6.w = r6.w * r7.z + r7.w;
//     r7.z = cmp(-r7.y < r7.y);
//     r7.z = r7.z ? -3.141593 : 0;
//     r6.w = r7.z + r6.w;
//     r7.z = min(r7.x, -r7.y);
//     r7.x = max(r7.x, -r7.y);
//     r7.y = cmp(r7.z < -r7.z);
//     r7.x = cmp(r7.x >= -r7.x);
//     r7.x = r7.x ? r7.y : 0;
//     r6.w = r7.x ? -r6.w : r6.w;
//     r7.x = r6.w * -0.159154937 + 0.5;
//     r6.w = 1 + -abs(r3.w);
//     r6.w = sqrt(r6.w);
//     r7.z = abs(r3.w) * -0.0187292993 + 0.0742610022;
//     r7.z = r7.z * abs(r3.w) + -0.212114394;
//     r7.z = r7.z * abs(r3.w) + 1.57072878;
//     r7.w = r7.z * r6.w;
//     r7.w = r7.w * -2 + 3.14159274;
//     r3.w = cmp(-r3.w < r3.w);
//     r3.w = r3.w ? r7.w : 0;
//     r3.w = r7.z * r6.w + r3.w;
//     r3.w = 1.57079637 + -r3.w;
//     r7.y = r3.w * 0.318309873 + 0.5;
//     r2.z = -cb3[52].w * r2.z;
//     r2.z = exp2(r2.z);
//     r2.z = r2.z * cb3[59].y + cb3[59].x;
//     r7.xyz = t1.SampleLevel(s4_s, r7.xy, r2.z).xyz;
//     r2.z = 1 + -r1.w;
//     r2.z = r2.z * r5.w;
//     r9.x = cb3[31].w * r2.z;
//     r9.y = cb3[32].w * r2.z;
//     r9.z = cb3[33].w * r2.z;
//     r7.xyz = r7.xyz * cb2[43].www + r9.xyz;
//     r4.w = r5.w * r1.w;
//     r9.xyz = cb3[51].xyz * r2.www;
//     r9.xyz = exp2(r9.xyz);
//     r8.xyz = r9.xyz * r7.xyz;
//   }
//   r1.w = 100000 * cb2[44].x;
//   r1.w = saturate(r1.w / r0.y);
//   r2.z = 32 * r1.w;
//   r2.w = cmp(r1.w < 1);
//   r1.w = 1 + -r1.w;
//   r1.w = 1 / r1.w;
//   r1.w = r2.w ? r1.w : 0;
//   r2.w = log2(r4.w);
//   r1.w = r2.w * r1.w;
//   r1.w = 0.03125 * r1.w;
//   r1.w = exp2(r1.w);
//   r1.w = 1 + -r1.w;
//   r2.w = 0.5 * cb2[43].y;
//   r7.xyz = r8.xyz * r2.www;
//   r2.w = -0.00390625 * r2.x;
//   r3.w = 1 + -cb3[59].z;
//   r4.w = cb2[34].z * cb2[34].z;
//   r8.xy = vThreadID.xy;
//   r9.w = 1;
//   r10.w = 0;
//   r11.w = 2;
//   r12.w = 1;
//   r13.xyzw = float4(0,0,0,0);
//   r5.w = r2.w;
//   r6.w = 0;
//   r7.w = 0;
//   while (true) {
//     r9.x = cmp((int)r7.w >= 32);
//     if (r9.x != 0) break;
//     r9.x = r2.x * 0.00390625 + r5.w;
//     r9.x = r9.x * r0.y;
//     r14.xy = r9.xx * r0.xz;
//     r14.xy = r14.xy * cb2[0].xy + -cb2[1].xy;
//     r14.xyzw = t6.SampleLevel(s0_s, r14.xy, 0).xyzw;
//     r11.x = -r0.w * r9.x + cb2[1].z;
//     r11.x = r14.z * cb2[0].z + r11.x;
//     r11.x = saturate(0.0009765625 * r11.x);
//     r14.z = r14.w * r14.w;
//     r11.x = r11.x * r14.y + r14.z;
//     r11.x = 0.0009765625 * r11.x;
//     r9.x = r9.x * cb3[59].w + 1;
//     r9.x = cb3[59].z / r9.x;
//     r9.x = saturate(r9.x + r3.w);
//     r15.xyzw = r13.xyzw;
//     r14.y = r5.w;
//     r14.z = r6.w;
//     r14.w = 0;
//     r16.x = 0;
//     while (true) {
//       r16.y = cmp((int)r16.x >= 2);
//       if (r16.y != 0) break;
//       r14.y = 0.015625 + r14.y;
//       r16.y = r14.y * r0.y;
//       r10.xyz = r5.zxy * r14.yyy + cb2[31].zxy;
//       r12.xyz = r4.xyz * r14.yyy + r6.xyz;
//       r16.zw = r16.yy * r0.xz;
//       r16.zw = r16.zw * cb2[0].xy + -cb2[1].xy;
//       r17.xyzw = t0.SampleLevel(s0_s, r16.zw, 0).xyzw;
//       r16.zw = r17.yx * cb2[0].zz + cb2[1].zz;
//       r16.zw = r0.ww * r16.yy + -r16.zw;
//       r16.w = saturate(r16.w * cb2[0].w + 1);
//       r17.x = saturate(abs(r16.z) * 0.000156249997 + r17.w);
//       r16.w = r16.w * r17.z;
//       r16.z = r16.z * cb0[3].z + cb0[3].y;
//       r16.z = exp2(r16.z);
//       r16.z = min(1, r16.z);
//       r17.y = -r2.y * r14.y + 1;
//       r1.z = -r17.y * abs(r17.y) + 1;
//       r17.yzw = t7.SampleLevel(s0_s, r1.xyz, 0).xyz;
//       r18.xyzw = t8.SampleLevel(s1_s, r1.xyz, 0).xyzw;
//       r18.xyzw = r18.xyzw * float4(2.00787401,2.00787401,2.00787401,2.00787401) + float4(-1,-1,-1,-1);
//       r1.z = cmp(r18.w < 0);
//       r19.x = dot(r18.xyz, r0.xzw);
//       r19.x = 1 + r19.x;
//       r19.x = r19.x * r19.x + -1;
//       r18.x = dot(r18.xyz, r18.xyz);
//       r18.x = min(1, r18.x);
//       r18.x = -r18.x * 0.5 + 1;
//       r18.xw = r18.xw * r18.xw;
//       r18.x = cb2[43].y * r18.x;
//       r17.yzw = r18.xxx * r17.yzw;
//       r18.xyz = cb0[2].xyz * r19.xxx + cb0[1].xyz;
//       r1.z = r1.z ? r16.w : 0;
//       r19.xy = saturate(r10.yz);
//       r19.xy = cmp(r10.yz == r19.xy);
//       r16.w = r19.y ? r19.x : 0;
//       r19.xy = -cb2[34].xy + r10.yz;
//       r19.zw = -cb2[35].xy + r10.yz;
//       r20.xy = max(abs(r19.xz), abs(r19.yw));
//       r9.yz = r19.xy * cb2[34].zz + float2(1.5,0.5);
//       r11.yz = r19.zw * r4.ww + float2(2.5,0.5);
//       r19.x = cmp(r20.x < cb2[34].w);
//       r19.xyz = r19.xxx ? r9.yzw : r10.yzw;
//       r9.y = cmp(r20.y < cb2[35].w);
//       r19.yzw = r9.yyy ? r11.yzw : r19.xyz;
//       r19.x = cb2[35].z * r19.y;
//       r9.yz = t3.SampleLevel(s2_s, r19.xz, 0).xy;
//       r9.z = cmp(r10.x < r9.z);
//       r9.y = cmp(r9.y < r10.x);
//       r9.z = r9.y ? r9.z : 0;
//       r10.y = cmp(0 < r1.z);
//       r9.z = r9.z ? r10.y : 0;
//       if (r9.z != 0) {
//         r9.z = cmp(r19.w == 0.000000);
//         r10.y = r9.z ? 1 : cb2[34].z;
//         r10.z = cmp(r19.w != 2.000000);
//         r9.z = (int)r9.z | (int)r10.z;
//         r9.z = r9.z ? 1 : cb2[34].z;
//         r9.z = r10.y * r9.z;
//         r10.y = 3 * r19.x;
//         r10.y = frac(r10.y);
//         r10.z = r9.z * r5.x;
//         r11.y = 0.046875 * r10.z;
//         r10.z = saturate(r10.z * 0.046875 + r10.y);
//         r10.y = r10.z + -r10.y;
//         r10.y = r10.y / r11.y;
//         r9.z = r10.y * r9.z;
//         r9.z = 0.00260416674 * r9.z;
//         r20.xy = r19.xz;
//         r20.z = r10.x;
//         r10.yz = float2(0,0);
//         while (true) {
//           r11.y = cmp((int)r10.z >= 6);
//           if (r11.y != 0) break;
//           r11.y = t2.SampleLevel(s1_s, r20.xy, 0).x;
//           r11.y = r11.y + -r20.z;
//           r11.y = saturate(128 * r11.y);
//           r10.y = r11.y + r10.y;
//           r20.xyz = r5.xyz * r9.zzz + r20.xyz;
//           r10.z = (int)r10.z + 1;
//         }
//         r10.x = r20.z;
//         r9.z = 0.166666672 * r10.y;
//       } else {
//         r9.z = r9.y ? 0 : 1;
//       }
//       r9.y = cmp(r10.x < 1);
//       r9.y = r9.y ? r16.w : 0;
//       r9.y = r9.y ? r9.z : 1;
//       r1.z = r9.y * r1.z;
//       r19.xyzw = t4.SampleLevel(s3_s, r12.xyw, 0).xyzw;
//       r9.yz = r19.xy + -r12.zz;
//       r9.yz = saturate(float2(256,16) * r9.yz);
//       r9.y = -r9.y * r19.z + 1;
//       r10.x = 1 + -r19.w;
//       r10.x = r10.x + -r9.y;
//       r9.y = r9.z * r10.x + r9.y;
//       r1.z = r9.y * r1.z;
//       r12.xyz = r3.xyz * r1.zzz;
//       r12.xyz = r17.yzw * r18.xyz + r12.xyz;
//       r1.z = 1 + -r17.x;
//       r1.z = cb0[3].w * r1.z;
//       r1.z = r16.z * cb0[3].x + r1.z;
//       r9.y = saturate(cb0[4].x * r16.y);
//       r1.z = r9.y * r1.z;
//       r14.w = r18.w * r9.x + r14.w;
//       r9.y = -r0.y * r14.y + r14.z;
//       r1.z = r1.z * r14.x + r11.x;
//       r1.z = r9.y * r1.z;
//       r1.z = exp2(r1.z);
//       r17.w = 1 + -r1.z;
//       r1.z = r17.w * r9.x;
//       r17.xyz = r12.xyz * r1.zzz;
//       r1.z = 1 + -r15.w;
//       r15.xyzw = r17.xyzw * r1.zzzz + r15.xyzw;
//       r16.x = (int)r16.x + 1;
//       r14.z = r16.y;
//     }
//     r5.w = r14.y;
//     r6.w = r14.z;
//     r1.z = saturate(r5.w * 32 + -r2.z);
//     r9.x = 1 + -r15.w;
//     r9.x = r9.x * r1.w;
//     r16.w = r9.x * r1.z;
//     r1.z = r16.w * r14.w;
//     r16.xyz = r7.xyz * r1.zzz;
//     r13.xyzw = r16.xyzw + r15.xyzw;
//     r8.zw = r7.ww;
//   // No code for instruction (needs manual fix):
//     store_uav_typed u0.xyzw, r8.xyzw, r13.xyzw
//     r7.w = (int)r7.w + 1;
//   }
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// F:\SteamLibrary\steamapps\common\Days Gone\BendGame\Binaries\Win64\ShaderFixes\d75c48c7dcc90030-cs_replace.txt(59,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
