//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.164 on Sun Nov  8 11:01:34 2026
//
//
// 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[291], immediateIndexed
dcl_constantbuffer CB1[34], dynamicIndexed
dcl_resource_structured t1, 16
dcl_resource_structured t2, 96
dcl_resource_structured t3, 56
dcl_uav_structured u0, 4
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.xyz
dcl_temps 15
dcl_tgsm_structured g0, 4, 512
dcl_tgsm_raw g1, 4
dcl_thread_group 64, 1, 1
iadd r0.xyzw, cb1[33].xyxy, l(63, 63, -1, -1)
ushr r0.xy, r0.xyxx, l(6, 6, 0, 0)
if_z vThreadIDInGroupFlattened.x
  store_raw g1.x, l(0), l(0)
endif
sync_g_t
ishl r1.xyzw, vThreadGroupID.xyzz, l(6, 6, 1, 2)
iadd r2.xy, r1.xyxx, l(64, 64, 0, 0)
umin r2.xy, r2.xyxx, cb1[33].xyxx
utof r2.zw, r1.xxxy
utof r3.xy, cb1[33].xyxx
div r2.zw, r2.zzzw, r3.xxxy
utof r3.zw, r2.xxxy
div r3.xy, r3.zwzz, r3.xyxx
mov r3.z, vThreadIDInGroupFlattened.x
loop
  ige r3.w, r3.z, cb1[33].z
  breakc_nz r3.w
  imad r3.w, r1.z, cb1[33].z, r3.z
  iadd r4.x, r3.w, cb1[33].z
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r4.yz, r3.w, l(0), t1.xxyx
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r4.xw, r4.x, l(0), t1.xxxy
  lt r4.xw, r2.zzzw, r4.xxxw
  and r3.w, r4.w, r4.x
  lt r4.xy, r4.yzyy, r3.xyxx
  and r4.x, r4.y, r4.x
  and r3.w, r3.w, r4.x
  mov r3.w, l(-1)
  if_nz r3.w
    imm_atomic_iadd r4.x, g1, l(0), l(1)
    ult r3.w, r4.x, l(511)
    if_nz r3.w
      store_structured g0.x, r4.x, l(0), r3.z
    endif
  endif
  iadd r3.z, r3.z, l(64)
endloop
sync_g_t
ld_raw r1.z, l(0), g1.xxxx
umin r1.z, r1.z, l(511)
imad r2.zw, vThreadGroupID.xxxy, l(0, 0, 64, 64), l(0, 0, 32, 32)
umin r0.zw, r0.zzzw, r2.zzzw
utof r0.zw, r0.zzzw
movc r2.zw, cb1[33].wwww, cb1[r1.w + 11].xxxy, cb1[r1.w + 10].xxxy
add r0.zw, r0.zzzw, -r2.zzzw
div r0.z, r0.z, cb1[r1.w + 8].x
div r0.w, r0.w, cb1[r1.w + 9].y
div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), cb1[r1.w + 8].x
div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb1[r1.w + 9].y
dp2 r3.x, r3.xyxx, r3.xyxx
sqrt r3.x, r3.x
mul r3.x, r3.x, l(32.000000)
iadd r3.y, cb1[33].z, l(-1)
movc r4.xy, cb1[33].wwww, l(0,0,0,0), r0.zwzz
movc r0.zw, cb1[33].wwww, -r0.zzzw, l(0,0,-0.000000,-0.000000)
mov r4.z, l(1.000000)
dp3 r3.z, r4.xyzx, r4.xyzx
mov r3.w, vThreadIDInGroupFlattened.x
loop
  ige r4.w, r3.w, r1.z
  breakc_nz r4.w
  ld_structured r4.w, r3.w, l(0), g0.xxxx
  umin r4.w, r3.y, r4.w
  imad r4.w, vThreadGroupID.z, cb1[33].z, r4.w
  ld_structured_indexable(structured_buffer, stride=56)(mixed,mixed,mixed,mixed) r5.xyz, r4.w, l(36), t3.xyzx
  ld_structured_indexable(structured_buffer, stride=56)(mixed,mixed,mixed,mixed) r4.w, r4.w, l(52), t3.xxxx
  add r5.xy, r0.zwzz, r5.xyxx
  mul r6.xy, r5.xyxx, -r5.zzzz
  dp2 r6.z, r5.xyxx, r5.xyxx
  dp3 r5.w, r6.xyzx, r6.xyzx
  sqrt r5.w, r5.w
  lt r6.x, l(0.000100), r5.w
  div r6.y, r6.z, r5.w
  movc r5.w, r6.x, r6.y, r5.w
  mad r5.w, r5.w, r4.w, r5.z
  movc r5.w, cb1[33].w, l(1.000000), r5.w
  mad r4.w, r5.w, r3.x, r4.w
  dp3 r5.w, r5.xyzx, r4.xyzx
  dp3 r5.x, r5.xyzx, r5.xyzx
  mad r4.w, -r4.w, r4.w, r5.x
  mul r5.x, r3.z, r4.w
  mad r5.x, r5.w, r5.w, -r5.x
  lt r4.w, r4.w, l(0.000000)
  lt r5.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xwxx
  and r5.x, r5.y, r5.x
  or r4.w, r4.w, r5.x
  mov r4.w, l(-1)
  if_z r4.w
    store_structured g0.x, r3.w, l(0), l(-1)
  endif
  iadd r3.w, r3.w, l(64)
endloop
sync_g_t
mov r3.x, cb1[33].z
mov r3.y, l(0)
loop
  ige r0.z, r3.y, r1.z
  breakc_nz r0.z
  ld_structured r0.z, r3.y, l(0), g0.xxxx
  iadd r4.xy, r3.xyxx, l(-1, 1, 0, 0)
  umin r0.w, r0.z, r4.x
  imad r0.w, vThreadGroupID.z, r3.x, r0.w
  ult r0.z, r0.z, r3.x
  if_nz r0.z
    ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r0.z, r0.w, l(12), t2.xxxx
    ine r0.z, r0.z, l(1)
  else
    mov r0.z, l(0)
  endif
  if_nz r0.z
    ld_structured_indexable(structured_buffer, stride=56)(mixed,mixed,mixed,mixed) r5.xyzw, r0.w, l(0), t3.xyzw
    ld_structured_indexable(structured_buffer, stride=56)(mixed,mixed,mixed,mixed) r6.xyzw, r0.w, l(16), t3.zxyw
    ld_structured_indexable(structured_buffer, stride=56)(mixed,mixed,mixed,mixed) r7.xyzw, r0.w, l(32), t3.xyzw
    ld_structured_indexable(structured_buffer, stride=56)(mixed,mixed,mixed,mixed) r0.z, r0.w, l(48), t3.xxxx
    mov r8.xy, r6.xwxx
    mov r8.z, r7.x
    mov r6.x, r5.w
    mov r0.w, vThreadIDInGroupFlattened.x
    loop
      ige r3.z, r0.w, l(48)
      breakc_nz r3.z
      ushr r3.z, r0.w, l(2)
      and r3.w, r0.w, l(-4)
      iadd r3.w, r0.w, -r3.w
      ishr r4.x, r3.z, l(2)
      ubfe r4.w, l(2), l(2), r0.w
      iadd r5.w, r4.w, l(-1)
      and r5.w, r5.w, l(2)
      ieq r5.w, r5.w, l(0)
      ishl r6.w, r4.w, l(1)
      ieq r7.x, r4.x, l(1)
      and r3.z, r3.z, l(2)
      iadd r3.z, r3.z, r4.w
      movc r3.z, r7.x, r3.z, r4.w
      movc r3.z, r4.x, r3.z, r6.w
      ishl r4.w, l(1), r4.x
      iadd r4.w, r3.z, r4.w
      not r6.w, r5.w
      movc r5.w, r7.x, l(0), r5.w
      movc r4.x, r4.x, r5.w, r6.w
      swapc r4.x, r7.x, r4.x, r4.w, r3.z
      and r9.xyz, r7.xxxx, l(1, 2, 4, 0)
      movc r9.xyw, r9.xyxz, l(1.000000,1.000000,0,1.000000), l(-1.000000,-1.000000,0,-1.000000)
      movc r3.z, r9.z, r0.z, l(1.000000)
      mul r9.xy, r3.zzzz, r9.xyxx
      mul r10.xyz, r6.xyzx, r9.yyyy
      mad r9.xyz, r9.xxxx, r5.xyzx, r10.xyzx
      mad r9.xyz, r9.wwww, -r8.xyzx, r9.xyzx
      add r9.xyz, r7.yzwy, r9.xyzx
      and r10.xyz, r4.xxxx, l(1, 2, 4, 0)
      movc r10.xyw, r10.xyxz, l(1.000000,1.000000,0,1.000000), l(-1.000000,-1.000000,0,-1.000000)
      movc r3.z, r10.z, r0.z, l(1.000000)
      mul r10.xy, r3.zzzz, r10.xyxx
      mul r11.xyz, r6.zxyz, r10.yyyy
      mad r10.xyz, r10.xxxx, r5.zxyz, r11.xyzx
      mad r10.xyz, r10.wwww, -r8.zxyz, r10.xyzx
      add r10.xyz, r7.wyzw, r10.xyzx
      add r10.xyz, -r9.zxyz, r10.xyzx
      ishr r3.z, r3.w, l(2)
      ishl r4.w, r3.z, l(1)
      and r4.w, r4.w, l(4)
      bfi r4.w, l(2), l(0), r3.w, r4.w
      and r11.xyz, r4.wwww, l(1, 2, 4, 0)
      movc r4.w, r11.x, r2.x, r1.x
      utof r4.w, r4.w
      movc r5.w, r11.y, r1.y, r2.y
      utof r5.w, r5.w
      movc r11.y, r11.z, cb0[290].y, cb0[290].x
      add r4.w, -r2.z, r4.w
      div r12.z, r4.w, cb1[r1.w + 8].x
      add r4.w, -r2.w, r5.w
      div r12.x, r4.w, cb1[r1.w + 9].y
      mul r12.yw, r11.yyyy, r12.xxxz
      movc r11.xz, cb1[33].wwww, r12.xxzx, r12.yywy
      movc r11.xyz, cb1[33].wwww, l(0,1.000000,0,0), r11.xyzx
      and r12.xy, r3.wwww, l(2, 1, 0, 0)
      movc r4.w, r12.x, l(-1.000000), l(1.000000)
      ubfe r3.w, l(1), l(1), r3.w
      ieq r3.w, r3.w, r12.y
      movc r12.xyz, r3.wwww, l(0,0,1.000000,0), l(1.000000,0,0,0)
      mul r12.xyz, r4.wwww, r12.xyzx
      movc r11.xyz, r3.zzzz, r12.xyzx, r11.xyzx
      mul r12.xyz, r10.xyzx, r11.xyzx
      mad r10.xyz, r10.zxyz, r11.yzxy, -r12.xyzx
      mov r11.xyz, l(0,0,1,0)
      loop
        ige r3.z, r11.z, l(8)
        breakc_nz r3.z
        iadd r3.z, r7.x, r11.z
        and r12.xyzw, r3.zzzz, l(7, 4, 1, 2)
        movc r13.xyz, r12.zwyz, l(1.000000,1.000000,1.000000,0), l(-1.000000,-1.000000,-1.000000,0)
        movc r3.z, r12.y, r0.z, l(1.000000)
        mul r3.zw, r3.zzzz, r13.xxxy
        mul r12.yzw, r6.xxyz, r3.wwww
        mad r12.yzw, r3.zzzz, r5.xxyz, r12.yyzw
        mad r12.yzw, r13.zzzz, -r8.xxyz, r12.yyzw
        add r12.yzw, r7.yyzw, r12.yyzw
        ieq r3.z, r4.x, r12.x
        add r12.xyz, -r9.xyzx, r12.yzwy
        dp3 r3.w, r10.xyzx, r12.xyzx
        movc r3.z, r3.z, l(0), r3.w
        lt r3.w, l(0.000000), r3.z
        iadd r11.zw, r11.zzzx, l(0, 0, 1, 1)
        lt r3.z, r3.z, l(0.000000)
        iadd r3.z, -r3.z, r11.y
        movc r11.x, r3.w, r11.w, r11.x
        movc r11.y, r3.w, r11.y, r3.z
      endloop
      ilt r3.zw, l(0, 0, 0, 0), r11.xxxy
      and r4.x, r3.w, r3.z
      movc r3.z, r3.z, l(1), r3.w
      movc r3.z, r4.x, l(0), r3.z
      mov r12.yz, l(0,0,0,0)
      mov r3.w, l(0)
      loop
        ige r4.x, r3.w, l(8)
        breakc_nz r4.x
        and r13.xyz, r3.wwww, l(1, 2, 4, 0)
        movc r4.xw, r13.xxxy, r2.xxxy, r1.xxxy
        utof r4.xw, r4.xxxw
        movc r13.z, r13.z, cb0[290].y, cb0[290].x
        add r4.xw, -r2.zzzw, r4.xxxw
        div r14.x, r4.x, cb1[r1.w + 8].x
        div r14.y, r4.w, cb1[r1.w + 9].y
        mul r4.xw, r13.zzzz, r14.xxxy
        movc r13.xy, cb1[33].wwww, r14.xyxx, r4.xwxx
        add r13.xyz, -r9.xyzx, r13.xyzx
        dp3 r4.x, r10.xyzx, r13.xyzx
        lt r4.w, l(0.000000), r4.x
        iadd r12.x, r12.z, l(1)
        lt r4.x, r4.x, l(0.000000)
        iadd r12.w, -r4.x, r12.y
        movc r12.yz, r4.wwww, r12.yyxy, r12.wwzw
        iadd r3.w, r3.w, l(1)
      endloop
      ilt r4.xw, l(0, 0, 0, 0), r12.zzzy
      and r3.w, r4.w, r4.x
      movc r4.x, r4.x, l(1), r4.w
      movc r3.w, r3.w, l(0), r4.x
      imul null, r3.z, r3.w, r3.z
      ilt r3.z, r3.z, l(0)
      mov r3.z, l(0)
      if_nz r3.z
        store_structured g0.x, r3.y, l(0), l(-1)
      endif
      iadd r0.w, r0.w, l(64)
    endloop
  endif
  mov r4.z, r3.x
  mov r3.xy, r4.zyzz
endloop
sync_g_t
firstbit_hi r0.z, r1.z
iadd r0.z, -r0.z, l(31)
ishl r0.z, l(1), r0.z
movc r0.z, r1.z, r0.z, l(0)
ine r0.w, r1.z, r0.z
and r0.w, r0.w, l(1)
ishl r0.w, r0.z, r0.w
umax r0.z, r0.w, r0.z
umin r0.z, r0.z, l(512)
iadd r0.w, r1.z, vThreadIDInGroupFlattened.x
mov r1.x, r0.w
loop
  ige r1.y, r1.x, r0.z
  breakc_nz r1.y
  store_structured g0.x, r1.x, l(0), l(-1)
  iadd r1.x, r1.x, l(64)
endloop
sync_g_t
mov r0.w, l(2)
loop
  ilt r1.x, r0.z, r0.w
  breakc_nz r1.x
  ishr r1.x, r0.w, l(1)
  mov r1.y, r1.x
  loop
    ige r1.w, l(0), r1.y
    breakc_nz r1.w
    mov r1.w, vThreadIDInGroupFlattened.x
    loop
      ige r2.x, r1.w, r0.z
      breakc_nz r2.x
      xor r2.x, r1.y, r1.w
      ilt r2.y, r1.w, r2.x
      if_nz r2.y
        ld_structured r2.y, r1.w, l(0), g0.xxxx
        ld_structured r2.z, r2.x, l(0), g0.xxxx
        and r2.w, r0.w, r1.w
        movc r2.w, r2.w, l(1), l(0)
        ult r3.x, r2.z, r2.y
        and r3.x, r3.x, l(1)
        xor r2.w, r2.w, r3.x
        ine r2.w, r2.w, l(0)
        ine r3.x, r2.z, r2.y
        and r2.w, r2.w, r3.x
        if_nz r2.w
          store_structured g0.x, r1.w, l(0), r2.z
          store_structured g0.x, r2.x, l(0), r2.y
        endif
      endif
      iadd r1.w, r1.w, l(64)
    endloop
    sync_g_t
    ishr r1.y, r1.y, l(1)
  endloop
  ishl r0.w, r0.w, l(1)
endloop
if_z vThreadIDInGroupFlattened.x
  store_raw g1.x, l(0), l(0)
endif
sync_g_t
mov r0.z, cb1[33].z
mov r0.w, vThreadIDInGroupFlattened.x
loop
  ige r1.x, r0.w, r1.z
  breakc_nz r1.x
  ld_structured r1.x, r0.w, l(0), g0.xxxx
  ult r1.x, r1.x, r0.z
  if_nz r1.x
    atomic_iadd g1, l(0), l(1)
  endif
  iadd r0.w, r0.w, l(64)
endloop
sync_g_t
ld_raw r0.z, l(0), g1.xxxx
imul null, r0.w, r0.x, vThreadGroupID.z
imad r0.x, vThreadGroupID.y, r0.x, vThreadGroupID.x
imad r0.x, r0.w, r0.y, r0.x
iadd r0.y, r0.z, l(1)
ishl r0.x, r0.x, l(9)
mov r0.w, vThreadIDInGroupFlattened.x
loop
  ige r1.x, r0.w, r0.y
  breakc_nz r1.x
  iadd r1.x, r0.w, r0.x
  iadd r1.yz, r0.wwww, l(0, -1, 64, 0)
  imax r1.y, r1.y, l(0)
  ld_structured r1.y, r1.y, l(0), g0.xxxx
  movc r1.y, r0.w, r1.y, r0.z
  store_structured u0.x, r1.x, l(0), r1.y
  mov r0.w, r1.z
endloop
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.164 on Sun Nov  8 11:01:34 2026
// groupshared struct { float val[1]; } g0[512];
// struct u0_t {
//   float val[1];
// };
// RWStructuredBuffer<u0_t> u0 : register(u0);
//
// struct t3_t {
//   float val[14];
// };
// StructuredBuffer<t3_t> t3 : register(t3);
//
// struct t2_t {
//   float val[24];
// };
// StructuredBuffer<t2_t> t2 : register(t2);
//
// struct t1_t {
//   float val[4];
// };
// StructuredBuffer<t1_t> t1 : register(t1);
//
// cbuffer cb1 : register(b1)
// {
//   float4 cb1[34];
// }
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[291];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_tgsm_raw g1, 4
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 64, 1, 1
//   r0.xyzw = asint(cb1[33].xyxy) + int4(63,63,-1,-1);
//   r0.xy = (uint2)r0.xy >> int2(6,6);
//   if (vThreadIDInGroupFlattened.x == 0) {
//   // No code for instruction (needs manual fix):
//     store_raw g1.x, l(0), l(0)
//   }
//   GroupMemoryBarrierWithGroupSync();
//   r1.xyzw = (uint4)vThreadGroupID.xyzz << int4(6,6,1,2);
//   r2.xy = (int2)r1.xy + int2(64,64);
//   r2.xy = min(asuint(cb1[33].xy), (uint2)r2.xy);
//   r2.zw = (uint2)r1.xy;
//   r3.xy = asuint(cb1[33].xy);
//   r2.zw = r2.zw / r3.xy;
//   r3.zw = (uint2)r2.xy;
//   r3.xy = r3.zw / r3.xy;
//   r3.z = vThreadIDInGroupFlattened.x;
//   while (true) {
//     r3.w = cmp((int)r3.z >= asint(cb1[33].z));
//     if (r3.w != 0) break;
//     r3.w = mad((int)r1.z, asint(cb1[33].z), (int)r3.z);
//     r4.x = (int)r3.w + asint(cb1[33].z);
//     r4.y = t1[r3.w].val[0/4];
//     r4.z = t1[r3.w].val[0/4+1];
//     r4.x = t1[r4.x].val[0/4];
//     r4.w = t1[r4.x].val[0/4+1];
//     r4.xw = cmp(r2.zw < r4.xw);
//     r3.w = r4.w ? r4.x : 0;
//     r4.xy = cmp(r4.yz < r3.xy);
//     r4.x = r4.y ? r4.x : 0;
//     r3.w = r4.x ? r3.w : 0;
//     if (r3.w != 0) {
//       // Needs manual fix for instruction:
//         imm_atomic_iadd r4.x, g1, l(0), l(1)
//       InterlockedAdd(dest, imm_value, orig_value);
//       r3.w = cmp((uint)r4.x < 511);
//       if (r3.w != 0) {
//         g0[r4.x].val[0/4] = r3.z;
//       }
//     }
//     r3.z = (int)r3.z + 64;
//   }
//   GroupMemoryBarrierWithGroupSync();
// // No code for instruction (needs manual fix):
// ld_raw r1.z, l(0), g1.xxxx
//   r1.z = min(511, (uint)r1.z);
//   r2.zw = mad((int2)vThreadGroupID.xy, int2(64,64), int2(32,32));
//   r0.zw = min((uint2)r2.zw, (uint2)r0.zw);
//   r0.zw = (uint2)r0.zw;
//   r2.zw = cb1[33].ww ? cb1[r1.w+11].xy : cb1[r1.w+10].xy;
//   r0.zw = -r2.zw + r0.zw;
//   r0.z = r0.z / cb1[r1.w+8].x;
//   r0.w = r0.w / cb1[r1.w+9].y;
//   r3.x = 1 / cb1[r1.w+8].x;
//   r3.y = 1 / cb1[r1.w+9].y;
//   r3.x = dot(r3.xy, r3.xy);
//   r3.x = sqrt(r3.x);
//   r3.x = 32 * r3.x;
//   r3.y = asint(cb1[33].z) + -1;
//   r4.xy = cb1[33].ww ? float2(0,0) : r0.zw;
//   r0.zw = cb1[33].ww ? -r0.zw : float2(-0,-0);
//   r4.z = 1;
//   r3.z = dot(r4.xyz, r4.xyz);
//   r3.w = vThreadIDInGroupFlattened.x;
//   while (true) {
//     r4.w = cmp((int)r3.w >= (int)r1.z);
//     if (r4.w != 0) break;
//     r4.w = g0[r3.w].val[0/4];
//     r4.w = min((uint)r4.w, (uint)r3.y);
//     r4.w = mad((int)vThreadGroupID.z, asint(cb1[33].z), (int)r4.w);
//     r5.x = t3[r4.w].val[36/4];
//     r5.y = t3[r4.w].val[36/4+1];
//     r5.z = t3[r4.w].val[36/4+2];
//     r4.w = t3[r4.w].val[52/4];
//     r5.xy = r5.xy + r0.zw;
//     r6.xy = -r5.zz * r5.xy;
//     r6.z = dot(r5.xy, r5.xy);
//     r5.w = dot(r6.xyz, r6.xyz);
//     r5.w = sqrt(r5.w);
//     r6.x = cmp(9.99999975e-05 < r5.w);
//     r6.y = r6.z / r5.w;
//     r5.w = r6.x ? r6.y : r5.w;
//     r5.w = r5.w * r4.w + r5.z;
//     r5.w = cb1[33].w ? 1 : r5.w;
//     r4.w = r5.w * r3.x + r4.w;
//     r5.w = dot(r5.xyz, r4.xyz);
//     r5.x = dot(r5.xyz, r5.xyz);
//     r4.w = -r4.w * r4.w + r5.x;
//     r5.x = r4.w * r3.z;
//     r5.x = r5.w * r5.w + -r5.x;
//     r4.w = cmp(r4.w < 0);
//     r5.xy = cmp(float2(0,0) < r5.xw);
//     r5.x = r5.y ? r5.x : 0;
//     r4.w = (int)r4.w | (int)r5.x;
//     if (r4.w == 0) {
//       g0[r3.w].val[0/4] = -1;
//     }
//     r3.w = (int)r3.w + 64;
//   }
//   GroupMemoryBarrierWithGroupSync();
//   r3.x = cb1[33].z;
//   r3.y = 0;
//   while (true) {
//     r0.z = cmp((int)r3.y >= (int)r1.z);
//     if (r0.z != 0) break;
//     r0.z = g0[r3.y].val[0/4];
//     r4.xy = (int2)r3.xy + int2(-1,1);
//     r0.w = min((uint)r4.x, (uint)r0.z);
//     r0.w = mad((int)vThreadGroupID.z, (int)r3.x, (int)r0.w);
//     r0.z = cmp((uint)r0.z < (uint)r3.x);
//     if (r0.z != 0) {
//       r0.z = t2[r0.w].val[12/4];
//       r0.z = cmp((int)r0.z != 1);
//     } else {
//       r0.z = 0;
//     }
//     if (r0.z != 0) {
//       r5.x = t3[r0.w].val[0/4];
//       r5.y = t3[r0.w].val[0/4+1];
//       r5.z = t3[r0.w].val[0/4+2];
//       r5.w = t3[r0.w].val[0/4+3];
//       r6.x = t3[r0.w].val[16/4+2];
//       r6.y = t3[r0.w].val[16/4];
//       r6.z = t3[r0.w].val[16/4+1];
//       r6.w = t3[r0.w].val[16/4+3];
//       r7.x = t3[r0.w].val[32/4];
//       r7.y = t3[r0.w].val[32/4+1];
//       r7.z = t3[r0.w].val[32/4+2];
//       r7.w = t3[r0.w].val[32/4+3];
//       r0.z = t3[r0.w].val[48/4];
//       r8.xy = r6.xw;
//       r8.z = r7.x;
//       r6.x = r5.w;
//       r0.w = vThreadIDInGroupFlattened.x;
//       while (true) {
//         r3.z = cmp((int)r0.w >= 48);
//         if (r3.z != 0) break;
//         r3.z = (uint)r0.w >> 2;
//         r3.w = (int)r0.w & -4;
//         r3.w = (int)r0.w + (int)-r3.w;
//         r4.x = (uint)r3.z >> 2;
//         if (2 == 0) r4.w = 0; else if (2+2 < 32) {         r4.w = (uint)r0.w << (32-(2 + 2)); r4.w = (uint)r4.w >> (32-2);        } else r4.w = (uint)r0.w >> 2;
//         r5.w = (int)r4.w + -1;
//         r5.w = (int)r5.w & 2;
//         r5.w = cmp((int)r5.w == 0);
//         r6.w = (uint)r4.w << 1;
//         r7.x = cmp((int)r4.x == 1);
//         r3.z = (int)r3.z & 2;
//         r3.z = (int)r3.z + (int)r4.w;
//         r3.z = r7.x ? r3.z : r4.w;
//         r3.z = r4.x ? r3.z : r6.w;
//         r4.w = 1 << (int)r4.x;
//         r4.w = (int)r3.z + (int)r4.w;
//         r6.w = ~(int)r5.w;
//         r5.w = r7.x ? 0 : r5.w;
//         r4.x = r4.x ? r5.w : r6.w;
//         r4.x = (int)r4.x ? r3.z : r4.w; r7.x = (int)r4.x ? r4.w : r3.z;
//         r9.xyz = (int3)r7.xxx & int3(1,2,4);
//         r9.xyw = r9.xyz ? float3(1,1,1) : float3(-1,-1,-1);
//         r3.z = r9.z ? r0.z : 1;
//         r9.xy = r9.xy * r3.zz;
//         r10.xyz = r9.yyy * r6.xyz;
//         r9.xyz = r9.xxx * r5.xyz + r10.xyz;
//         r9.xyz = r9.www * -r8.xyz + r9.xyz;
//         r9.xyz = r9.xyz + r7.yzw;
//         r10.xyz = (int3)r4.xxx & int3(1,2,4);
//         r10.xyw = r10.xyz ? float3(1,1,1) : float3(-1,-1,-1);
//         r3.z = r10.z ? r0.z : 1;
//         r10.xy = r10.xy * r3.zz;
//         r11.xyz = r10.yyy * r6.zxy;
//         r10.xyz = r10.xxx * r5.zxy + r11.xyz;
//         r10.xyz = r10.www * -r8.zxy + r10.xyz;
//         r10.xyz = r10.xyz + r7.wyz;
//         r10.xyz = r10.xyz + -r9.zxy;
//         r3.z = (uint)r3.w >> 2;
//         r4.w = (uint)r3.z << 1;
//         r4.w = (int)r4.w & 4;
//         bitmask.w = ((~(-1 << 2)) << 0) & 0xffffffff;  r4.w = (((uint)r3.w << 0) & bitmask.w) | ((uint)r4.w & ~bitmask.w);
//         r11.xyz = (int3)r4.www & int3(1,2,4);
//         r4.w = r11.x ? r2.x : r1.x;
//         r4.w = (uint)r4.w;
//         r5.w = r11.y ? r1.y : r2.y;
//         r5.w = (uint)r5.w;
//         r11.y = r11.z ? cb0[290].y : cb0[290].x;
//         r4.w = r4.w + -r2.z;
//         r12.z = r4.w / cb1[r1.w+8].x;
//         r4.w = r5.w + -r2.w;
//         r12.x = r4.w / cb1[r1.w+9].y;
//         r12.yw = r12.xz * r11.yy;
//         r11.xz = cb1[33].ww ? r12.xz : r12.yw;
//         r11.xyz = cb1[33].www ? float3(0,1,0) : r11.xyz;
//         r12.xy = (int2)r3.ww & int2(2,1);
//         r4.w = r12.x ? -1 : 1;
//         if (1 == 0) r3.w = 0; else if (1+1 < 32) {         r3.w = (uint)r3.w << (32-(1 + 1)); r3.w = (uint)r3.w >> (32-1);        } else r3.w = (uint)r3.w >> 1;
//         r3.w = cmp((int)r3.w == (int)r12.y);
//         r12.xyz = r3.www ? float3(0,0,1) : float3(1,0,0);
//         r12.xyz = r12.xyz * r4.www;
//         r11.xyz = r3.zzz ? r12.xyz : r11.xyz;
//         r12.xyz = r11.xyz * r10.xyz;
//         r10.xyz = r10.zxy * r11.yzx + -r12.xyz;
//         r11.xyz = float3(0,0,1.40129846e-45);
//         while (true) {
//           r3.z = cmp((int)r11.z >= 8);
//           if (r3.z != 0) break;
//           r3.z = (int)r7.x + (int)r11.z;
//           r12.xyzw = (int4)r3.zzzz & int4(7,4,1,2);
//           r13.xyz = r12.zwy ? float3(1,1,1) : float3(-1,-1,-1);
//           r3.z = r12.y ? r0.z : 1;
//           r3.zw = r13.xy * r3.zz;
//           r12.yzw = r3.www * r6.xyz;
//           r12.yzw = r3.zzz * r5.xyz + r12.yzw;
//           r12.yzw = r13.zzz * -r8.xyz + r12.yzw;
//           r12.yzw = r12.yzw + r7.yzw;
//           r3.z = cmp((int)r4.x == (int)r12.x);
//           r12.xyz = r12.yzw + -r9.xyz;
//           r3.w = dot(r10.xyz, r12.xyz);
//           r3.z = r3.z ? 0 : r3.w;
//           r3.w = cmp(0 < r3.z);
//           r11.zw = (int2)r11.zx + int2(1,1);
//           r3.z = cmp(r3.z < 0);
//           r3.z = (int)-r3.z + (int)r11.y;
//           r11.x = r3.w ? r11.w : r11.x;
//           r11.y = r3.w ? r11.y : r3.z;
//         }
//         r3.zw = cmp(int2(0,0) < (int2)r11.xy);
//         r4.x = r3.w ? r3.z : 0;
//         r3.z = r3.z ? 1 : r3.w;
//         r3.z = r4.x ? 0 : r3.z;
//         r12.yz = float2(0,0);
//         r3.w = 0;
//         while (true) {
//           r4.x = cmp((int)r3.w >= 8);
//           if (r4.x != 0) break;
//           r13.xyz = (int3)r3.www & int3(1,2,4);
//           r4.xw = r13.xy ? r2.xy : r1.xy;
//           r4.xw = (uint2)r4.xw;
//           r13.z = r13.z ? cb0[290].y : cb0[290].x;
//           r4.xw = r4.xw + -r2.zw;
//           r14.x = r4.x / cb1[r1.w+8].x;
//           r14.y = r4.w / cb1[r1.w+9].y;
//           r4.xw = r14.xy * r13.zz;
//           r13.xy = cb1[33].ww ? r14.xy : r4.xw;
//           r13.xyz = r13.xyz + -r9.xyz;
//           r4.x = dot(r10.xyz, r13.xyz);
//           r4.w = cmp(0 < r4.x);
//           r12.x = (int)r12.z + 1;
//           r4.x = cmp(r4.x < 0);
//           r12.w = (int)-r4.x + (int)r12.y;
//           r12.yz = r4.ww ? r12.yx : r12.wz;
//           r3.w = (int)r3.w + 1;
//         }
//         r4.xw = cmp(int2(0,0) < (int2)r12.zy);
//         r3.w = r4.w ? r4.x : 0;
//         r4.x = r4.x ? 1 : r4.w;
//         r3.w = r3.w ? 0 : r4.x;
//         r3.z = (int)r3.w * (int)r3.z;
//         r3.z = cmp((int)r3.z < 0);
//         if (r3.z != 0) {
//           g0[r3.y].val[0/4] = -1;
//         }
//         r0.w = (int)r0.w + 64;
//       }
//     }
//     r4.z = r3.x;
//     r3.xy = r4.zy;
//   }
//   GroupMemoryBarrierWithGroupSync();
//   r0.z = firstbithigh((uint)r1.z);
//   r0.z = (int)-r0.z + 31;
//   r0.z = 1 << (int)r0.z;
//   r0.z = r1.z ? r0.z : 0;
//   r0.w = cmp((int)r1.z != (int)r0.z);
//   r0.w = r0.w ? 0.000000 : 0;
//   r0.w = (uint)r0.z << (int)r0.w;
//   r0.z = max((uint)r0.z, (uint)r0.w);
//   r0.z = min(512, (uint)r0.z);
//   r0.w = (int)r1.z + (int)vThreadIDInGroupFlattened.x;
//   r1.x = r0.w;
//   while (true) {
//     r1.y = cmp((int)r1.x >= (int)r0.z);
//     if (r1.y != 0) break;
//     g0[r1.x].val[0/4] = -1;
//     r1.x = (int)r1.x + 64;
//   }
//   GroupMemoryBarrierWithGroupSync();
//   r0.w = 2;
//   while (true) {
//     r1.x = cmp((int)r0.z < (int)r0.w);
//     if (r1.x != 0) break;
//     r1.x = (uint)r0.w >> 1;
//     r1.y = r1.x;
//     while (true) {
//       r1.w = cmp(0 >= (int)r1.y);
//       if (r1.w != 0) break;
//       r1.w = vThreadIDInGroupFlattened.x;
//       while (true) {
//         r2.x = cmp((int)r1.w >= (int)r0.z);
//         if (r2.x != 0) break;
//         r2.x = (int)r1.y ^ (int)r1.w;
//         r2.y = cmp((int)r1.w < (int)r2.x);
//         if (r2.y != 0) {
//           r2.y = g0[r1.w].val[0/4];
//           r2.z = g0[r2.x].val[0/4];
//           r2.w = (int)r0.w & (int)r1.w;
//           r2.w = r2.w ? 1 : 0;
//           r3.x = cmp((uint)r2.z < (uint)r2.y);
//           r3.x = r3.x ? 0.000000 : 0;
//           r2.w = (int)r2.w ^ (int)r3.x;
//           r2.w = cmp((int)r2.w != 0);
//           r3.x = cmp((int)r2.z != (int)r2.y);
//           r2.w = r2.w ? r3.x : 0;
//           if (r2.w != 0) {
//             g0[r1.w].val[0/4] = r2.z;
//             g0[r2.x].val[0/4] = r2.y;
//           }
//         }
//         r1.w = (int)r1.w + 64;
//       }
//       GroupMemoryBarrierWithGroupSync();
//       r1.y = (uint)r1.y >> 1;
//     }
//     r0.w = (uint)r0.w << 1;
//   }
//   if (vThreadIDInGroupFlattened.x == 0) {
//   // No code for instruction (needs manual fix):
//     store_raw g1.x, l(0), l(0)
//   }
//   GroupMemoryBarrierWithGroupSync();
//   r0.z = cb1[33].z;
//   r0.w = vThreadIDInGroupFlattened.x;
//   while (true) {
//     r1.x = cmp((int)r0.w >= (int)r1.z);
//     if (r1.x != 0) break;
//     r1.x = g0[r0.w].val[0/4];
//     r1.x = cmp((uint)r1.x < (uint)r0.z);
//     if (r1.x != 0) {
//       // Needs manual fix for instruction:
//         atomic_iadd g1, l(0), l(1)
//       InterlockedAdd(dest, value, orig_value);
//     }
//     r0.w = (int)r0.w + 64;
//   }
//   GroupMemoryBarrierWithGroupSync();
// // No code for instruction (needs manual fix):
// ld_raw r0.z, l(0), g1.xxxx
//   r0.w = (int)r0.x * (int)vThreadGroupID.z;
//   r0.x = mad((int)vThreadGroupID.y, (int)r0.x, (int)vThreadGroupID.x);
//   r0.x = mad((int)r0.w, (int)r0.y, (int)r0.x);
//   r0.y = (int)r0.z + 1;
//   r0.x = (uint)r0.x << 9;
//   r0.w = vThreadIDInGroupFlattened.x;
//   while (true) {
//     r1.x = cmp((int)r0.w >= (int)r0.y);
//     if (r1.x != 0) break;
//     r1.x = (int)r0.w + (int)r0.x;
//     r1.yz = (int2)r0.ww + int2(-1,64);
//     r1.y = max(0, (int)r1.y);
//     r1.y = g0[r1.y].val[0/4];
//     r1.y = r0.w ? r1.y : r0.z;
//     u0[r1.x].val[0/4] = r1.y;
//     r0.w = r1.z;
//   }
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// C:\Program Files (x86)\Steam\steamapps\common\FAR Changing Tides\ShaderFixes\1dc750301898d0be-cs_replace.txt(42,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
